05 権限とセキュリティ

更新日:

Claude はあなたが実行できるコマンドを何でも実行できる。だから「何を聞かずにやってよいか」を決める仕組みがある。

権限モード(Permission modes)

Shift+Tab で切替(VS Code/デスクトップはモード選択UI)。

モード聞かずに実行されるもの向いている場面
Manual(設定値 default)読み取りだけ全部自分で確認したい、慎重な作業
Accept edits(acceptEdits)読み取り + ファイル編集 + mkdir mv cp などの基本コマンド後で git diff でまとめて確認する
Plan(plan)読み取りのみ(編集しない)。調べて計画を出す変更前に調べたい
Auto(auto)ほぼ全部。ただし分類器(別のAI)が危険な操作をブロック長い作業、確認疲れを減らす
dontAsk事前許可したツールだけ。それ以外は拒否CI・スクリプト
bypassPermissions全部(確認なし)隔離されたコンテナ/VMの中だけ
  • Auto が既定の開始モード: Pro/Max/Team は 2026年8月14日から。さらに v2.1.284 以降は、権限モードを設定していなければターミナルと VS Code の対話セッションは Auto で始まる(permissions.defaultMode を書けばそちらが優先)
  • ただし claude -p / Agent SDK は、サードパーティのプロバイダやテレメトリOFFの環境では default(Manual)で始まる(--permission-mode auto で Auto)
  • /auto-mode-setup … プロジェクトと最近のセッションを読んで、分類器にあなたの環境(信頼するドメイン・ツールなど)を教える。/permissions の Auto mode タブで最近のブロック内容とルールを確認・編集できる
  • Auto の分類器がブロックするもの例: 権限の拡大、未知のインフラへの操作、読んだ外部コンテンツに誘導された行動
  • どのモードでも自動承認されないもの: 明示的な ask ルール、AskUserQuestion、重要パスへの rm など
  • 危険な rm の確認は、Auto モードや --dangerously-skip-permissions では2分待って応答がなければ拒否される(放置中に勝手に消されない)
  • 既定の変更: ~/.claude/settings.json に {"permissions": {"defaultMode": "default"}}

プランモードの使い方

  1. Shift+Tab で「⏸ plan mode on」、または /plan 説明、claude --permission-mode plan
  2. Claude が調査して計画を提示
  3. 選択肢: 「Yes, and use auto mode」「Yes, manually approve edits」など。Ctrl+G でプランを直接編集してから承認も可

権限ルール(allow / ask / deny)

/permissions で管理、または settings.json に書く。

{
  "permissions": {
    "allow": ["Bash(npm run *)", "Bash(git commit *)", "Read"],
    "ask":   ["Bash(git push *)"],
    "deny":  ["Read(./.env)", "WebFetch(domain:example.com)"]
  }
}
  • 書式: ツール名 または ツール名(指定子)
  • * はワイルドカード。サブコマンドの後に置く(Bash(git log *))
  • deny はどのモードでも効く(bypass でも)
  • 引数まで指定できる: Agent(model:opus) のように ツール(パラメータ:値)
  • MCP ツールは mcp__<サーバー名>__* のようにサーバーの正式名で書く(v2.1.299 から、名前の前方一致で別サーバーまで許可されることはなくなった)
  • 許可の「Yes, and don't ask again」を選ぶと .claude/settings.local.json に allow ルールが保存される
  • 読み取り専用の組み込みコマンド(ls cat git status など)は最初から許可
  • /fewer-permission-prompts … 過去の履歴から安全な読み取りコマンドの許可リストを提案

サンドボックス(Bash sandbox)

  • OSレベルで「触れるファイル」「通信できるドメイン」を制限し、その範囲内ならコマンドを確認なしで実行させる
  • macOS(Seatbelt)、Linux、WSL2 で動く(ネイティブWindowsは不可)
  • /sandbox で ON/OFF(モード名は「Sandbox commands」)。権限モードとは独立して組み合わせられる
  • サンドボックスを有効にしたのに動かせない環境では、除外コマンドが書き込む前に確認が入る(サンドボックスなしで黙って実行することはしない)
  • さらに強い隔離: Dev Container、Docker、VM

プロンプトインジェクション対策

Web ページやファイルに「〜を実行せよ」と書かれていても、それはデータ。公式の対策:

  • Manual モードでは危険な操作は承認制。curl wget などWebから取得するコマンドは既定で自動承認されない
  • 許可リストに入っていても、怪しいコマンド(コマンドインジェクションの疑い)は再確認される
  • Web 取得(WebFetch)は別のコンテキストウィンドウで処理し、悪意ある指示が混ざりにくくしている
  • 初めてのコードベースや新しい MCP サーバーは「信頼しますか」の確認(ワークスペーストラスト)が出る(-p の非対話実行では出ない)
  • APIキー等は macOS ではキーチェーンに保存
  • 利用者側の心得(公式): ①承認前にコマンドを読む ②信頼できない内容を直接パイプで渡さない ③重要ファイルの変更を確認 ④外部Webを扱うスクリプトはVMで ⑤怪しい挙動は /feedback で報告。加えて .mcp.json やプロジェクトの Skills の allowed-tools も確認しておく

セキュリティのベストプラクティス(公式より)

  • 機密情報は .env などに置き、deny ルールで読ませない
  • MCP サーバーは信頼できるものだけ(Anthropic は第三者サーバーを保証しない)
  • プラグインは Hook や MCP を実行できる → インストール前に中身を確認
  • --dangerously-skip-permissions はコンテナ内・非rootユーザーで
  • 本番環境の認証情報を持たせない。外部への影響(DB・デプロイ)はチェックポイントで戻せない

セキュリティ関連の機能

  • /security-review … ブランチの差分をセキュリティ観点でレビュー
  • security-guidance プラグイン … Claude が書いたコードをその場で自己レビュー・修正
  • Claude Security プラグイン … コードベース全体の脆弱性スキャン(マルチエージェント)
  • Code Review … GitHub PR の自動レビュー(Team/Enterprise)
  • OpenTelemetry の claude_code.safety_event … 権限ルール・Auto モード・Hook・サンドボックスが止めた操作を記録(組織の監査向け)

関連