コンテンツにスキップ

第4章 パーミッションとサンドボックス

ハーネスの最も重要な責務は 安全制御 です。
モデルがどれだけ賢くても、rm -rf を無確認で実行されては困ります。

Claude Code は「ツール実行の前に必ずハーネスの許可判定を通す」設計になっており、その判定ルールをユーザーが細かく制御できます。


セッション全体の「許可の厳しさ」を決めるのがパーミッションモードです。
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 に定義できます。

.claude/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)— そのツール全体に適用

パーミッションとは別に、モデルに 見せない ための仕組みもあります。

  • permissions.denyRead(./.env) のように書くと、Claude はそのファイルを読めません
  • ハーネスはコンテキストに載る前段階でブロックするため、「うっかり読んで API キーが会話履歴に入る」ことを防げます
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./**/credentials.json)"
]
}
}

近年の Claude Code は、Bash コマンドを サンドボックス(OSレベルの隔離機構)内で実行する機能を備えています。

  • ファイル書き込みは作業ディレクトリ配下などに制限
  • ネットワークアクセスを制限(許可ドメインの設定が可能)
  • サンドボックス内で安全に実行できるコマンドは、許可プロンプトなしで実行される

これにより「確認プロンプトの回数を減らしつつ、安全性は保つ」というバランスを実現しています。
サンドボックスで実行できない操作が必要な場合、ハーネスは明示的に昇格の許可を求めます。


claude.ai/code やクラウド実行(リモートエージェント)では、そもそも実行環境全体が 使い捨てのサンドボックス VM です。

  • ローカルのファイルには一切アクセスできない
  • git リポジトリのクローンに対して作業し、結果は PR として提出される
  • この場合、パーミッションモードは緩め(自動許可)でも安全性が担保される

「どこで動いているか」によって、適切なパーミッション設定が変わることを覚えておいてください。


  • すべてのツール実行はハーネスの許可判定を通る。
    モードで大枠、ルールで詳細を制御する
  • ルールは deny → ask → allow の順で評価され、Bash(cmd:*) やパスパターンで柔軟に書ける
  • 機密ファイルは deny ルールで「読ませない」ことができる
  • サンドボックスにより「確認を減らしつつ安全」を実現。
    隔離環境なら bypassPermissions も選択肢になる