case_1166

Claude Codeの許可設定|毎回聞かれる時・すべて許可する方法

Claude Codeの許可設定|毎回聞かれる時・すべて許可する方法

Claude Codeの許可を毎回聞かれる時は、まずモードを確認します。v2.1.283以降の既定はauto。Manualに戻る理由、allowルール、すべて許可するbypassPermissionsの条件を公式情報で整理しました。

2026年10月6日時点の公式ドキュメントで確認した結論から書く。Claude Codeで許可を毎回聞かれるなら、最初に見るのは設定ファイルではなく、いま動いているモードだ。v2.1.283以降、端末とVS Code拡張で始めたセッションの組み込みの既定は auto モードで、確認の多くは別の分類器モデルが代わりに判断する。それでも毎回聞かれるのは、セッションが Manual(設定値は default)で動いているか、どのモードでも確認が残る操作に当たっているかのどちらかだ。

減らし方は4段階ある。よく使うコマンドを allow ルールで個別に許可する、ファイル編集だけを acceptEdits で通す、auto に任せる、隔離した環境でだけ bypassPermissions で全部通す。下に行くほど確認は減り、事故を止める網も粗くなる。ここを順に押さえれば、「すべて許可」に飛びつかずに確認の回数を減らせる。

この記事の要点

  • 既定:v2.1.283以降、端末とVS Code拡張は auto で始まる。⏸ manual mode on なら Manual。
  • 聞かれ方の差:Bashの許可はリポジトリとコマンドごとに保存、ファイル編集の許可はセッション終了まで。
  • 個別に許可:/permissions か「Yes, and don’t ask again」。判定は deny → ask → allow の順。
  • ファイル編集だけ通す:acceptEdits(Manual から Shift+Tab を1回)。
  • すべて許可:bypassPermissions はコンテナやVMの中だけで使う。
  • 対象読者:Claude Codeを毎日使う開発者、チームの設定を決めるテックリード。
  • 今日やること:/permissions でルールと保存先を確認する。

まず確認|いま何モードで動いているか

許可の確認が多すぎると感じたら、ルールを書き足す前にモードを確かめる。モードが違えば、同じルールでも確認の出方が変わるからだ。

--permission-mode、permissions.defaultMode、組み込みの既定の順にモードが決まり、autoが使えない時はManualで始まることを示した図
セッションが始まるモードは3つの順で決まる

状態表示でモードを見る

入力欄の下の状態表示にモードが出る。Manual なら灰色の ⏸ manual mode on、ほかは ⏵⏵ accept edits on、⏸ plan mode on、⏵⏵ auto mode on と表示される。Shift+Tab を押すとモードが切り替わり、auto からは1回目で Manual に移り、その後は Manual → acceptEdits → plan の順に回る。auto が使える環境なら、plan の後に auto が戻ってくる。

6つのモードと確認なしで通るもの

公式の「Choose a permission mode」は、モードごとに確認なしで実行される範囲を次のように整理している(Claude Code公式ドキュメント)。

モード 確認なしで通るもの 向いている場面
default(Manual) 読み取りだけ 一つずつ確かめたい作業、機密性の高い作業
acceptEdits 読み取り、ファイル編集、よく使うファイル操作コマンド 編集を後から差分で見直す作業
plan 読み取り(auto が使える時は分類器が通したコマンドも) 変更前にコードを調べる段階
auto すべて(裏で安全確認が入る) 長い作業、確認の多さに疲れた時
dontAsk 読み取りと事前に許可したツール。確認が要るものは拒否 締め付けたCIやスクリプト
bypassPermissions すべて 隔離したコンテナとVMだけ

セッションが始まるモードの決まり方

端末で新しいセッションを始める時、Claude Codeは次の順で最初に当てはまったものを使う。

  1. 起動時の --permission-mode フラグ、または --dangerously-skip-permissions
  2. 設定ファイルの permissions.defaultMode
  3. 組み込みの既定

組み込みの既定は、v2.1.283以降なら端末でもVS Code拡張でも、全プラン・全接続先で auto だ。それより前のバージョンでは、Pro・Max・Teamの条件を満たすセッションだけが auto で始まり、それ以外は Manual だった。なお2026年10月6日時点で、GitHubのCHANGELOGに載っている最新版は v2.1.291 だ(Claude Code CHANGELOG)。

auto にならず Manual で始まる主な理由

auto が選ばれても、そのセッションで auto が使えなければ Manual で始まる。公式ドキュメントに書かれている主な原因は次のとおりだ。

  • どこかの設定ファイルで disableAutoMode が "disable" になっている
  • 使っているモデルが auto の対象外(Anthropic API では Opus 4.6以降、Sonnet 4.6以降、Fableモデルが対象。Amazon Bedrockなどの接続先では対象がさらに絞られる)
  • 設定ファイルの defaultMode が "default"(Manual)になっている。逆に "auto" を .claude/settings.json か .claude/settings.local.json に書いても効かず、組み込みの既定が使われる
  • claude -p や Agent SDK で動かしている(機能フラグを取得するセッションでは既定が default)
  • Anthropic側で auto が止められている

許可の聞かれ方は操作の種類で違う

「さっき許可したのに、また聞かれた」の多くは、操作の種類ごとに許可の続く長さが違うことで説明がつく。公式の「Configure permissions」にある表を訳すと次のとおりだ(Manual モードの場合・Claude Code公式ドキュメント)。

操作の種類 確認が要るか 「Yes, and don’t ask again」の効き方
読み取り専用(ファイルの読み取り、Grep) 作業ディレクトリと追加ディレクトリの中なら不要 該当なし
Bashコマンド 要る(組み込みの読み取り専用コマンドは除く) リポジトリとコマンドごとに永続
ファイルの変更(編集・書き込み) 要る セッションが終わるまで
Webの取得(WebFetch) 要る(事前承認済みのドキュメントのドメインは除く) リポジトリとドメインごとに永続
Web検索 要る リポジトリごとに永続

「今後は聞かない」はどこに保存されるか

Bashコマンドの確認画面には、Yes、「Yes, and don’t ask again for: npm test *」のような今後は聞かない選択肢、auto が使える時の「Yes, and switch to auto mode」、No が並ぶ。今後は聞かないを選ぶと、ルールはgitリポジトリの直下の .claude/settings.local.json に保存され、そのリポジトリのどのサブディレクトリやworktreeで始めたセッションにも効く。この保存先になったのは v2.1.211 からで、それより前は起動したディレクトリに保存されていた。

ファイル編集の許可はファイルに保存されず、セッションが終わると消える。毎朝ファイル編集を聞かれるのはこのためだ。また、確認画面が「その選択肢で何を許すか」を全部表示できない時は、1回だけの許可しか出ない。その場合は後述の /permissions から自分でルールを足す。

方法1|allowルールでよく使うコマンドを個別に許可する

確認を減らす最初の手は、毎回許可しているコマンドを allow ルールにすることだ。モードを変えないので、残りの操作には今までどおり確認が出る。

ツール呼び出しがdeny、ask、allowの3つの関門を順に通り、それぞれ使わせない、使うたびに確認する、確認なしで使わせるに分かれる図
ルールは deny、ask、allow の順に照合される

/permissions でいまのルールを見る

/permissions を実行すると、すべてのルールと、それぞれがどの settings.json から来ているかの一覧が開く。ここでルールを足したり消したりできる。Claudeが作業している最中でも開けて、v2.1.234以降は追加や削除がその次のツール呼び出しから効く。ルールには3種類ある。

  • allow:確認なしで使わせる
  • ask:使うたびに確認する
  • deny:使わせない

ルールの書き方とワイルドカード

ルールは ツール名 か ツール名(指定) の形で書く。公式ドキュメントの例を使うと、npmのスクリプトとgitのコミットは確認なしで通し、git push で始まるコマンドは拒否する設定は次のようになる。

{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git commit *)"
    ],
    "deny": [
      "Bash(git push *)"
    ]
  }
}

* は空白も含めて任意の文字列に当たる。公式の表から抜き出すと、当たり方は次のとおりだ。

書き方 当たる 当たらない
Bash(npm run build) npm run build npm run build --watch
Bash(npm run *) npm run build、npm run test --watch、npm run npm install
Bash(ls *) ls -la、ls lsof
Bash(ls*) ls -la、lsof なし

書く時に外せない3つの決まり

  • * はサブコマンドの後ろに置く:Bash(git log *) は git log だけを許すが、Bash(git *) は git のすべてのコマンドを許す。Bash(git * main) のようにサブコマンドより前に * を置いた allow ルールには、起動時に警告が出る。
  • つないだコマンドは1つずつ判定される:&&、||、;、| などでつないだコマンドは、それぞれがルールに当たらないと通らない。Bash(npm *) を許可していても、npm test && 別のコマンド の後半は別に判定される。
  • 末尾の :* は * と同じ:Bash(ls:*) は Bash(ls *) と同じ意味になる。確認画面から保存されるルールは空白区切りの形で書かれる。

どのファイルに書くか

ルールを書く場所で、効く範囲が変わる(Settings files and precedence)。

ファイル 効く範囲 置くもの
~/.claude/settings.json 自分の、このマシンのすべてのプロジェクト 自分だけの許可、既定のモード
.claude/settings.json そのプロジェクトの全員(gitで共有) チームで揃えるルール
.claude/settings.local.json そのプロジェクトの自分だけ 確認画面から保存されたルール
管理設定(managed settings) 組織の全員。ほかの設定から上書きできない 組織の禁止事項

プロジェクトの .claude/settings.json にある allow ルールは、そのフォルダのワークスペース信頼のダイアログを受け入れるまで効かない。ダイアログには、そのフォルダが与えようとしているルールが並ぶので、知らないリポジトリでは中身を見てから受け入れる。設定ファイルの階層と書き方の全体はsettings.json設定ガイドにまとめている。

deny → ask → allow の順で判定される

ルールは deny、ask、allow の順に照合され、最初に当たったもので決まる。細かいルールほど優先されるわけではない。Bash(aws *) を deny にすると、Bash(aws s3 ls) を allow にしていても拒否される。どこか1つの設定ファイルで deny になったものは、ほかの設定ファイルの allow では通せない。

方法2|acceptEditsでファイル編集をまとめて通す

ファイル編集の確認がいちばん多いなら、acceptEdits が合う。作業ディレクトリの中でのファイル作成と編集を確認なしで通し、状態表示は ⏵⏵ accept edits on になる。

Manualではファイル編集のたびに止まり、acceptEditsではファイル編集・mkdir・cpが通り、それ以外のBashコマンドは止まることを比べた図
acceptEdits ではファイル編集と一部のファイル操作が確認なしで通る

確認なしで通るもの・残るもの

acceptEdits では、ファイル編集に加えて mkdir、touch、rm、rmdir、mv、cp、sed のようなファイル操作のコマンドも確認なしで通る(作業ディレクトリの中のパスに限る)。一方で、範囲の外のパス、.git などの保護されたパスへの書き込み、それ以外のBashコマンド(組み込みの読み取り専用コマンドを除く)には、今までどおり確認が出る。

入り方と使いどころ

Manual から Shift+Tab を1回押すか、claude --permission-mode acceptEdits で起動する。公式ドキュメントは、編集を1件ずつ承認する代わりに、エディタや git diff で後からまとめて見直したい時の使い方として案内している。

方法3|autoモードで確認を分類器に任せる

auto モードでは、ふだんの確認画面を出さずに作業が進む。実行の前に別の分類器モデルが中身を見て、頼んだ範囲を超える操作、知らないインフラに向けた操作、Claudeが読んだ悪意ある内容に引きずられたように見える操作を止める。明示した ask ルールは、auto でも確認が出る。

分類器を中心に、頼んだ範囲を超える操作、知らないインフラに向けた操作、悪意ある内容を止め、askルールは確認が出ることを示した図
auto では分類器が実行前に操作を確かめる

使える条件

公式ドキュメントでは、auto は全プランで使える。Team と Enterprise では既定で使えて、管理者は管理設定で permissions.disableAutoMode を "disable" にして組織全体で止められる。モデルの条件は前述のとおりで、Anthropic API では Opus 4.6以降、Sonnet 4.6以降、Fableモデルが対象になる。公式は「確認を減らすが、安全を保証するものではない」と注意しており、機密性の高い操作の確認の代わりにはしない。

既定にする時の置き場所

auto を既定にするなら、~/.claude/settings.json に "defaultMode": "auto" を書く。プロジェクトの .claude/settings.json や .claude/settings.local.json に書いても効かず、~/.claude/settings.json の値も飛ばして組み込みの既定が使われる。組み込みの既定が Manual になる古いバージョンでは、エラーも出ないまま Manual で始まる。Manual や acceptEdits で作業中でも、auto が使える環境ならBashの確認画面に「Yes, and switch to auto mode」が出るので、そこから切り替えてもよい。分類器の設定の詳しい調整は自動許可モードのチーム導入、既定が auto になった時の移行はauto mode標準化の移行手順で扱っている。

方法4|すべて許可するbypassPermissionsを使う条件

「全部許可したい」に当たるのが bypassPermissions だ。確認画面と安全確認を止め、.git や .claude のような保護されたパスへの書き込みまで確認なしで通す。公式ドキュメントは、Claude Codeが被害を出せないコンテナやVMのような隔離した環境でだけ使うよう警告している。

bypassPermissionsを手元のPCではなくコンテナやVMで使い、denyルールはそれでも効くことと、組織ではdisableBypassPermissionsModeで止められることを示した図
bypassPermissions は手元のPCから隔離した環境へ移して使う

それでも止まるもの

deny ルールは bypassPermissions でも効く。逆に allow ルールは、このモードでは意味を持たない。さらに、次の節で挙げる「どのモードでも自動では通らない操作」には、このモードでも確認が出る。

有効にする方法

起動時に --dangerously-skip-permissions か --permission-mode bypassPermissions を付ける。defaultMode で既定にする場合は、ユーザー設定、--settings、管理設定のどれかに書く。プロジェクトの .claude/settings.json と .claude/settings.local.json に書いた "bypassPermissions" は、v2.1.257 から無視されるようになった(CHANGELOG)。VS Code拡張では拡張の設定で「Allow dangerously skip permissions」を、デスクトップアプリでは Pro・Max プランなら「Allow bypass permissions mode」を有効にした時だけ、モードの選択肢に出る。

組織で止める

使わせたくない組織は、permissions.disableBypassPermissionsMode を "disable" にする。どの設定ファイルでも効くが、管理設定に置けば利用者の設定で上書きできない。

どのモードでも確認が残る操作

auto にしても bypassPermissions にしても確認が消えない操作がある。公式ドキュメントが「どのモードでも自動では承認しない」としているのは次のものだ。

自動では通らない操作

  • 明示した ask ルールに当たるツール
  • 組織が ask に設定したコネクタのツール
  • 利用者の操作が前提のツール(組み込みの AskUserQuestion と、requiresUserInteraction が付いたMCPツール)
  • rm -rf / や rm -rf ~ のような、重要なパスを消す rm と rmdir
  • permissions.blockReadsOutsideWorkingDirectories を有効にしている時の、作業ディレクトリの外の読み取り(設定のしかたは作業ディレクトリ外の読み取り制御を参照)

保護されたパスへの書き込み

.git などの保護されたパスへの書き込みは、Manual と acceptEdits では確認が出て、auto では分類器に回り、dontAsk では拒否される。permissions.allow に Edit(.claude/**) のようなルールを書いても、この確認は先に走るので通らない。その代わり確認画面に「Yes, and allow Claude to edit files in this project’s .claude folder for this session」のような、そのセッションの間だけ許す選択肢が出る。

想定シナリオ|受託開発チームの許可設定を3つのファイルに分ける

ここからは構成例で、実在の企業の事例や実測値ではない。5人ほどの受託開発チームが「テストとコミットは聞かれずに回したい、push は必ず人が見る、.env は読ませない」を決めた場合の分け方を示す。

管理設定、.claude/settings.json、~/.claude/settings.json、.claude/settings.local.jsonの4層に、allow・ask・deny・defaultModeの置き場所を分けた構成例の図
組織・チーム・個人で書くファイルを分ける構成例

チームで共有するルール

リポジトリの .claude/settings.json に、全員で揃えるルールを書いてgitで共有する。

{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git commit *)"
    ],
    "ask": [
      "Bash(git push *)"
    ],
    "deny": [
      "Read(./.env)"
    ]
  }
}

push を deny ではなく ask にしたのは、auto で作業していても push の前だけは確認を出したいからだ。ask ルールは auto でも確認が出る。ただし git -C . push のような別の書き方には当たらないので、push を本当に止めたいなら、ルールだけに頼らず後述のサンドボックスやフックと組み合わせる。

個人とプロジェクトごとの設定

各自の ~/.claude/settings.json には、使うモードの既定だけを書く。auto が使える人は "defaultMode": "auto"、使えない人は書かずに Manual のまま始め、必要な時に Shift+Tab で切り替える。確認画面から保存されるルールは .claude/settings.local.json に貯まるので、このファイルはgitで共有しない。gitで追跡されている .claude/settings.local.json は、リポジトリから渡された設定として扱われ、信頼のダイアログを受け入れるまで効かなくなる。

組織の禁止事項

会社として bypassPermissions を使わせない方針なら、情報システム担当が管理設定に "disableBypassPermissionsMode": "disable" を置く。チームの権限設計の進め方はClaude Code権限設計ガイドが詳しい。

よくある失敗パターン

❌ Bash(git *) を allow に入れる

⭕ Bash(git commit *) のように、許すサブコマンドを書いてから * を付ける。Bash(git *) はすべての git コマンドを通す。公式ドキュメントは、Bash(git * main) が git -c core.fsmonitor=<script> diff main にも当たり、git に任意のプログラムを実行させる -c まで通してしまう例を挙げている。

❌ CLAUDE.md に「確認せずに実行して」と書く

⭕ 許可はルールかモードで決める。公式ドキュメントのとおり、許可のルールはモデルではなくClaude Code本体が強制する。CLAUDE.md の指示はClaudeが何をしようとするかを変えるだけで、何が許されるかは変えない。

❌ プロジェクトの設定に "defaultMode": "auto" を書く

⭕ ~/.claude/settings.json に書く。プロジェクトの .claude/settings.json と .claude/settings.local.json では "auto" が効かず、組み込みの既定が使われる。プロジェクトの設定に書いた "auto" は誰の環境でも読まれないので、チームでモードをそろえる手段にはならない。

❌ deny に Bash(curl *) を書いたので通信は防げたと考える

⭕ deny ルールは、Claudeがふだん書く形のコマンドを止めるもので、境界の役目はしない。公式ドキュメントの表では、Bash(curl *) は /usr/bin/curl や sh -c 'curl …' を止めない。通信やファイルの範囲を確実に絞るならサンドボックスを使い、コマンドの中身を自分の条件で調べたいなら PreToolUse のフックで判定する。

❌ 手元のPCで --dangerously-skip-permissions を常用する

⭕ 確認を減らしたいだけなら、まず auto を使う。bypassPermissions はコンテナかVMの中に限る。

今日やる3つ

  1. 状態表示を見て、いまのモードを確かめる。⏸ manual mode on なら、上の「Manual で始まる主な理由」を順に確認する。
  2. /permissions を開き、ルールとその保存先を一覧で見る。Bash(git *) のような広すぎるルールがあれば消す。
  3. 毎日許可しているコマンドを2つか3つ allow ルールにし、push のような人が見たい操作は ask ルールにする。

よくある質問

Claude Codeで許可を全部スキップするには?

--dangerously-skip-permissions か --permission-mode bypassPermissions を付けて起動する。公式ドキュメントはコンテナやVMのような隔離した環境でだけ使うよう警告している。deny ルールと、どのモードでも自動では通らない操作には、このモードでも確認や拒否が残る。確認を減らすのが目的なら、先に auto モードを試す。

「今後は聞かない」を選んだのに、また聞かれるのはなぜ?

ファイル編集の許可は保存されず、セッションが終わると消えるからだ。Bashコマンドの許可は保存されるが、ルールは書いた形のコマンドにしか当たらないので、/usr/bin/… のようなパス付きの呼び出しや、つないだコマンドの別の部分は改めて判定される。

許可したルールはどこに保存される?

v2.1.211以降は、gitリポジトリの直下の .claude/settings.local.json に保存される。/permissions を開くと、ルールごとにどの設定ファイルから来ているかが分かり、その画面から消せる。

CLAUDE.md に書けば許可は要らなくなる?

ならない。許可のルールはClaude Code本体が強制するもので、CLAUDE.md の指示では変わらない。許可を変えるには /permissions、設定ファイルのルール、モード、PreToolUse フックのいずれかを使う。

VS Code拡張で毎回聞かれる時はどうする?

入力欄の下のモード表示をクリックして、Manual、Edit automatically、Plan、Auto から選ぶ。拡張は会話を始める時のモードを決めるのにプロジェクトの .claude/settings.json を読まないので、既定を変えるなら拡張の設定の claudeCode.initialPermissionMode を使う。この設定は auto を受け付けないため、Auto で始めたい時は設定を空にしてモード表示から一度 Auto を選ぶ。

auto モードでも聞かれる操作は?

明示した ask ルールに当たる操作、AskUserQuestion、重要なパスを消す rm、permissions.blockReadsOutsideWorkingDirectories を有効にしている時の作業ディレクトリの外の読み取りなどだ。auto が使えない条件に当たって Manual に戻っていないかも、状態表示で確かめる。

あわせて読みたい

運営元 Uravation よりこの事例を自社の業務で試す場合のテーマ選定・評価・本番移行の確認項目を、無料のチェックリストにまとめています。 Claude Code業務自動化PoCチェックリストを受け取る(無料)

参考・出典

Next Step

この事例を、自社の業務に置き換える。

対象業務、利用データ、評価基準、社内展開の順番まで整理すると、AI開発ツール導入の失敗を減らせます。

導入を相談する

チームで学ぶなら: Claude Code 法人研修(2日間ハンズオン) / 1人で習得するなら: 個別指導(週1マンツーマン)