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"}}
プランモードの使い方
Shift+Tabで「⏸ plan mode on」、または/plan 説明、claude --permission-mode plan- Claude が調査して計画を提示
- 選択肢: 「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 ルールが保存される - 読み取り専用の組み込みコマンド(
lscatgit statusなど)は最初から許可 /fewer-permission-prompts… 過去の履歴から安全な読み取りコマンドの許可リストを提案
サンドボックス(Bash sandbox)
- OSレベルで「触れるファイル」「通信できるドメイン」を制限し、その範囲内ならコマンドを確認なしで実行させる
- macOS(Seatbelt)、Linux、WSL2 で動く(ネイティブWindowsは不可)
/sandboxで ON/OFF(モード名は「Sandbox commands」)。権限モードとは独立して組み合わせられる- サンドボックスを有効にしたのに動かせない環境では、除外コマンドが書き込む前に確認が入る(サンドボックスなしで黙って実行することはしない)
- さらに強い隔離: Dev Container、Docker、VM
プロンプトインジェクション対策
Web ページやファイルに「〜を実行せよ」と書かれていても、それはデータ。公式の対策:
- Manual モードでは危険な操作は承認制。
curlwgetなど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・サンドボックスが止めた操作を記録(組織の監査向け)