Claude Code が何度も許可を求めてくる? --dangerously-skip-permissions を使わずに解決する方法
40 回目の npm test を承認するのは、ただのノイズです。Claude Code には、退屈な確認を黙らせて危険な確認だけを残すための仕組みがすべて揃っています。ただ、それが 3 つのファイルと 6 つのモードに分散しているだけです。
要点
いつも承認するコマンドは permissions.allow に(例: Bash(npm run *))、必ず止めたいコマンドは ask または deny に入れ、作業に合った権限モードを選びます。大量の編集には acceptEdits、日常作業には auto、読むだけなら plan です。ルールは deny → ask → allow の順に評価されるため、deny が上書きされることはありません。各ルールの出どころは /permissions で確認できます。--dangerously-skip-permissions は使い捨てのコンテナー用に取っておきましょう。
Claude Code がこれほど頻繁に確認してくる理由
デフォルトモード(CLI では Manual と表示)では、Claude Code は各ツールを初めて使うときに確認し、さらに許可されていないシェルコマンドを実行するたびに確認します。この確認は、誤った rm やうっかりした git push を止められる瞬間なので、残しておく価値があります。問題は、エージェントが 1 回のセッションで行う100 もの無害な操作に対しても確認が出ることです。
確認が表示されるかどうかは、設定ファイルのルール、現在の権限モード、そして以前に「Yes, and don’t ask again」で答えた内容の 3 つで決まります。ノイズを減らすには、この 3 つすべてを調整します。
Claude Code v2.1.283 以降では、すべてのプランとプロバイダーで、対話型のターミナルセッションと VS Code セッションが auto モードで始まります。auto モードでは、日常的な操作に確認を出す代わりに、バックグラウンドの分類器がコマンドとネットワークリクエストを、あなたの依頼内容と照らし合わせてチェックします。それでもすべての操作で確認が出る場合は、ステータスバーを見てください。「⏸ manual mode on」と表示されていれば、デフォルトモードになっています。
allow・ask・deny ルール
ルールは設定ファイルの permissions の下に書きます。次の例は Anthropic の設定リファレンスからそのまま引用したものです。
allow: 確認なしで実行します。ask: 本来なら自動承認されるモードでも、必ず確認します。deny: 決して実行しません。
重要なのは順序です。deny、ask、allow の順に評価され、最初に一致したものが適用されます。ルールの具体性によって順序は変わりません。 allow ルールで deny ルールに例外を作ることはできず、どこかのレベルでツールが deny されていれば、他のどのレベルからも許可できません。ルールはモデルではなく Claude Code 自体が強制するため、CLAUDE.md に「push しないこと」と書いても deny ルールと同じ効果にはなりません。
ルールの書き方
| ルール | 一致する対象 |
|---|---|
Bash(npm run *) | npm run build、npm run test --watch。npm install は対象外 |
Bash(git log *) | git log … のみ。これに対して Bash(git *) はすべての git コマンドを許可します。 |
Bash(ls:*) | Bash(ls *) と同じ。:* は末尾ワイルドカードの別の書き方です |
Read(./.env) | そのファイルの読み取り。Read と Edit のルールは gitignore 形式のパターンを使います |
Edit(//Users/alice/notes/**) | 絶対パス。先頭が / 1 つだと設定ファイルからの相対パスになるため、絶対パスには // が必要です |
WebFetch(domain:example.com) | example.com のみ。サブドメインには WebFetch(domain:*.example.com) を追加します |
mcp__github__* | github MCP サーバーのすべてのツール。mcp__ の後に括弧が付いたルールは無視されます |
Windows では、PowerShell のルールも Bash のルールと同じ形式で書きます。
どの設定ファイルを使うか
| スコープ | ファイル | 用途 |
|---|---|---|
| ユーザー | ~/.claude/settings.json(Windows: %USERPROFILE%\.claude\settings.json) | すべてのプロジェクトに共通する自分の習慣 |
| プロジェクト(共有) | .claude/settings.json | チーム全員に適用したいルール(コミットする) |
| プロジェクト(ローカル) | .claude/settings.local.json | 1 つのリポジトリ用の個人ルール(コミットしない) |
| マネージド | managed-settings.json やその他のマネージドソース | 会社のポリシー。何によっても上書きできません |
優先順位は高い順に、マネージド、コマンドライン、プロジェクト(ローカル)、プロジェクト(共有)、ユーザーです。permissions.allow のようなリスト型のキーは、置き換えではなくファイル間で結合されます。つまずきやすい点が 2 つあります。
- 設定ファイルは厳密な JSON です。
//コメントや末尾のカンマは構文エラーになり、ファイル全体が無視されます。 - 共有プロジェクトファイルの allow ルールは、チームメンバーそれぞれがフォルダーを信頼してから適用されます。deny と ask のルールはすぐに適用されます。
permissions や hooks を含め、ほとんどの変更は再起動しなくても実行中のセッションに反映されます。実際に読み込まれた内容を確認するには、/status(Setting sources の行)または /permissions を実行します。後者はすべてのルールとその出どころのファイルを一覧表示します。
「Yes, and don’t ask again」が実際に保存するもの
確認に「don’t ask again」で答えると、git リポジトリのルートにある .claude/settings.local.json にルールが書き込まれます。どれだけ持続するかはツールによって異なります。
| ツール | 記憶される期間 |
|---|---|
| Bash コマンド | 永続的。リポジトリとコマンドごと |
| ファイル編集 | セッション終了まで |
| WebFetch | 永続的。リポジトリとドメインごと |
つまり、新しいセッションのたびに Claude がファイル編集の許可を求めてくるのは仕様です。ファイル編集の承認はセッション単位だからです。代わりに acceptEdits モードか Edit(...) の allow ルールを使いましょう。また、「don’t ask again」と答えた後もコマンドの確認が続く場合は、プロジェクトファイルやマネージドファイルに ask ルールがないか確認してください。ローカルファイルの allow ルールはそれより優先されません。
権限モードと使い分け
| モード | 動作 | 向いている作業 |
|---|---|---|
default(Manual) | 各ツールの初回使用時に確認する | 初めて触るリポジトリ、リスクのある作業 |
acceptEdits | ファイル編集を確認なしで受け入れる | 後で git でレビューする長いリファクタリング |
plan | 読み取りと計画のみで、何も変更しない | コードベースの調査、変更の設計 |
auto | 日常的な確認はなし。分類器が先にコマンドとネットワークリクエストをチェックする | 日々の作業 |
dontAsk | 確認しない | スクリプトと自動化 |
bypassPermissions | .git や .claude への書き込みも含めて確認をスキップする | 隔離されたコンテナーや VM 専用 |
Shift+Tab を押すとモードが切り替わります。auto からは最初の 1 回で default に移り、その後は default → acceptEdits → plan の順です。開始時のモードは permissions.defaultMode で設定します。なお、auto と bypassPermissions はユーザー設定またはマネージド設定でのみ有効で、プロジェクトファイルからは設定できません。
bypass を含むすべてのモードで、常に確認が出るものがあります。明示的な ask ルール、Claude からあなたへの質問、重要なパスに対する rm などです。管理者は permissions.disableBypassPermissionsMode または permissions.disableAutoMode を "disable" に設定して、リスクのあるモードを無効にできます。
--dangerously-skip-permissions について
--dangerously-skip-permissions は --permission-mode bypassPermissions と同じです。Anthropic のドキュメントははっきり書いています。インターネットに接続していないコンテナー、VM、開発コンテナーのような隔離された環境でのみ使うように、と。Linux と macOS では root として実行すると起動を拒否し、警告を承諾するとユーザー設定に skipDangerousModePermissionPrompt が書き込まれます。
本当に望んでいるのが「退屈なことを聞かないでほしい」なら、auto モードといくつかの allow ルールで、重要な確認を手放さずに実現できます。
サンドボックス: 安全網付きで確認を減らす
Claude Code はシェルコマンドをサンドボックス内で実行できます。デフォルトではオフで、/sandbox または sandbox.enabled: true で有効にします。サンドボックスのモードは 2 つあり、一方はサンドボックス内のコマンドを自動承認し、もう一方は引き続き確認します。サンドボックスの対象はシェルコマンドだけで、ファイルツール、MCP サーバー、フックはその外で実行されます。
対応環境は macOS、Linux、WSL2 です。ネイティブの Windows ではサンドボックスは動作せず、コマンドはサンドボックスなしで実行されます。Windows で ask リストを短く保っておくべき理由がもう 1 つ増えるわけです。
実用的な設定例
JavaScript プロジェクトなら、次の内容が妥当な出発点です。コマンドは使っているスタックに合わせて調整してください。
- 読み取り専用のコマンドとテストコマンドの allow リストから始めます。
- マシンの外に出る操作(push、publish、deploy)はすべて
askに入れます。 - シークレットへのアクセスは例外なく deny します。
- auto または acceptEdits で作業し、調査するときは plan モードに切り替えます。
- 数日ごとに
.claude/settings.local.jsonを開き、「don’t ask again」で追加されたルールを整理します。
残った確認が見えない場所に出るとき
調整が済めば、判断に値することだけを聞かれるようになるはずです。残る問題は、その質問が出る場所です。ブラウザーの裏に隠れたターミナルのタブに出ると、気づくまでエージェントが 20 分待たされることもあります。
Pet Island は、こうした質問を画面上部の小さなアイランドに移します。Claude Code が許可を必要とすると、コマンドや差分とともにリクエストがそこに表示され、ウィンドウを切り替えずに許可、拒否、常に許可を選べます。Claude Code の質問やプランもアイランドから操作でき、アイランドを閉じている場合、Claude Code は通常どおりターミナルで確認します。
よくある質問
Claude Code がコマンドごとに許可を求めるのを止めるには?
信頼できるコマンドを ~/.claude/settings.json の permissions.allow に追加し(例: "Bash(npm run *)")、auto または acceptEdits モードを使います。リスクのあるコマンドは permissions.ask に残しておけば、引き続き確認で止まります。
「don’t ask again」と答えたのに、Claude Code がファイル編集の許可を再び求めるのはなぜですか?
ファイル編集の承認はセッション終了までしか持続しません。セッションをまたいで編集を承認したい場合は、acceptEdits モードか Edit(...) の allow ルールを使います。
allow ルールで deny ルールを上書きできますか?
できません。ルールは deny、ask、allow の順に評価され、最初に一致したものが適用されます。どこかのレベルで deny されたツールは、他の場所で許可できません。
--dangerously-skip-permissions は安全ですか?
Anthropic は、インターネットに接続していないコンテナーや VM などの隔離された環境でのみ使うことを推奨しています。また、.git や .claude への書き込みに対する確認もスキップされます。
「Yes, and don’t ask again」はルールをどこに保存しますか?
git リポジトリのルートにある .claude/settings.local.json です。
Claude Code のサンドボックスは Windows で動作しますか?
ネイティブの Windows では動作せず、コマンドはサンドボックスなしで実行されます。対応環境は macOS、Linux、WSL2 です。
出典
このページの設定と動作はすべて、2026年10月26日 に以下のページと照らし合わせて確認しました。エージェントは変化が速いため、内容が一致しなくなった場合は公式ページの記述を優先してください。
- Claude Code ドキュメント: Configure permissions
- Claude Code ドキュメント: Permission modes
- Claude Code ドキュメント: Settings
- Claude Code ドキュメント: Settings reference
- Claude Code ドキュメント: Sandboxing