Choose a permission mode
概要
Claude がファイル編集・シェルコマンド実行・ネットワークリクエストの前に確認を求める頻度を決めるモード。Shift+Tab で循環するほか、起動フラグや設定で指定する。
仕様
モード一覧
| モード | 確認なしで実行されるもの |
|---|---|
default | 読み取りのみ |
acceptEdits | 読み取り、ファイル編集、一般的なファイルシステムコマンド(mkdir / touch / mv / cp など) |
plan | 読み取り。auto mode が利用可能な場合は classifier が承認したコマンドも |
auto | すべて(バックグラウンドの安全チェック付き) |
dontAsk | 事前承認済みのツールのみ |
bypassPermissions | すべて |
- すべての操作をレビューするモードは CLI・
claude --help・VS Code / JetBrains 拡張・デスクトップアプリで Manual と表示される。設定値はdefaultで、hooks と SDK 統合はこちらを使う。CLI はmanualをエイリアスとして受け付ける(v2.1.200 以降) - protected paths への書き込みは、
bypassPermissionsモードと bypass permissions が利用可能な planning セッションを除き、決して自動承認されない - モードは基準を決めるだけで、permission rule を重ねて特定のツールを事前承認・ブロックできる。次の制御は
bypassPermissionsを含むすべてのモードで適用される- deny ルールと明示的な ask ルール(ただし他のツールが残っている限り
EndConversationはブロックできない) - connector ツールに対する組織の
ask設定 requiresUserInteractionマーカー
- deny ルールと明示的な ask ルール(ただし他のツールが残っている限り
- allow ルールは
bypassPermissionsでは効果が無い(すべて既に承認済みのため)
モードの切り替え
- セッション中(CLI):
Shift+Tabでdefault→acceptEdits→planを循環する。ステータスバーの表示は⏸ plan mode on/⏵⏵ accept edits on/⏵⏵ auto mode on/⏵⏵ don't ask on/⏵⏵ bypass permissions on。Manual は灰色の⏸ manual mode on - 既定の循環に含まれないモード
auto: アカウントが auto mode の要件を満たすと現れる。切り替え時に確認プロンプトは出ないbypassPermissions:--permission-mode bypassPermissions/--dangerously-skip-permissions/--allow-dangerously-skip-permissions/ settings のpermissions.defaultMode: "bypassPermissions"で起動した後に現れる。--allow-版はモードを有効にせず循環に追加するdontAsk: 循環には決して現れない。--permission-mode dontAskで設定する
- 有効化した任意モードは
planの後に入り、bypassPermissionsが先、autoが最後 - 起動時:
--permission-modeフラグ - 既定: settings の
permissions.defaultMode - VS Code: プロンプトボックス下部のモードインジケータをクリックする。既定は
claudeCode.initialPermissionMode。この設定はautoを受け付けないため、auto を既定にするには user settings のdefaultModeを使う。project / local settings のdefaultMode: "auto"は無視される。Bypass permissions は拡張設定の Allow dangerously skip permissions トグルが必要 - JetBrains: IDE のターミナルで Claude Code が動くため CLI と同じ
- Desktop: Code タブの送信ボタン隣のモードセレクタ。モードセレクタで選んだモードはフォルダごとに記憶され、そのフォルダでは
defaultModeより優先される。Plan は例外で現在のセッションのみに適用される - Web / mobile: プロンプトボックス隣のモードドロップダウン
- Claude Code on the web の cloud session: Accept edits / Plan / Auto。Accept edits が
defaultに対応する(cloud session はモードに関わらずファイル編集を事前承認するため)。Bypass permissions は利用不可 - Remote Control セッション: Manual / Accept edits / Plan。Auto と Bypass permissions はアプリから選べない。Bypass permissions はセッションが claude.ai に報告しないため、ターミナルから切り替えてもドロップダウンの表示は変わらない
- Remote Control ではホストが claude.ai アカウントでサインインしている必要がある(API キーは非対応)
- Claude Code on the web の cloud session: Accept edits / Plan / Auto。Accept edits が
acceptEdits
- 作業ディレクトリ内のファイル作成・編集をプロンプトなしで行う
- 加えて
mkdir/touch/rm/rmdir/mv/cp/sedの Bash コマンドを自動承認する。LANG=CやNO_COLOR=1のような安全な環境変数の前置き、timeout/nice/nohupのようなプロセスラッパー付きでも自動承認される - 自動承認は作業ディレクトリまたは
additionalDirectories内のパスに限る。範囲外のパス、protected paths への書き込み、組み込みの read-only 集合以外の Bash コマンドは引き続きプロンプトを出す - PowerShell ツールが有効な場合、範囲内パスに対する
Set-Content/Add-Content/Clear-Content/Remove-Itemと一般的なエイリアスも自動承認される。引用符を含む位置引数(例:Set-Content .\notes.txt "It's done")は範囲内でもプロンプトが出る。-Valueなどの名前付きパラメータで渡すと回避できる
plan
- Claude は調査して変更を提案するが、変更は行わない。ファイルを読み、探索のためのシェルコマンドを実行し、計画を書く
- bypass permissions が利用可能なセッションを除き、計画を承認するまで編集はブロックされる
- auto mode が利用可能で
useAutoModeDuringPlan設定が有効(既定で有効)なら、計画中のシェルコマンドは classifier がレビューする。承認されたコマンドは実行され、拒否されたものはブロックされる。そうでない場合、組み込みの read-only 集合以外のコマンドは承認プロンプトを出す(sandbox の auto-allow モードが有効な場合も同様) - 入り方:
Shift+Tab、1 回のプロンプトの先頭に/plan、またはclaude --permission-mode plan。計画を承認せず抜けるにはもう一度Shift+Tab
計画提示時の選択肢:
-
Yes, and use auto mode: 承認して auto mode で開始する。auto mode が使えない場合は Yes, auto-accept edits と表示される。bypass permissions 有効で開始したセッションでは Yes, and bypass permissions
-
Yes, manually approve edits: 承認して各編集を個別にレビューする
-
No, keep planning: plan mode に留まる
-
計画の承認で plan mode を抜け、選んだ選択肢のモードへ切り替わる
-
Ctrl+Gで提案された計画を既定のテキストエディタで開いて編集できる -
showClearContextOnPlanAcceptが有効なとき、計画を承認しつつ planning のコンテキストをクリアする選択肢が先頭に追加される -
計画を承認すると、
--nameや/renameで名前を設定していない限り、計画内容からセッション名が自動で付く
auto
- classifier モデルが実行前に行動をレビューし、要求を超えるエスカレーション、認識されていないインフラを対象とする操作、Claude が読んだ敵対的コンテンツに起因すると見られる操作をブロックする
- 明示的な ask ルールは引き続きプロンプトを強制する
- classifier はファイルシステムルートやホームディレクトリを対象とする削除(
rm -rf /、rm -rf ~)も判定する。コマンド置換・プロセス置換の内側にある場合も含む - auto mode は明確化の質問で止まらず作業を続けるよう Claude を促す。プロンプトや skill が明示的に依存している場合は質問する
- 2026-08-14 から、Pro / Max / Team プランの新規セッションで auto mode が既定の permission mode になる
利用要件(すべて満たす必要がある):
-
Plan: すべてのプラン
-
Organization: Team と Enterprise では既定で利用可能。管理者は managed settings で
permissions.disableAutoModeを"disable"にして組織全体で無効化できる -
Model: Anthropic API と Claude Platform on AWS では Claude Opus 4.6 以降、Sonnet 4.6 以降、または Fable 5。Amazon Bedrock / Google Cloud's Agent Platform / Microsoft Foundry / サインイン済み Claude apps gateway セッションでは Claude Sonnet 5、Opus 4.7 以降、Fable 5 のみ。Sonnet 4.5、Opus 4.5、Haiku、claude-3 系はどのプロバイダでも非対応
-
Provider: Anthropic API、Claude Platform on AWS、Amazon Bedrock、Google Cloud's Agent Platform、Microsoft Foundry、サインイン済み Claude apps gateway セッションで既定で利用可能
-
defaultMode: "auto"を設定してもセッションがdefaultで始まる場合、その設定は.claude/settings.jsonか.claude/settings.local.jsonにある可能性が高い。v2.1.142 以降はリポジトリが自身に auto mode を与えないよう、それらのファイルのautoを無視する。~/.claude/settings.jsonへ移す -
Bedrock / Agent Platform / Foundry では auto mode は既定で
Shift+Tabの循環に現れるが、開始モードはdefaultMode(既定は Manual)のまま -
v2.1.158〜v2.1.206 ではこれらのプロバイダで
CLAUDE_CODE_ENABLE_AUTO_MODE=1を設定するまで auto mode は無効だった。この変数は互換のため受け付けられるが v2.1.207 以降は効果が無い
classifier が既定でブロックするもの(抜粋)
classifier は作業ディレクトリと、セッション開始時にそこに設定されていた remote を信頼する。セッション中に git remote add / git remote set-url で追加・変更された remote は信頼されない。
curl | bashのようなコードのダウンロード実行- 機微データの外部エンドポイントへの送信
- 本番デプロイとマイグレーション
- クラウドストレージの大量削除
- IAM やリポジトリ権限の付与
- 共有インフラの変更
- セッション以前から存在したファイルの不可逆な破壊
- force push
- 実行時にリポジトリ外へ secret や機微データを送る、またはデプロイの露出範囲を広げる変更のコミット・push
git reset --hard、git checkout -- .、git restore .、git clean -fd、git stash drop、git stash clear- HEAD のコミットがこのセッションで作られたものでない場合の
git commit --amend。v2.1.198 以降、HEAD が既に push 済みの場合も。メッセージのみの reword(このセッションで Claude が作ったコミットに対する、新たな stage 無しの--amend -m)はブロックされない terraform destroy/pulumi destroy/cdk destroy/terragrunt destroy、およびリソースを破壊する plan の適用
v2.1.195 以降で追加されたもの: secret manager への書き込み、DNS レコードや TLS 証明書の変更、人間が承認していない PR のマージ・Claude 自身の PR の承認・CI チェックの無効化、自動化へのコマンドとなるコメント投稿、本番 feature flag の切り替え・削除、protected IaC scope へのインフラ変更やクラスタノードの drain・削除、共有計算クラスタで指定リソースを超える書き込み、全ノードで動く / クラスタトラフィックを傍受する Kubernetes リソースの作成、sensitive remote target への対話シェルや port-forward、公開インターネットからローカルサービスに到達できるトンネル・リバースシェル、生きた認証情報のトランスクリプトやファイルへの出力、環境設定の sensitive data location へのアクセスやデータ持ち出し、内部パッケージレジストリを迂回した公開レジストリへの install、--insecure のような安全機構を外すフラグ、--dangerously-skip-permissions / --no-sandbox のような人手承認もサンドボックスも無い自律エージェントループの起動、ページ内容・cookie・認証情報を off-origin に送りうる Claude in Chrome の操作。
v2.1.198 以降: /tmp や $TMPDIR などの共有スクラッチ・キャッシュディレクトリの、具体的なパス指定でないワイルドカード・glob・経過時間でのファイル削除、自分のメッセージが認可していない機微情報を外部宛のコンテンツに含めること、Claude Code 自身の tmux ペインへのキーストローク送信。
v2.1.200 以降: セキュリティ挙動を守るテスト・アサーションのコメントアウト・削除・強制通過、セッション中に Claude が作ったのではない stateful リソースの削除、API base URL / proxy endpoint / webhook receiver / registry mirror のタスクに合わない第三者ホストへの向け替え、git remote set-url / git remote add による push 先の変更、公開と分かっているリポジトリへの secret・個人データの push、別リポジトリ・別組織への PR や gh repo fork・第三者リポジトリへの push。
v2.1.203 以降: 機微なローカルストア、または名前・パス・種別が機微であることを示すファイルの内容が、コミット・push・PR/issue テキスト・gist/paste・パッケージ公開に入ること。
v2.1.205 以降: Claude Code のセッショントランスクリプト(~/.claude/projects/ 配下の .jsonl)への書き込み(読み取りはブロックされない)、会話中に代入が現れないシェル変数を対象とする rm -rf "$VAR" のような再帰強制削除。
既定で許可されるもの
- 作業ディレクトリ内のローカルファイル操作
- lock ファイルや manifest に宣言された依存関係のインストール
.envの読み取りと、対応する API への認証情報の送信- 読み取り専用の HTTP リクエスト
- 作業中リポジトリの任意のブランチへの push(既定ブランチを含む)。ただし
productionやgh-pagesのようにデプロイ・公開先を示す名前の非既定ブランチは対象外で個別に判定される
v2.1.195 以降で追加: 同一セッションで Claude が作ったジョブの削除、タスクの一環としてのセキュリティ関連コード・設定・脅威モデルの読み書き、同一マルチエージェントセッション内の agent 間メッセージ、environment に列挙した信頼済みドメイン・バケット・サービスへのデータ送信、Claude in Chrome の信頼済み内部ドメイン・localhost・指定 URL へのナビゲーション。
- sandbox のネットワークアクセス要求は既定許可ではなく classifier を通る。v2.1.198 以降、host と port ごとに判定を再利用する
- allow は新しいコンテンツが会話に入るまで再利用され、その時点で再チェックされる
- 対話 CLI では deny はターン終了時に破棄される
- 非対話モードと Agent SDK セッションにはターン境界が無いため deny は run の残り全体で再利用される
- permission mode やルールを変更するとキャッシュ済み判定はすべて破棄される
claude auto-mode defaultsで全ルールを JSON 出力できる
会話で述べた境界
- 会話中に述べた境界(「push しないで」「レビューするまで deploy を待って」など)を classifier はブロック信号として扱う。既定ルールが許可する行動でもブロックされる
- 境界は後のメッセージで解除するまで有効。Claude 自身が条件を満たしたと判断しても解除されない
- 境界はルールとして保存されず、チェックのたびにトランスクリプトから読み直される。context compaction でそのメッセージが失われると境界も失われる。確実に守らせるには deny ルールを使う
フォールバック
- 拒否された行動は通知され、
/permissionsの Recently denied タブに現れる。rで手動承認による再試行ができる - classifier が 3 回連続、または累計 20 回ブロックすると auto mode は一時停止し、プロンプトを出す状態に戻る。プロンプトされた行動を承認すると auto mode が再開する。これらの閾値は設定できない
- 許可された行動があると連続カウンタはリセットされる。累計カウンタはセッション中持続し、それ自体の上限でフォールバックが起きたときのみリセットされる
-pの非対話モードでは、繰り返しブロックされるとプロンプトする相手がいないためセッションを中断する- classifier チェックの保留中にモードを切り替えると、新しいモードなら要求しなかった判定は破棄され、承認プロンプトになるか、
dontAskでは自動拒否される
classifier の判定順
- allow / ask / deny ルールに一致する行動は即座に解決する。protected paths への書き込みは allow ルールに一致しても classifier に回る。組織が
askに設定した connector ツールとrequiresUserInteractionの MCP ツールは allow ルールに一致しても直接プロンプトを出す。content-scoped な ask ルールは permission prompt にフォールバックする - 読み取り専用の行動と作業ディレクトリ内のファイル編集は自動承認される(protected paths への書き込みを除く)
- それ以外は classifier に回る
- classifier がブロックすると Claude は理由を受け取り代替を試す。v2.1.208 以降、多くのセッションで理由は
Blocked by classifierという固定文言
- auto mode に入ると、任意コード実行を許す広い allow ルールは落とされる:
Bash(*)/PowerShell(*)、Bash(python*)のようなワイルドカード付きインタプリタ、パッケージマネージャの run コマンド、Agentの allow ルール。Bash(npm test)のような狭いルールは引き継がれる。落とされたルールは auto mode を抜けると復元される - classifier はユーザーメッセージ・ツール呼び出し・CLAUDE.md の内容を見る。ツール結果は除去されるため、ファイルやウェブページ内の敵対的コンテンツが直接操作することはできない
subagent の扱い
- subagent 開始前に、委譲されたタスク説明が評価される(v2.1.178 以降)
- 実行中は各行動が親セッションと同じルールで classifier を通る。subagent frontmatter の
permissionModeは無視される - 終了時に行動履歴全体をレビューし、懸念があれば結果の前にセキュリティ警告を付ける
コストとレイテンシ
- classifier は既定で Claude Sonnet 5 上で動く(
/modelの選択とは無関係)。Anthropic がサーバー側で設定した classifier モデルはこの既定より優先される - セッションのモデルが Claude Sonnet 4.6 の場合、または
availableModelsが Sonnet 5 を除外している場合は、セッションのモデル上で動く。セッションが Fable 5 の場合は Opus モデル上で動く - セッション最初の auto mode リクエストで Sonnet 5 の既定を検証する。成功すればそのまま、モデル不在で失敗すればフォールバックを使う。検証後はセッション中 classifier のモデルは変わらない
- Enterprise プランおよび Claude API / Claude Platform on AWS / Amazon Bedrock / Google Cloud's Agent Platform / Microsoft Foundry を使うアカウントでは、classifier 呼び出しがトークン使用量に算入される
dontAsk
- 本来プロンプトを出すツール呼び出しをすべて自動拒否する
- 実行されるのは
permissions.allowルールに一致する行動、read-only Bash コマンド、PreToolUsehook が承認した呼び出しのみ - 明示的な
askルールに一致する呼び出しはプロンプトではなく拒否される - 組み込みの
AskUserQuestionツール、組織がaskに設定した connector ツール、_meta["anthropic/requiresUserInteraction"]の MCP ツールは allow ルールに一致しても拒否される(後者は v2.1.199 以降) - Claude Code on the web の cloud session は
defaultMode: "dontAsk"を無視する
bypassPermissions
- permission prompt と安全チェックを無効にし、protected paths への書き込みを含めツール呼び出しを即座に実行する
- ただし明示的な ask ルール、組織が
askに設定した connector ツール、_meta["anthropic/requiresUserInteraction"]の MCP ツールは引き続きプロンプトを出す - ファイルシステムルートやホームディレクトリを対象とする削除(
rm -rf /、rm -rf ~)はモデルの誤りに対する circuit breaker として引き続きプロンプトを出す。$(...)・バッククォート・<(...)を含むコマンドでも発火する - cross-session messaging の 2 つの安全策は引き続き適用される(
isolatePeerMachinesの承認プロンプト、crossSessionInboundが無いときの受信メッセージ保留) - bypass permissions が利用可能なセッションでは plan mode のブロックも強制されない
- このモードが有効でない状態で始めたセッションから
bypassPermissionsへは入れない。起動時に settings のpermissions.defaultMode: "bypassPermissions"またはフラグで有効にする。--dangerously-skip-permissionsは等価 - このモードで初めて対話セッションを開始すると、権限チェックなしの行動に責任を負うことを承諾する警告ダイアログが出る。承諾は user settings に保存され、以後は出ない。拒否すると Claude Code は終了する。非対話モードではダイアログは出ず、
--bgのバックグラウンドセッションは対話セッションで承諾するまで拒否される - Linux と macOS では root または
sudoでの起動を拒否する(--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons)。認識されたサンドボックス内ではこのチェックは自動でスキップされる - Claude Code on the web は settings の
defaultMode: "bypassPermissions"と"dontAsk"を尊重しない。設定は黙って無視される - 管理者は managed settings で
permissions.disableBypassPermissionsModeを"disable"にしてこのモードをブロックできる
protected paths
bypassPermissions と bypass permissions が利用可能な planning セッションを除き、次のパスへの書き込みは自動承認されない。
| モード | protected path への書き込み |
|---|---|
default, acceptEdits | プロンプト |
plan | プロンプト。bypass permissions 利用可能なセッションでは許可。auto mode が計画中に利用可能なら classifier に回る |
auto | classifier に回る |
dontAsk | 拒否 |
bypassPermissions | 許可 |
- settings の
permissions.allowルールは protected path への書き込みを事前承認しない。安全チェックは settings の allow ルール評価より前に走る - プロンプトが出るモードでは、
.claude/への書き込みのプロンプトに Yes, and allow Claude to edit its own settings for this session の選択肢が出る
保護ディレクトリ: .git、.config/git、.vscode、.idea、.husky、.cargo、.devcontainer、.yarn、.mvn、.claude(Claude が自分の git worktree を置く .claude/worktrees を除く)。
保護ファイル: .gitconfig、.gitmodules、.bashrc、.bash_profile、.bash_login、.bash_aliases、.bash_logout、.zshrc、.zprofile、.zshenv、.zlogin、.zlogout、.profile、.envrc、.npmrc、.yarnrc、.yarnrc.yml、.pnp.cjs、.pnp.loader.mjs、.pnpmfile.cjs、bunfig.toml、.bunfig.toml、.bazelrc、.bazelversion、.bazeliskrc、.pre-commit-config.yaml、lefthook.yml、lefthook.yaml、.lefthook.yml、.lefthook.yaml、gradle-wrapper.properties、maven-wrapper.properties、.devcontainer.json、.ripgreprc、pyrightconfig.json、.mcp.json、.claude.json。
設定
{
"permissions": {
"defaultMode": "acceptEdits"
}
}
claude --permission-mode plan
claude --permission-mode acceptEdits
claude --permission-mode dontAsk
claude --permission-mode bypassPermissions
claude remote-control --permission-mode acceptEdits
制約・注意点
- auto mode は permission prompt を減らすが安全性を保証しない
bypassPermissionsは prompt injection や意図しない行動に対する保護を提供しない。分離されたコンテナ・VM・インターネットに接続しない dev container でのみ使う- auto mode が使えないと報告された場合は要件のいずれかが未達であり、一時的な障害ではない。モデル名を挙げて "cannot determine the safety" と言う別のメッセージは classifier リクエストの失敗を意味し、通常は一時的。ただし Amazon Bedrock では、そのアカウントが当該モデルを invoke できるようになるまで繰り返し発生しうる
関連
facts/claude-code/permissions.mdfacts/claude-code/settings.mdfacts/claude-code/sandboxing.mdfacts/claude-code/hooks.mdfacts/claude-code/security.mdfacts/claude-code/headless.mdfacts/claude-code/sub-agents.mdfacts/claude-code/mcp.mdfacts/claude-code/cli-reference.mdfacts/claude-code/output-styles.md