Security
概要
Claude Code のセキュリティ設計(permission ベースのアーキテクチャ、prompt injection 対策、MCP・クラウド実行のセキュリティ)と、安全に使うための公式のベストプラクティス。
仕様
permission ベースのアーキテクチャ
- 既定では厳格な read-only の権限で動作する。ファイル編集・テスト実行・コマンド実行などが必要になると明示的に許可を求める
- システムを変更しうる Bash コマンドの実行前に承認が必要。
ls/cat/git statusなどの組み込みの read-only コマンド群はプロンプトなしで実行される
組み込みの保護
| 保護 | 内容 |
|---|---|
| Sandboxed bash tool | ファイルシステムとネットワークを分離して Bash コマンドを実行する。/sandbox で境界を設定する |
| Working directory boundary | 起動したフォルダとそのサブフォルダにのみ書き込める。親ディレクトリのファイルは明示的な許可なしに変更できない。Read / Grep / Glob による境界外の読み取りは承認プロンプト後に可能。additional directories で境界を広げてプロンプトを省ける。sandbox の denyRead ルール(sandboxing 有効時のみ適用)で read-only Bash コマンドの広い読み取りを制限できる |
| Prompt fatigue mitigation | よく使う安全なコマンドを user / codebase / organization 単位で allowlist にできる |
| Accept Edits mode | ファイル編集と、working directory 内のパスに対する mkdir / touch / rm / mv / cp / sed など固定のファイルシステム Bash コマンドを自動承認する。それ以外の Bash コマンドと範囲外のパスは引き続きプロンプトを出す |
prompt injection 対策
中核の保護:
- Permission system: 機微な操作には明示的な承認が必要
- Context-aware analysis: リクエスト全体を解析して有害な指示を検出する
- Input sanitization: ユーザー入力を処理してコマンドインジェクションを防ぐ
- Network command approval:
curl/wgetなどウェブから内容を取得するコマンドは既定で自動承認されない。他の非 read-only Bash コマンドと同様にプロンプトが出るため、1 回だけ承認するかBash(curl *)のような明示的な allow ルールを追加できる。完全にブロックするにはpermissions.denyに追加する
追加の保護:
- Network request approval: ネットワークリクエストを行うツールは既定でユーザー承認が必要
- Isolated context windows: web fetch は別のコンテキストウィンドウを使う
- Trust verification: 初回のコードベース実行と新しい MCP サーバーには trust verification が必要
-pフラグによる非対話実行では trust verification は無効- ホームディレクトリで直接 Claude Code を起動した場合、trust の受け入れは現在のセッション限りでディスクに書かれず、起動のたびにプロンプトが再表示される。永続化する設定は無い。プロジェクトのサブディレクトリから起動すればディレクトリ単位で保存される
- Command injection detection: 疑わしい bash コマンドは、以前に allowlist されていても手動承認が必要
- Fail-closed matching: マッチしないコマンドは既定で手動承認が必要
- Natural language descriptions: 複雑な bash コマンドには説明が付く
- Secure credential storage: API キーとトークンは、利用可能なら macOS Keychain に保存され、Windows と Linux ではファイル権限で保護される
MCP セキュリティ
- 許可する MCP サーバーの一覧は、ソース管理にチェックインする Claude Code の設定としてソースコード内で構成する
- 自作の MCP サーバー、または信頼できる提供元の MCP サーバーの利用が推奨されている
- MCP サーバーに対して Claude Code の permission を構成できる
- Anthropic は Anthropic Directory への追加前に listing criteria に照らして connector をレビューするが、MCP サーバーのセキュリティ監査や管理は行わない
クラウド実行のセキュリティ
Anthropic ホストの環境の場合:
-
Isolated virtual machines: 各クラウドセッションは Anthropic 管理の分離 VM で動く
-
Network access controls: ネットワークアクセスは既定で制限され、無効化や特定ドメインのみ許可に設定できる
-
Credential protection: 認証はセキュアプロキシ経由で、サンドボックス内ではスコープ付き認証情報を使い、それが実際の GitHub 認証トークンに変換される
-
Branch restrictions: git push は現在の作業ブランチに制限される
-
Audit logging: クラウドセッションの全操作がコンプライアンス・監査目的で記録される
-
Automatic cleanup: 一定時間非アクティブなセッション VM は回収される
-
組織が self-hosted environment にルーティングしたセッションは自社インフラで動き、分離・ネットワーク egress・git 認証情報は自社デプロイの責任範囲
-
Remote Control はローカルマシン上の Claude Code プロセスにウェブ UI が接続する方式。コード実行とファイルアクセスはローカルに留まり、セッションのトラフィックは TLS で Anthropic API を通る。接続中はデバイス間同期のためセッションのトランスクリプトが Anthropic のサーバーに保存される。クラウド VM やサンドボックスは関与しない。接続には用途ごとに限定され独立して失効する短命の認証情報を複数使う
ベストプラクティス(公式記載)
信頼できないコンテンツを扱う場合:
- 承認前に提案されたコマンドをレビューする
- 信頼できないコンテンツを Claude に直接パイプしない
- 重要なファイルへの変更案を検証する
- 外部ウェブサービスとやり取りする場合は特に、スクリプト実行やツール呼び出しを VM 内で行う
- 不審な挙動は
/feedbackで報告する
機微なコードを扱う場合:
- 承認前にすべての変更案をレビューする
- 機微なリポジトリではプロジェクト固有の permission 設定を使う
- 追加の分離のために dev container を検討する
/permissionsで permission 設定を定期的に監査する
チーム:
- managed settings で組織標準を強制する
- 承認済みの permission 構成をバージョン管理で共有する
- チームメンバーにベストプラクティスを教育する
- OpenTelemetry metrics で利用状況を監視する
ConfigChangehook でセッション中の設定変更を監査・ブロックする
脆弱性の報告
- 公開しない
- HackerOne プログラム経由で報告する
- 詳細な再現手順を含める
- 公開前に対応の時間を設ける
制約・注意点
- Windows の WebDAV: Windows で Claude Code を動かす場合、WebDAV を有効にすることや、WebDAV のサブディレクトリを含みうる
\\*のようなパスへのアクセスを Claude Code に許可することは推奨されない。WebDAV を有効にすると permission system を迂回してリモートホストへのネットワークリクエストを発生させうる - これらの保護はリスクを大きく下げるが、いかなるシステムもすべての攻撃に完全に耐えるわけではない
関連
facts/claude-code/permissions.mdfacts/claude-code/permission-modes.mdfacts/claude-code/sandboxing.mdfacts/claude-code/mcp.mdfacts/claude-code/settings.mdfacts/claude-code/hooks.md