メインコンテンツへスキップ
7 / 26|6分で読めます

パーミッションモデル — 安全な自律性のバランス

Claude Codeはなぜ毎回許可を求めるのか。パーミッションの仕組み、自動承認の設定、そしてセキュリティの考え方を扱う。

自律性と安全性のバランス。Claude Codeのパーミッションモデルは、AIに「どこまで自由にさせるか」を人間が制御する仕組みだ。


なぜパーミッションが必要なのか

Claude Codeは強力なツールである。ファイルを削除し、コマンドを実行し、Gitにpushできる。

この「強力さ」は、同時に「危険さ」でもある。

  • 間違ったファイルを削除するかもしれない
  • 意図しないコマンドを実行するかもしれない
  • 機密データを含むファイルをコミットするかもしれない

パーミッションモデルは、AIの能力を制限するためではなく、人間がAIの行動を「監督」するためのものだ。


パーミッションの動作

Claude Codeがツールを使おうとすると、以下のフローが発生する。

1. Claude Code: 「Editツールで src/app.tsx を編集したい」
2. パーミッションチェック:
   - allow リストにマッチ → 自動承認 → 実行
   - deny リストにマッチ → 自動拒否 → 不実行
   - どちらにもマッチしない → ユーザーに確認
3. ユーザーの選択:
   - Allow → 今回だけ許可
   - Always allow → 以後このツールを自動承認
   - Deny → 今回だけ拒否

パーミッションモード

Claude Codeには複数の実行モードがある。

default(デフォルト)

すべてのツール使用で確認が入る。settings.jsonの allow / deny 設定は適用される。

acceptEdits

ファイルの読み書き(Read、Write、Edit)は自動承認。Bashコマンドは引き続き確認が入る。

こんな人に: ファイル操作は信頼するが、コマンド実行は確認したい。

bypassPermissions

すべてのツール使用が自動承認される。確認は一切入らない。

bypassPermissions は上級者向け

このモードは、Claude Codeの行動を十分に理解した上級者のみが使うべきだ。特に医療データを扱うプロジェクトでは、このモードの使用は推奨しない。

plan

読み取り系ツールのみが使える。ファイル編集やコマンド実行はできない。計画立案やコードベース調査に使う。


セキュリティの考え方

Human in the Loop

Claude Codeの設計思想は「Human in the Loop」(人間が常にループの中にいる)である。

AIがどれだけ賢くても、最終的な判断と承認は人間が行う。これは、医療における「AIの診断支援」と同じ構造だ。AIが鑑別診断リストを提示しても、最終診断を下すのは医師だ。

最小権限の原則

必要なツールだけを許可し、それ以外は確認を求める。

{
  "permissions": {
    "allow": ["Read", "Glob", "Grep"],
    "deny": ["Bash(rm *)", "Bash(git push --force *)"]
  }
}

破壊的操作の保護

Claude Code自体にも安全装置が組み込まれている。

  • git push --force は原則として使わない
  • rm -rf のような破壊的コマンドは使用前に確認する
  • 既存ファイルの上書き前に内容を読み取る
  • コミット前にsecretのチェックを行う

医療プロジェクトでの推奨設定

患者データや医療情報を扱うプロジェクトでは、以下を推奨する。

  1. bypassPermissions は絶対に使わない
  2. ファイル書き込みは毎回確認する
  3. Bashコマンドは安全なものだけを allow に追加する
  4. .env ファイルや認証情報は deny に追加する
{
  "permissions": {
    "allow": [
      "Read",
      "Glob",
      "Grep",
      "Bash(npm test)",
      "Bash(npm run lint)"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(curl *)",
      "Bash(wget *)"
    ]
  }
}

パーミッションの段階的緩和

Claude Codeに慣れるにつれて、パーミッションを段階的に緩和していくのが理想的な流れだ。

ステージ1: すべて確認

{ "permissions": { "allow": [] } }

AIのすべての行動を観察し、何をしようとしているかを理解する。

ステージ2: 読み取りを自動化

{
  "permissions": {
    "allow": ["Read", "Glob", "Grep"]
  }
}

ファイルの読み取りは安全なので自動承認する。

ステージ3: 編集を自動化

{
  "permissions": {
    "allow": ["Read", "Glob", "Grep", "Edit", "Write"]
  }
}

ファイル操作全般を信頼する。

ステージ4: 安全なコマンドを自動化

{
  "permissions": {
    "allow": [
      "Read", "Glob", "Grep", "Edit", "Write",
      "Bash(npm *)", "Bash(git status)", "Bash(git diff *)"
    ]
  }
}

テスト実行やGit状態確認を自動化する。

急がず、段階的に信頼を構築していく。 これが、Claude Codeとの最も安全で効果的な付き合い方である。

この章のポイント

  • パーミッションはAIの能力制限ではなく、人間による「監督」の仕組みである
  • default、acceptEdits、bypassPermissions、plan の4つのモードがある
  • settings.jsonのallow/denyでツール単位・コマンドパターン単位で制御できる
  • 医療プロジェクトではbypassPermissionsを使わず、破壊的操作をdenyに追加する
  • 慣れに応じて段階的にパーミッションを緩和していくのが理想的