はじめに
こんばんは、mirukyです。
みなさん、Claude Codeは使っていますか。
Claude Codeは非常に強力なAIコーディングエージェントですが、ターミナルコマンドの実行やファイルの読み書きができるため、セキュリティ設定を怠ると思わぬリスクを招きます。
本記事では、Claude Codeを安全に使うために今すぐ設定すべき10項目をまとめましたので、共有できればと思います。
本記事は2026年3月時点のClaude Code公式ドキュメントに基づいています。
① サンドボックスを有効化する
最も重要な設定です。
サンドボックスを有効にすると、Claude Codeが実行するBashコマンドがOS レベルで隔離され、ファイルシステムやネットワークへのアクセスが制限されます。
// .claude/settings.json
{
"sandbox": {
"enabled": true
}
}
macOSではSeatbelt、LinuxではBubble Wrapによるサンドボックスが使われます。有効化後は/sandboxコマンドで状態を確認できます。
サンドボックスは2025年後半に導入された比較的新しい機能です。まだ有効化していない方は、最優先で設定してください。
② サンドボックスの脱出口を塞ぐ
サンドボックスにはデフォルトで「脱出口(escape hatch)」が用意されており、特定のコマンドがサンドボックスの外で実行される場合があります。これを完全に塞ぎましょう。
{
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false
}
}
allowUnsandboxedCommands: falseにすることで、dangerouslyDisableSandboxパラメータによるサンドボックス回避が完全に無効化されます。
③ 危険なコマンドをdenyルールでブロックする
permissions.denyを使って、Claude Codeに実行させたくないコマンドを明示的にブロックできます。
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(curl *)",
"Bash(wget *)",
"Bash(git push *)",
"Bash(chmod 777 *)"
]
}
}
curlとwgetはデフォルトでもブロックされていますが、明示的にdenyルールへ追加しておくことで、意図しない許可設定のオーバーライドを防げます。
ルールの評価順は deny → ask → allow です。denyルールは最優先で適用されます。
④ 機密ファイルへのアクセスを拒否する
.envファイルやシークレット、認証情報が含まれるファイルへのアクセスをブロックします。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)",
"Read(./config/credentials.json)",
"Read(**/*.pem)",
"Read(**/*.key)"
]
}
}
サンドボックスのdenyReadと組み合わせると、Claude Codeのファイルツールだけでなく、Bashコマンド経由の読み取りもブロックできます。
{
"sandbox": {
"filesystem": {
"denyRead": ["~/.aws/credentials", "~/.ssh"]
}
}
}
⑤ ネットワークアクセスを制限する
サンドボックスのネットワーク制御を使い、許可するドメインをホワイトリスト方式で指定します。
{
"sandbox": {
"network": {
"allowedDomains": [
"github.com",
"*.githubusercontent.com",
"*.npmjs.org",
"registry.yarnpkg.com",
"pypi.org"
]
}
}
}
これにより、Claude Codeが意図しない外部サーバーへデータを送信するリスクを大幅に低減できます。プロンプトインジェクション攻撃によるデータ窃取(exfiltration)対策として特に有効です。
⑥ bypassPermissionsモードを無効化する
--dangerously-skip-permissionsフラグは、すべての権限チェックをスキップするモードです。チーム開発では特に、このフラグを完全に使用不可にしておくべきです。
{
"permissions": {
"disableBypassPermissionsMode": "disable"
}
}
この設定はManaged Settings(組織設定)に配置すると、ユーザー側で上書きできません。
⑦ PreToolUseフックで独自の安全チェックを追加する
Hooksは、Claude Codeのライフサイクルの各ポイントで自作スクリプトを実行できる強力な機能です。PreToolUseフックを使えば、ツール実行前にカスタムチェックを挟めます。
// .claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": ".claude/hooks/validate-command.sh"
}
]
}
]
}
}
フックスクリプトの例(危険なコマンドをブロック):
#!/bin/bash
# .claude/hooks/validate-command.sh
COMMAND=$(jq -r '.tool_input.command' < /dev/stdin)
# rm -rf をブロック
if echo "$COMMAND" | grep -q 'rm -rf'; then
echo "Blocked: rm -rf commands are not allowed" >&2
exit 2 # exit 2 でツール実行をブロック
fi
# 本番環境への接続をブロック
if echo "$COMMAND" | grep -q 'prod'; then
echo "Blocked: production access is not allowed" >&2
exit 2
fi
exit 0
フックにはコマンドの他にも、HTTP webhook、LLMプロンプト評価、エージェント型の4種類があります。
⑧ /permissionsコマンドで定期的に権限を棚卸しする
Claude Codeには、現在の権限設定を一覧表示する/permissionsコマンドが用意されています。
- セッション中に許可した「Always allow」ルールが蓄積していないか
- 不要な許可ルールが残っていないか
- deny ルールが意図通りに設定されているか
を定期的にチェックしましょう。
また、/statusコマンドで、どの設定ファイルが読み込まれているかを確認できます。設定ファイルにエラーがある場合も、ここで検出されます。
⑨ devcontainerで完全隔離環境を用意する
最もセキュアな方法は、Claude Codeをコンテナ内で動かすことです。Anthropic公式のdevcontainerリファレンス実装が提供されています。
主な特徴:
- ファイアウォール付きのネットワーク制御(デフォルトdenyポリシー)
- ホストマシンからの完全な隔離
- VS Code Remote Containers拡張機能で簡単にセットアップ可能
# 方法1: Claude Codeリポジトリのdevcontainerリファレンス実装を利用
git clone https://github.com/anthropics/claude-code.git
# VS Codeで開いて「Reopen in Container」を選択
# 方法2: devcontainer featuresで既存プロジェクトに追加
# https://github.com/anthropics/devcontainer-features を参照
devcontainer環境では、--dangerously-skip-permissionsを使った自動化も比較的安全に行えます(ただし、信頼できるリポジトリでのみ推奨)。
⑩ チーム向け:Managed Settingsで組織ポリシーを強制する
チームや組織でClaude Codeを使う場合は、Managed Settingsでポリシーを一括管理できます。Managed Settingsは最高の優先度を持ち、ユーザーやプロジェクトの設定で上書きできません。
Managed Settingsには2つの方式があります:
| 方式 | 概要 | 適用場面 |
|---|---|---|
| Server-managed settings(public beta) | Claude.aiの管理コンソールから設定を配信。MDM不要 | リモートワーク・BYOD環境 |
| Endpoint-managed settings | MDM(Jamf, Intune等)でデバイスに直接配置 | セキュリティ重視の組織 |
Server-managed settingsはClaude for Teams / Enterprise プランで利用可能で、ユーザー認証時に設定が自動配信されます。MDMインフラがない組織でも集中管理が可能です。
Endpoint-managed settingsの配置先:
| OS | パス |
|---|---|
| macOS | /Library/Application Support/ClaudeCode/managed-settings.json |
| Linux | /etc/claude-code/managed-settings.json |
| Windows | C:\Program Files\ClaudeCode\managed-settings.json |
組織管理者向けの主要設定:
{
"permissions": {
"disableBypassPermissionsMode": "disable"
},
"allowManagedPermissionRulesOnly": true,
"allowManagedHooksOnly": true,
"allowManagedMcpServersOnly": true,
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false,
"network": {
"allowManagedDomainsOnly": true,
"allowedDomains": ["github.com", "*.npmjs.org"]
}
}
}
| 設定キー | 効果 |
|---|---|
disableBypassPermissionsMode |
--dangerously-skip-permissionsの使用を禁止 |
allowManagedPermissionRulesOnly |
Managed以外のallow/deny/askルールを無効化 |
allowManagedHooksOnly |
ユーザー・プロジェクトのフックを無効化し、管理者設定のフックのみ許可 |
allowManagedMcpServersOnly |
管理者が許可したMCPサーバーのみ使用可能 |
allowManagedDomainsOnly |
管理者が指定したドメインのみネットワークアクセス可能 |
おわりに
Claude Codeは非常に便利なツールですが、「便利さ」と「安全性」はトレードオフです。
特にチーム開発では、まず①〜④の基本設定を行い、段階的に⑤以降を導入していくことをおすすめします。
ではまた、お会いしましょう。
