No.01 で、AIは道具で現実を変えられると学びました。そこで、危ない操作の前に「やっていいですか」と確認する仕組みがあります。 事務所でいえば、「稟議(りんぎ)」です。小さな事は担当者の判断で進め、大きな事は上司の承認を取ってから動きます。
| 何を決める | |
|---|---|
| 許可モード | 全体の「確認の多さ」の基本設定 |
| 許可ルール(allow/deny) | 特定の操作ごとの「いい・ダメ」の個別設定 |
| CLAUDE.md の指示 | AIが「やろうとすること」への希望(止める力はない) |
内容は大きく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 にそうした許可が入っています。
ルールは 道具名(中身) の形で書きます。たとえば Bash(npm run *) は「npm run から始まるコマンド」、Read(./.env) は「.env を読む」です。
最初に当たったルールで決まります。deny が一番強いです。
広い deny は、細かい allow で例外を作れません。たとえば Bash(aws *) を deny にすれば、Bash(aws s3 ls) を allow にしても止まります。
許可ルールは、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 の実物(中身の値は載せていません)