Claude Codeの確認頻度は権限モードによって変わり、Manualではファイル編集や多くのコマンド実行の前に承認を求められます。
作業が止まるためすべて許可したくなりますが、意図しない破壊的な操作が起きたときに止める仕組みが失われます。
この記事では、確認の頻度と許可範囲を調整する方法を解説します。
許可ルールだけで危険な操作を完全に防げるわけではありません。
全体の動作を決める権限モードと、操作ごとに指定する許可ルールの2つが基本です。
v2.1.283以降の対話型ターミナルとVS Codeでは、起動モードの指定がなければ原則autoで始まります。
対応モデルや組織設定などの条件で変わるため、まず現在のモード表示を確認してください。
確認を求められる仕組み
Claude Codeは、実行するツールの種類に応じて確認が必要かどうかを判定しています。
| 種類 | 例 | 確認 |
|---|---|---|
| 読み取り | ファイルの読み込み、検索 | 作業領域内は通常不要(askルールなどの例外あり) |
| シェルコマンド | コマンドの実行 | 必要(読み取り専用を除く) |
| 書き換え | ファイルの編集・作成 | 必要 |
この表はManualモードの基本です。
ファイルの変更やコマンド実行に加え、WebFetchやWebSearchなどでも確認が発生します。
読み取り時の確認は、ディレクトリ外へのアクセスだけでなく、askルールやネットワークパスなどでも起こります。
対象と適用ルールを確認してから、必要な範囲だけアクセスを追加します。
その場合は起動時に --add-dir でディレクトリを追加するか、設定の permissions.additionalDirectories にパスを記述します。
6つの権限モード
セッション全体の権限動作は権限モードで制御します。
| モード | 動作 |
|---|---|
default | ツールを初回実行する際に確認する(画面表示はManual) |
acceptEdits | 作業ディレクトリや追加ディレクトリ内のファイル編集や、mkdir touch mv cp などの基本コマンドを自動で許可する |
plan | ソースを編集せず調査する。auto利用可能時は自動判定が許可したコマンドも動く |
auto | 対象操作を自動判定する。誤判定がない保証ではない |
dontAsk | 通常なら確認する操作を自動拒否する。承認不要の操作などは実行される |
bypassPermissions | 多くの確認をスキップする(自動許可されない例外があり、隔離環境で検討する) |
日常の作業で扱いやすいのは acceptEdits です。
コードの編集は自動で進めつつ、コマンドは別途ルールや判定に従います。
すべての危険な処理で停止する保証はありません。
セッション中にモードを切り替える
CLIではShift+Tabを押すとモードが順番に切り替わります。
dontAskはこの切り替えに含まれず、起動時に--permission-mode dontAskで指定します。
VS Codeでは入力欄下部のモード表示、DesktopのCodeタブでは入力欄下のモード選択を使います。
起動時にモードを指定する場合は、引数を付けて実行します。
claude --permission-mode acceptEdits起動時のモードを固定したい場合は、設定ファイルに defaultMode を設定します。
{
"permissions": {
"defaultMode": "acceptEdits"
}
}許可ルールで個別の確認を減らす
全体の権限を一括で緩和するよりも、よく使うコマンドを個別に許可する運用のほうが安全です。
ルールには allow(確認なしで許可)、ask(都度確認)、deny(実行を拒否)の3種類があります。
{
"permissions": {
"allow": [
"Bash(npm run test)",
"Bash(git status)",
"Bash(git diff)"
],
"deny": [
"Bash(git push *)",
"Read(./.env)"
]
}
}構文は ツール名 または ツール名(中身) の形式で記述します。
引数を省略してBashとだけ指定すると、Bashツールのすべてのコマンドにマッチします。
PowerShellツールには、PowerShell(Get-ChildItem *)のように別のツール名でルールを設定します。
ワイルドカードの配置による影響
指定位置を誤ると意図しない操作まで許可されるため注意が必要です。
* より前に指定した文字列は、完全一致で評価されます。
| ルール | 許可される範囲 |
|---|---|
Bash(git log *) | git log と、その後に指定した引数に一致する形式 |
Bash(git *) | git のすべてのコマンド |
コマンド名だけでなく、サブコマンド(log や commit など)まで明示してから * を指定してください。
読み書きの対象を制限する
特定のファイルやパスに対してもルールを設定できます。
Read(./.env) のdenyは対象パスへの該当読み取りを制限します。
他の機密ファイルや、シェル・MCPを含む全経路をまとめて遮断する設定ではありません。
WebFetchによる取得先にルールを設定する場合は、WebFetch(domain:example.com) のように指定します。
設定ファイルの配置場所と優先順位
設定ファイルの配置場所によって、設定の適用範囲が異なります。
| 設定ファイル | 適用範囲 |
|---|---|
.claude/settings.local.json | 現在のユーザー・対象プロジェクトのみ |
.claude/settings.json | プロジェクトの共有設定(リポジトリ管理対象) |
~/.claude/settings.json | 現在のユーザー・全プロジェクト共通 |
管理設定を含む適用元を /permissions で確認してください。
ルールの判定順は deny、ask、allow で、具体的なallowを書いても一致するdenyやaskを打ち消せません。
ただし allow などのリスト形式の設定は、上書きされず統合(マージ)されます。
各設定ファイルで定義された項目が合算して適用されます。
現在の設定状況を確認するには、/permissions を実行すると有効なルール一覧が表示されます。
確認を全スキップする指定と注意点
多くの確認を省略するオプションもあります。
ただし、自動許可されない操作には例外が残ります。
claude --dangerously-skip-permissions--permission-mode bypassPermissions の指定と同等に機能します。
このモードでは、通常保護されている .git や .claude といった重要ディレクトリへの変更も許可されます。
公式ドキュメントでも、コンテナや仮想マシンのような隔離環境でのみ使用するよう推奨されています。
ホストマシンや日常の開発環境での常用は避ける必要があります。
組織全体でこのモードを禁止する場合は、設定で permissions.disableBypassPermissionsMode の値を "disable" に指定します。
常時有効化せず、一時的に切り替えられるようにしたい場合は --allow-dangerously-skip-permissions を指定して起動します。
直接起動するのではなく、Shift+Tab による切り替え候補に追加するオプションです。
トラブルシューティング
「今後は確認しない」を選択しても再度確認される場合
Bashなどで永続保存される承認は .claude/settings.local.json に記録されます。
一方、ファイル編集の承認はセッション限りの場合があります。
保存先も作業場所・OS・版による違いがあるため、適用元を確認します。
ただしローカルの allow は、プロジェクトや組織レベルで明示された ask より優先されません。
プロジェクトや組織の共有設定に該当操作の ask が含まれていないか確認してください。
リポジトリに追加した設定が反映されない場合
allow ルールおよび additionalDirectories は、そのディレクトリを信頼済みとして許可するまで有効になりません。
他のメンバーがリポジトリを新規取得した直後は、信頼設定が済むまで確認が発生します。
なお deny および ask は信頼状態にかかわらず即座に反映されます。
defaultMode を指定しても反映されない場合
auto および bypassPermissions の2つは、プロジェクト単位の設定ファイルからは指定できません。
ユーザー個人の設定ファイルに記述するか、起動時の --permission-mode オプションで指定してください。
VS Code拡張から始める会話は、起動モードについてプロジェクトのsettings.jsonやsettings.local.jsonを参照しません。
拡張のモード表示から選ぶか、VS Codeのユーザー設定claudeCode.initialPermissionModeで指定してください。
このVS Code設定はautoを受け付けないため、autoで始める場合は設定を未指定にし、モード表示からAutoを選びます。
CLAUDE.md に指示を書いても確認が省略されない場合
ツールの実行権限は、プロンプト解釈ではなくClaude Codeのシステム側で制御されています。
指示プロンプト経由ではセキュリティ権限を変更できません。
/permissions コマンド、設定ファイル、または起動オプションから指定してください。
実用的なおすすめ設定例
次は、編集の自動許可と少数のコマンドルールを組み合わせる例です。
プロジェクトのスクリプト内容を確認してから採用してください。
npm run * のような広い許可は、デプロイなど想定外のスクリプトにも一致します。
{
"permissions": {
"defaultMode": "acceptEdits",
"allow": [
"Bash(git status)",
"Bash(git diff *)",
"Bash(npm run test)"
],
"deny": [
"Bash(git push *)",
"Bash(rm -rf *)",
"Read(./.env)"
]
}
}Bashのルールはコマンド文字列に対する判定であり、同じ操作の別形式や他のツールまで網羅しません。
ファイル・ネットワークの制限が必要なら、サンドボックスなど実行環境の境界も確認します。
応答言語を日本語に固定する設定も同一の設定ファイルに記述できます。
Claude Codeを日本語で使うで解説しています。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
導入と設定の記事は、ほかにもあります。



まとめ
- 確認が発生するのは主にファイルの変更とコマンド実行。読み取り操作は作業領域内では通常確認不要だが、askルールなどの例外がある
- まずは
acceptEditsを試す。セッション中はShift+Tabで素早く切り替え可能 - 頻出コマンドは
allowに個別追加する。ワイルドカードは必要な範囲だけに使い、広い許可を避ける - 全確認のスキップは、影響範囲を制限した隔離環境でのみ使用する
- 現在適用されているルールは
/permissionsで確認可能
2026年10月27日に公式の権限資料と権限モード資料で、ルール・初期モード・切り替え方法を再照合しました。
今回、掲載ルールや各モードを実機で実行していません。
実際の版・組織ポリシー・ツール名に照らして確認してください。
仕様やオプションの構文はアップデートされる可能性があるため、最新の公式ドキュメントもあわせてご確認ください。
よくある質問:Claude Codeの権限モードと許可ルール
Claude Codeで、確認を求められるのは、どんなときですか?
実行するツールの種類で判定されます。
読み取り(ファイルの読み込み、検索)は、作業領域内は通常確認不要(askルールなどの例外あり)、シェルコマンドの実行は必要(読み取り専用を除く)、ファイルの編集・作成は必要です。
これはManualモードの基本で、WebFetchやWebSearchなどにも確認があります。
利用モードによって動作は変わります。
読み取りの確認理由を調べ、必要なディレクトリなら --add-dir や permissions.additionalDirectories で追加します。
askルールやネットワークパスの確認までなくなるとは限りません。
権限モードは、どんな種類がありますか?
6つあります。
defaultはManual表示、acceptEditsは作業領域内の編集や基本操作を自動許可するモードです。
planはソースを編集せず調査しますが、利用条件によって自動判定が許可したコマンドも動きます。
autoは自動判定、dontAskは通常なら確認する操作の拒否、bypassPermissionsは多くの確認の省略です。
どのモードにも適用条件や例外があります。
日常の作業で扱いやすいのは acceptEdits で、コードの編集は自動で進めつつ、コマンドは別途ルールや判定に従います。
すべての危険な処理で停止する保証はありません。
モードは、どう切り替えますか?
CLIではShift+Tabで切り替えますが、dontAskは起動時のフラグで指定します。
VS CodeやDesktopでは、各画面のモード選択を使います。
起動時は引数(--permission-mode)でモードを指定し、起動時のモードを固定したいときは、設定ファイルに defaultMode を設定します。
よく使うコマンドの確認を、減らすには?
全体の権限を一括で緩和するよりも、よく使うコマンドを個別に許可する運用のほうが安全です。
ルールには allow(確認なしで許可)、ask(都度確認)、deny(実行を拒否)の3種類があり、構文は「ツール名」または「ツール名(中身)」の形式です。
引数を省略したBashルールはBashツール全体に一致し、PowerShellツールには別のPowerShellルールが必要です。
ワイルドカード(*)は、どこに置けばよいですか?
* より前に指定した文字列は完全一致で評価されます。
たとえば Bash(git log *) は git log とその引数に一致する形式、Bash(git *) は git のすべてのコマンドが許可されます。
指定位置を誤ると意図しない操作まで許可されるため、コマンド名だけでなく、サブコマンド(log や commit など)まで明示してから * を指定します。
警告が出ないことは安全性の保証ではありません。
指定した範囲を具体的に確認します。
特定のファイルや通信先は、制限できますか?
特定のファイルやパスにもルールを設定できます。
Read(./.env) は該当パスへの読み取りを制限します。
全機密ファイルやすべてのアクセス経路を保護する保証ではありません。
WebFetchによる取得先のルールでは、WebFetch(domain:example.com) のように指定します。
設定ファイルは、どこに置きますか? 優先順位は?
.claude/settings.local.json は現在のユーザー・対象プロジェクトのみ、.claude/settings.json はプロジェクトの共有設定(リポジトリ管理対象)、~/.claude/settings.json は現在のユーザー・全プロジェクト共通です。
allowなどのリストは複数の設定元から統合されます。
判定はdeny、ask、allowの順で、一致するdenyやaskをallowで取り消せません。
管理ポリシーによる制約も確認してください。
現在の設定状況は /permissions で、有効なルール一覧を確認できます。
確認をすべてスキップする指定は、使ってよいですか? 設定が効かないときは?
多くの確認を省略するオプションは、--permission-mode bypassPermissions の指定と同等に機能し、通常保護されている .git や .claude といった重要ディレクトリへの変更も許可されます。
公式ドキュメントでも、コンテナや仮想マシンのような隔離環境でのみ使うよう推奨されていて、ホストマシンや日常の開発環境での常用は避けます。
組織全体で禁止するには、permissions.disableBypassPermissionsMode を "disable" に指定し、一時的に切り替えられるようにしたいときは --allow-dangerously-skip-permissions で起動します(Shift+Tab の切り替え候補に追加するオプション)。
「今後は確認しない」を選んだのに再度確認されるときは、プロジェクトや組織の共有設定に該当操作の ask が含まれていないか確認します。
リポジトリに追加した allow ルールや additionalDirectories は、そのディレクトリを信頼済みとして許可するまで有効にならず(deny と ask は即座に反映)、defaultMode の auto と bypassPermissions は、プロジェクト単位の設定ファイルからは指定できないため、個人の設定ファイルか --permission-mode で指定します。
CLAUDE.md に指示を書いても、権限は変更できません(権限は Claude Code のシステム側で制御されます)。
なお、記事の内容は変わることがあるので、最新は公式ドキュメントで確認してください。
