第4章 パーミッションとサンドボックス
ハーネスの最も重要な責務は 安全制御 です。
モデルがどれだけ賢くても、rm -rf を無確認で実行されては困ります。
Claude Code は「ツール実行の前に必ずハーネスの許可判定を通す」設計になっており、その判定ルールをユーザーが細かく制御できます。
4.1 パーミッションモード
Section titled “4.1 パーミッションモード”セッション全体の「許可の厳しさ」を決めるのがパーミッションモードです。
Shift+Tab で切り替えられます。
| モード | 動作 | 想定シーン |
|---|---|---|
| default | 書き込み・実行系ツールは初回に許可を求める | 通常の開発 |
| acceptEdits | ファイル編集は自動許可、Bash などは引き続き確認 | 編集主体の作業を高速化 |
| plan | 読み取り専用。 計画を立てて提示するまで変更操作を行わない | 大きな変更前の設計・調査 |
| bypassPermissions | すべて自動許可(確認なし) | 隔離環境・CI での自動実行 |
flowchart LR
A["plan<br/>(読み取りのみ)"] --> B["default<br/>(都度確認)"]
B --> C["acceptEdits<br/>(編集は自動)"]
C --> D["bypassPermissions<br/>(全自動)"]
style A fill:#e8f5e9
style D fill:#ffebee
4.2 許可ルール — allow / ask / deny
Section titled “4.2 許可ルール — allow / ask / deny”モードとは別に、ツール単位・パターン単位 の細かいルールを settings.json に定義できます。
{ "permissions": { "allow": [ "Bash(pnpm test:*)", "Bash(pnpm build)", "Bash(git status)", "Bash(git diff:*)", "Read(~/.zshrc)" ], "ask": [ "Bash(git push:*)" ], "deny": [ "Bash(rm -rf:*)", "Read(./.env)", "Read(./secrets/**)", "WebFetch" ] }}ルールの評価は deny → ask → allow の優先順位で行われます。
| ルール | 動作 |
|---|---|
| deny | 常に拒否(確認プロンプトも出ない) |
| ask | 常に確認プロンプトを表示 |
| allow | 確認なしで自動許可 |
書式のポイント:
Bash(pnpm test:*)—pnpm testで始まる任意のコマンドに一致(:*がプレフィックス一致)Read(./secrets/**)— ファイル系ツールは gitignore 形式のパスパターン- ツール名のみ(例
WebFetch)— そのツール全体に適用
4.3 機密情報の保護
Section titled “4.3 機密情報の保護”パーミッションとは別に、モデルに 見せない ための仕組みもあります。
permissions.denyにRead(./.env)のように書くと、Claude はそのファイルを読めません- ハーネスはコンテキストに載る前段階でブロックするため、「うっかり読んで API キーが会話履歴に入る」ことを防げます
{ "permissions": { "deny": [ "Read(./.env)", "Read(./.env.*)", "Read(./**/credentials.json)" ] }}4.4 サンドボックス実行
Section titled “4.4 サンドボックス実行”近年の Claude Code は、Bash コマンドを サンドボックス(OSレベルの隔離機構)内で実行する機能を備えています。
- ファイル書き込みは作業ディレクトリ配下などに制限
- ネットワークアクセスを制限(許可ドメインの設定が可能)
- サンドボックス内で安全に実行できるコマンドは、許可プロンプトなしで実行される
これにより「確認プロンプトの回数を減らしつつ、安全性は保つ」というバランスを実現しています。
サンドボックスで実行できない操作が必要な場合、ハーネスは明示的に昇格の許可を求めます。
4.5 Web 版・クラウド実行の隔離
Section titled “4.5 Web 版・クラウド実行の隔離”claude.ai/code やクラウド実行(リモートエージェント)では、そもそも実行環境全体が 使い捨てのサンドボックス VM です。
- ローカルのファイルには一切アクセスできない
- git リポジトリのクローンに対して作業し、結果は PR として提出される
- この場合、パーミッションモードは緩め(自動許可)でも安全性が担保される
「どこで動いているか」によって、適切なパーミッション設定が変わることを覚えておいてください。
- すべてのツール実行はハーネスの許可判定を通る。
モードで大枠、ルールで詳細を制御する - ルールは deny → ask → allow の順で評価され、
Bash(cmd:*)やパスパターンで柔軟に書ける - 機密ファイルは deny ルールで「読ませない」ことができる
- サンドボックスにより「確認を減らしつつ安全」を実現。
隔離環境なら bypassPermissions も選択肢になる