Claude Codeの仕組み講座

区分1 毎日の土台★★

No.04 許可と安全装置

AIが「やっていいですか」と止まる理由と、止まり方を決める仕組みの単元です。出る頻度は毎日ですが、細かい書き方は次のNo.05でもう一度出てくるので、この単元は考え方を中心に、少しゆっくりめでやります。
目次
  1. 第0章 前提知識
  2. 第1章 許可モード
  3. 第2章 settings.json の allow と deny
  4. 確認問題

第0章 前提知識

① 許可 :AIが現実を変える前の、確認の関所

No.01 で、AIは道具で現実を変えられると学びました。そこで、危ない操作の前に「やっていいですか」と確認する仕組みがあります。 事務所でいえば、「稟議(りんぎ)」です。小さな事は担当者の判断で進め、大きな事は上司の承認を取ってから動きます。

② 似た言葉との違い

何を決める
許可モード 全体の「確認の多さ」の基本設定
許可ルール(allow/deny) 特定の操作ごとの「いい・ダメ」の個別設定
CLAUDE.md の指示 AIが「やろうとすること」への希望(止める力はない)

第1章 許可モード

内容は大きく3つです。

① モードは「確認の多さ」を選ぶスイッチ 必ず覚える

公式の主なモードは次のとおりです。会話の中で切り替えられます(ターミナルでは Shift+Tab、デスクトップアプリでは画面のモード選択)。

モード 動き
毎回確認する(Manual。設定名は default) ファイルの編集やコマンドの前に聞く。読み取りだけは聞かない
編集を自動で許可(Accept edits) ファイルの編集と、フォルダ作りや移動などの簡単な操作は聞かない
計画(Plan) 調べて計画を出すだけ。ファイルは編集しない
自動(Auto) 普段は聞かず、別のモデル(分類器)が背後でチェックして、危ない操作を止める

ほかに、確認が要る操作を全部断る dontAsk と、確認を全部飛ばす bypassPermissions があります。後者は「容器や仮想環境の中だけ」と公式が書いている危ないモードなので、使わないでください。

手元の実物:あなたの ~/.claude/settings.json では、標準のモードが auto になっています。だから普段は静かに進み、危なそうな操作の時だけ止まります。

② 自動モードが止める物 必ず覚える

自動モードでは、分類器が操作を見て、危ない物を止めます。公式が「標準で止める」と書いている例は、次のような物です。

「戻せない」「外に出る」操作が止まる、と覚えると分かりやすいです。止まったのは故障ではなく、仕組みが働いたのです。

○ 保護された場所:.git や .claude など、AIの設定や履歴の置き場は、特に慎重に扱われます。自動モードでも、その場所への書き込みは確認や審査の対象です。設定ファイルの書き換えで止まるのは、このためです。
○ 関係する単元:No.01(道具が現実を変える)

③ 確認では「次から聞かない」も選べる さらっと

確認の画面で「今後は聞かない」を選ぶと、そのコマンドを許可するルールが、作業場の .claude/settings.local.json に保存されます(保存できる種類の時)。手元の作業場にも、settings.local.json にそうした許可が入っています。

第2章 settings.json の allow と deny

① 3種類のルール 必ず覚える

ルールは 道具名(中身) の形で書きます。たとえば Bash(npm run *) は「npm run から始まるコマンド」、Read(./.env) は「.env を読む」です。

② 評価の順番は deny → ask → allow 必ず覚える

最初に当たったルールで決まります。deny が一番強いです。 広い deny は、細かい allow で例外を作れません。たとえば Bash(aws *) を deny にすれば、Bash(aws s3 ls) を allow にしても止まります。

③ ルールは CLAUDE.md より強い 必ず覚える

許可ルールは、AIの判断ではなく、Claude Code 本体が強制します。CLAUDE.md は毎回読まれる決まりですが、AIへの「お願い」です。deny は「鍵」です。絶対に外せない事は、CLAUDE.md だけに頼らず、deny(またはフック。No.06)で仕組みにします。

置き場所は設定ファイルです。ユーザー全体は ~/.claude/settings.json、作業場は .claude/settings.json、自分だけの作業場用は .claude/settings.local.json。置き場所の使い分けは、次の No.05 で詳しく扱います。

許可モード=確認の多さの基本設定。allow/ask/deny=個別の設定で、deny が最強。止めたい事は CLAUDE.md でなく deny で。

確認問題

問1 AIが「ファイルを消していいですか」と止まりました。この止まり方の説明として正しいのは?

問2 「git push(作った物を共有先へ送る操作)だけは絶対にさせたくない」。もっとも確実なのは?

問3 Bash(aws *) を deny にしたまま、Bash(aws s3 ls) を allow にしました。aws s3 ls はどうなる?

出典:Claude Code 公式ドキュメント「Configure permissions」(https://code.claude.com/docs/en/permissions)「Choose a permission mode」(https://code.claude.com/docs/en/permission-modes)/手元の ~/.claude/settings.json・作業場の .claude/settings.local.json の実物(中身の値は載せていません)