Claude Codeの仕組み講座(講師のためのエンジニア水準)
区分4 安全と設定★★★AIは、道具(ファイルの編集やコマンドの実行など、現実に働きかける手段)で、あなたのパソコンの中身を書き換えられます。 そこで、危ない操作の前に「やってよいですか」と確認する関所があります。これが許可(パーミッション)です。
たとえ話にします。 事務所の稟議(りんぎ)です。 小さな事は担当者の判断で進め、大きな事は上司の承認を取ってから動きます。
混ざりやすいので、先に分けます。
| 決める物 | たとえ | |
|---|---|---|
| 許可モード | 全体として、どれくらい確認するか | 稟議の厳しさの基本設定 |
| 許可ルール | 個々の操作ごとの「いい・ダメ」 | 個別の取り決め(この件は決裁不要、この件は禁止) |
モードが基本の厳しさ、ルールが例外です。 ルールはモードの上に重ねて効きます。
もう一つ大事な区別があります。 CLAUDE.md の「〜しないで」は、AIへのお願いです。 許可ルールは、Claude Code 本体が実行の直前に判定する鍵です。AIの気分や会話の記憶に左右されません。
ルールは3種類です。
複数のルールに当てはまる時は、deny → ask → allow の順に調べ、最初に当たった物で決まります。 ルールが細かいか広いかは関係ありません。
Bash は、シェル(ターミナルでコマンドを打ち込んで動かす画面)でコマンドを動かす道具です。
たとえば Bash(aws *)(aws は Amazon のクラウドを操作するコマンド)を deny にすると、Bash(aws s3 ls) を allow にしても止まります。
allow は deny の例外を作れません。
同じく、ask と allow が両方当たる時は、ask(確認)が勝ちます。
設定ファイルが別でも同じです。 ユーザー設定で allow しても、作業場の設定で deny されていれば止まります。 逆に、ユーザー設定の deny は、作業場の allow より強いです。 どの設定ファイルの deny も、allow より先に調べられるからです。
ルールは 道具名(中身) の形です。
| 書き方 | 意味 |
|---|---|
Bash |
コマンドの実行、全部 |
Bash(npm run build) |
このコマンドだけ(npm は、JavaScript の部品を入れたり動かしたりするコマンド) |
Bash(npm run *) |
npm run で始まる物(* は何でも一致) |
Read(./.env) |
.env を読むこと |
WebFetch(domain:example.com) |
example.com へのアクセス |
* の位置は大事です。Bash(git log *) は git log だけを許し、Bash(git *) は git の全部を許します。git は、ファイルの変更履歴を管理する道具です。
サブコマンド(git log の log のように、何をするかを決める語)の後ろに * を置くのが基本です。
ファイルの場所は、gitignore(git に無視させるファイルを指定する書き方)と同じ決まりで、4種類あります。
| 書き出し | 意味 |
|---|---|
// で始まる |
ファイルシステム全体の絶対パス |
~/ で始まる |
ホームフォルダから |
/ で始まる |
設定ファイルの置き場を基準にした位置 |
./ か何もなし |
いまの作業場から |
/Users/... のように1本のスラッシュで始めても、絶対パス(パソコンの一番上から全部書いた場所)にはなりません。間違えやすいので注意してください。
「この操作を止めたい/聞かずに通したい」と、AIに頼めば書いてくれます。
頼み方の例:「git push は必ず止まるように、deny のルールを入れて」。
Bash のルールは「コマンドの文字」と照合します。
たとえば Bash(git push *) を deny にしても、git -C . push のように書き方を変えた物は一致しません(公式が「ルールが一致しない例」として書いています)。
一方、Read と Edit の deny は強めです。
Claude の読み書きの道具だけでなく、Bash の cat・sed など、認識できるファイル操作や、リダイレクト(> file で、コマンドの出力をファイルへ書き込む書き方)にも効きます。
ただし、ファイル名を書かずに中身を読むコマンド(フォルダ全体を検索するなど)は、止められないことがあります。
だから、守りたい物には層を重ねます。 deny の鍵、フック(決まった場面で自動で動く処理。No.10)、OS(パソコンの基本ソフト)による囲い(No.14)を併用します。
○ deny の特徴:道具の名前だけの deny(Bash など)は、その道具がAIの視界から消えます。Bash(rm *) のような中身つきの deny は、道具は残り、当てはまる呼び出しだけを止めます
○ 関係する単元:No.10 フック、No.15 設定ファイルの優先順位
会話の途中で切り替えられます(ターミナルでは Shift+Tab)。 公式のモードは次のとおりです。設定上の名前を、かっこで添えます。
| モード | 聞かずに通る範囲 | 向く場面 |
|---|---|---|
毎回確認(Manual。設定名 default) |
読み取りだけ | 一つ一つ確かめたい作業 |
編集を自動承認(acceptEdits) |
読み取り、ファイル編集、mkdir・mv など簡単な操作 |
手元で結果を見ながら進める時 |
計画(plan) |
読み取りだけ。ファイルは編集しない | 変える前に調べて、案を出させる時 |
自動(auto) |
ほぼ全部。ただし裏で別のAI(分類器。詳しくは No.14)が見張る | 長い作業で確認疲れを減らす時 |
聞かない(dontAsk) |
事前に許可した物だけ。聞く場面は全て拒否 | 無人で動かす固定の作業 |
全部飛ばす(bypassPermissions) |
ほぼ全部 | 隔離された容器や仮想マシン(パソコンの中に作る別のパソコン)の中だけ |
自動モードは次の No.14 で詳しく扱います。 2026年10月時点で、対話の画面では自動モードが標準の開始モードです。
モードとルールの関係は、次のとおりです。
.git や .claude のような、Claude Code 自身の設定や履歴の置き場への書き込みは、「保護された場所」として特別に扱われ、allow ルールでは事前許可できませんつまり、モードで基本の厳しさを選び、守りたい物だけルールで締めるという分担です。
無人で動かすなら、dontAsk と、許可した物だけを allow に書く組み合わせが基本の考え方です。
コマンドの -p(画面なしで実行するオプション)で動かす時の具体的な組み合わせは、No.16 で扱います。どちらも「聞かれる場面は拒否する」点が同じです。
会社の管理者は、管理設定でルールを配れます。
管理設定の deny は、ユーザーも作業場の設定も、コマンドの起動オプションも上書きできません。
自動モードや「全部飛ばす」を使えなくする設定(disableAutoMode など)も、そこに置かれます。
○ 受講生によく聞かれる質問:「許可を聞かれないのは安全?」
→ モードとルール次第です。自動モードは裏で見張りがありますが、完全な保証ではありません。守りたい物には deny を置く、と答えます
○ 受講生によく聞かれる質問:「CLAUDE.md に書けば禁止にならない?」
→ お願いなので、保証はありません。deny は本体が実行前に止める鍵です。絶対に外せない物は deny へ
○ 受講生によく聞かれる質問:「allow を足したのに止まる」
→ どこかに deny か ask が当たっている可能性が高いです。/permissions で全ルールと置き場所を一覧できます
○ 数字・名前は2026年10月時点の公式。モードの名前や増減は版で変わります
判定は deny → ask → allow で、最初に当たった物が勝つ。モードは基本の厳しさ、ルールは例外。守りたい物は CLAUDE.md でなく deny に。
問1 Bash(git push *) を deny にし、Bash(git push origin main) を allow にしました。git push origin main はどうなりますか?
問2 「共有の設定に、絶対に deploy させたくない」と受講生が言いました。最も確実なのは?
問3 「全部飛ばす(bypassPermissions)」モードで、deny ルールに当たる操作を頼みました。どうなりますか?
問4 無人で毎晩動かす定型作業に、最も向く考え方はどれですか?
出典:Claude Code 公式ドキュメント「Configure permissions」(https://code.claude.com/docs/en/permissions)「Choose a permission mode」(https://code.claude.com/docs/en/permission-modes)「How Claude Code works」(https://code.claude.com/docs/en/how-claude-code-works)。2026年10月13日に確認