Claude Code の auto モードの設定:分類器が止める操作と許可の足し方
結論
- 分類器は CLAUDE.md と、個人・組織・
--settingsのautoModeを読みます。プロジェクトの.claude/settings.jsonに書いたautoModeは読まれません。 environment・allow・soft_deny・hard_denyは、"$defaults"を入れずに書くと、その項目の標準ルールが置き換わります。- push や PR の前に確認を挟むなら
permissions.ask、実行させない操作はpermissions.denyを使います。
分類器はどこから設定を読むか
Claude Code(Anthropic 社が提供する、ターミナルで動く AI コーディングエージェント)の auto モードでは、分類器(操作の安全性を判定する仕組み)が操作を確認します。執筆時点(2026年10月)の公式ドキュメントによると、分類器は Claude 自身が読む CLAUDE.md と同じ内容を読みます。そのため「never force push」のような規約は、まず CLAUDE.md に書くのがよいとされています。
複数のプロジェクトに共通するルールには autoMode 設定ブロックを使います。読まれる場所は次の三つです。
- 個人:
~/.claude/settings.json(個人で信頼するインフラ向け) - 組織全体:Managed settings(全開発者に配る、信頼するインフラ向け)
--settingsフラグまたは Agent SDK:呼び出しごとの上書き向け
プロジェクトの .claude/settings.json と .claude/settings.local.json にある autoMode は読まれません。リポジトリ側から allow ルールを差し込めてしまうためです。書いている場合は ~/.claude/settings.json に移します。
各スコープの項目は合算されます。開発者は Managed settings の項目を消せませんが、追加した allow が組織の soft_deny を上書きできます。公式ドキュメントはこれを厳格な方針の境界ではないとしているため、必ず止めたい操作には Managed settings の permissions.deny を使います。
標準ルールを残して足す・置き換える
公式ドキュメントによると、分類器の標準ルールは次の三つの配列で置き換えられます。各配列は自然言語の文章で書きます。
autoMode.hard_deny:無条件の安全上の境界autoMode.soft_deny:ユーザーの意図で解除できる破壊的な操作autoMode.allow:soft_deny への例外
優先順位は hard_deny、soft_deny、allow の順で、最後に明示的なユーザーの意図が残りの soft_deny を上書きします。「リポジトリを整理して」という一般的な依頼は明示的な意図に数えられません。「このブランチを force push して」のように、操作を具体的に頼む必要があります。
標準ルールを残して自分のルールを足すには、配列に文字列 "$defaults" を入れます。次の例は、四つの配列すべてで標準ルールを残しています。
{
"autoMode": {
"environment": [
"$defaults",
"Source control: github.example.com/acme-corp and all repos under it"
],
"allow": [
"$defaults",
"Deploying to the staging namespace is allowed: staging is isolated from production and resets nightly",
"Writing to s3://acme-scratch/ is allowed: ephemeral bucket with a 7-day lifecycle policy"
],
"soft_deny": [
"$defaults",
"Never run database migrations outside the migrations CLI, even against dev databases",
"Never modify files under infra/terraform/prod/: production infrastructure changes go through the review workflow"
],
"hard_deny": [
"$defaults",
"Never send repository contents to third-party code-review APIs"
]
}
}
注意:"$defaults" を入れずに environment・allow・soft_deny・hard_deny のいずれかを設定すると、その項目の標準ルールが全部捨てられます。soft_deny なら force push、curl | bash、本番デプロイなどの組み込みルールが消えます。各項目は独立して評価されます。
標準を省くのは、リストを自分で全面的に管理するときだけにします。その場合は claude auto-mode defaults で組み込みルールを出力し、設定ファイルに写して見直します。/permissions の Auto mode タブでも編集できますが、v2.1.246 以降で、auto モードが使えるセッションに限り表示されます。
push と PR に人の確認を挟む
既定では、作業中のリポジトリの任意のブランチ(デフォルトブランチを含む)への push と PR 作成が許可されます。ただし production、release、gh-pages のように、名前がデプロイや公開先を示すデフォルト以外のブランチは対象外で、分類器が本番デプロイとしても判断します。force push やシークレットを含むコミットも止まったままです。
人の確認を入れたい場合は permissions.ask を使います。公式ドキュメントによると、内容を指定した ask ルールは分類器より前に評価され、auto モードでも必ず確認が出ます。
{
"permissions": {
"ask": [
"Bash(git push *)",
"Bash(gh pr create *)"
]
}
}
このルールは git push や gh pr create で始まるコマンドに一致します。git -C や git -c を挟んだ書き方の push は一致せず、確認されません。コマンド全文を見たい場合は PreToolUse hook を追加します。
- 確認を挟む:
permissions.ask。一致する操作を分類器が自動承認することはできません。 - 実行させない:
permissions.deny。分類器の前に止まり、上書きできません。 - 今回のセッションだけ:「レビューするまで push しないで」と会話で伝えます。コンテキスト圧縮で消えることがあるため、確実にしたいなら ask か deny を使います。
拒否されたときの確認と直し方
auto モードの分類器が拒否した操作は /permissions の Recently denied タブに記録され、r で再試行の印を付けられます(分類器の判定が得られずに拒否された操作は記録されません)。呼び出しが Ran 3 shell commands のように畳まれているときは、Ctrl+O で展開します。
Denied by auto mode classifier に [Production Deploy] のような理由が付く場合は、分類器が危険と判断しています。対処は次のとおりです。
- 作業中ずっと必要な宛先(パッケージレジストリ、社内ドメイン、リポジトリのホスト):
autoMode.environmentに追加 - 審査なしで実行したいコマンド:
allowルールを追加 - 一度だけ意図した操作:次のメッセージで意図を伝えて再試行させる
同じ宛先で繰り返し拒否されるなら、通常は分類器の文脈が足りていません。/auto-mode-setup で項目の下書きを作らせ、claude auto-mode config で反映を確認します。Not run · auto mode's check had no usable answer のように分類器の判定自体が無い場合は、公式ドキュメントのエラーの項目を確認してください。
分類器リクエストの課金通知
公式ドキュメントによると、サーバー側のチェックが有効な環境では、分類器の確認はセッションのモデルリクエストの一部として無料で行われます。LLM ゲートウェイやプロキシが間に入るなどでチェックが届かないと通知が出て、Claude Code 自身の分類器リクエストがトークン使用量に数えられます。Pro、Max、Team プランでは通知は出ません。
管理者側の対処は、ゲートウェイがリクエストと応答を変更せず通すようにすることです。ゲートウェイでは使えないと分かっている場合は、起動前に次を設定します。直接の Anthropic API 接続では v2.1.281 以降が必要で、一時的な設定のため後で削除される可能性があります。
export CLAUDE_CODE_AUTO_MODE_SERVER=0
出典: Auto mode classifier request charges
よくある質問
プロジェクトの .claude/settings.json に autoMode を書けば、チーム全員に効きますか。
効きません。分類器はプロジェクト設定の autoMode を読みません。個人は ~/.claude/settings.json、組織全体は Managed settings に書きます。
"$defaults" を付け忘れるとどうなりますか。
その項目の標準ルールが全部置き換わります。soft_deny では force push や本番デプロイなどの組み込みルール、hard_deny では組み込みのデータ流出ルールが失われます。
課金通知で Enter を押すとどうなりますか。
保留中の操作と残りのセッションで、Claude Code 自身の分類器リクエストが使われ、トークン使用量に数えられます。通知がゲートウェイを名指ししていた場合、このマシンでは24時間再表示されません。Esc か Ctrl+C なら操作は実行されず、何も記憶されません。
関連する無料ツール
Claude Code 権限設定(settings.json)ジェネレーター: deny / ask / allow のルールを選ぶと、置き場所つきで settings.json を出力します。配る前の設定の下書きに使えます。
参考(執筆時点)
- Configure auto mode(公式ドキュメント)
- Auto mode classifier request charges(公式ドキュメント)
この記事は、上の出典の内容を中小DXラボが要約・再構成したものです。仕様は変わることがあります。社内で使う・配る前に、公式ドキュメントで最新の情報を確認してください。