安全にAIを業務で使うための設定
Claude Codeには、AIの操作をどこまで自動で許可するかを制御するパーミッションモードが用意されています。 業務で使う際は、このモードの選択がセキュリティの要になります。
私の運用では、開発中はallowEditsモード、本番環境に近い作業ではdefaultモードと使い分けています。 auto modeはまだベータですが、確認回数を大幅に減らせるため、今後主流になると考えています。
Auto Modeは単純に「すべて自動承認」するものではありません。 バックグラウンドで動作する安全分類器(safety classifier)が、 各ツール呼び出しのリスクを3段階で評価します。
プロンプトインジェクション対策も組み込まれており、 外部から注入された悪意のある指示をフィルタリングします。 settings.jsonでautoModeキーを使って分類器の挙動をカスタマイズすることもできます。
// settings.json — Auto Mode設定
{
"permissions": {
"defaultMode": "auto",
"autoMode": {
// カスタマイズ可能
}
}
}前提条件: Auto ModeにはTeamまたはEnterpriseプランが必要です。 また、Sonnet 4.6 / Opus 4.6以上のモデルが必要です。 個人プランの場合はallowEditsモード + ワイルドカード権限の組み合わせで 近い体験を実現できます。
パーミッションモードに加えて、ツールごとに細かく権限を設定できます。settings.jsonのpermissionsで、 ワイルドカードパターンを使った柔軟な制御が可能です。
// settings.json
{
"permissions": {
"allow": [
"Bash(npm run *)", // npm runコマンドのみ許可
"Edit(/docs/**)", // docsフォルダ配下の編集を許可
"Read(/src/**)" // srcフォルダ配下の読み取りを許可
],
"deny": [
"Bash(rm *)", // 削除コマンドを拒否
"Read(.env)" // .envファイルの読み取りを拒否
]
}
}allowで許可するツールパターン、denyで拒否するパターンを指定します。denyルールは最高優先度で、他の設定で上書きできません。 パス指定には/(プロジェクトルート)、~/(ホーム)、//(絶対パス)のプレフィックスが使えます。
私はプロジェクトの初期設定で、まずdenyにRead(.env)とBash(rm -rf *)を入れることをルーティンにしています。 事故を防ぐ最低限のガードラインです。
Sandbox機能を有効にすると、Claude Codeのコマンド実行がファイルシステムとネットワークから隔離された環境で行われます。 万が一、意図しないコマンドが実行されても、実際のファイルやネットワークへの影響を防げます。
// settings.json
{
"sandbox": {
"enabled": true,
"autoAllowBashIfSandboxed": true,
"excludedCommands": ["git", "docker"],
"network": {
"allowLocalBinding": true
}
}
}Sandbox利用者の報告では、パーミッション確認プロンプトが約84%削減されたというデータがあります。 安全性を保ちながら作業効率を大幅に上げられる、実用的な機能です。 対話中に/sandboxコマンドでSandboxの状態を確認・切り替えできます。
excludedCommandsでgitやdockerなど、Sandbox外で実行すべきコマンドを除外設定できるのもポイントです。
Sandboxではファイルシステムとネットワークアクセスを細かく制御できます。 パスプレフィックスを使って、アクセス許可の範囲を指定します。
// — 絶対パス(例: //usr/local/bin)~/ — ホームディレクトリ(例: ~/.ssh)/ — プロジェクトルート相対(例: /src)./ — カレントディレクトリ相対// settings.json — Sandbox詳細設定
{
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["/src", "/docs"],
"denyWrite": ["/.env", "/secrets"],
"denyRead": ["/.env.local"]
},
"network": {
"allowDomains": ["api.example.com"],
"allowLocalBinding": true
}
}
}failIfUnavailableをtrueにすると、 Sandboxが利用できない環境ではコマンド実行自体をブロックします。 Docker内で動作する場合はenableWeakerNestedSandboxで ネストされたSandboxを有効にできます。
AIツールを業務で使ううえで最も注意すべきなのが、機密情報の取り扱いです。 Claude Codeでは、以下の手順で機密情報を安全に分離します。
.envファイルに記載します。.envがGitリポジトリに含まれないようにします。denyルールでもRead(.env)を設定します。# CLAUDE.md での記載例
## セキュリティルール
- .envファイルは絶対に読み取らないこと
- APIキーやトークンをコード内にハードコードしないこと
- 秘密情報は環境変数経由で参照することCLAUDE.mdでの指示とsettings.jsonのdenyルールを二重に設定することで、 AIが機密情報にアクセスするリスクを最小限に抑えられます。
Hooks機能を使うと、Claude Codeのツール実行前後に自動でスクリプトを走らせることができます。 セキュリティの観点では、破壊的な操作のブロックやコード品質の自動チェックに活用できます。
// settings.json — Hooks設定例
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "echo \"$TOOL_INPUT\" | grep -qE '(rm -rf|drop table|truncate)' && echo 'BLOCK: 破壊的コマンドを検出' && exit 1 || exit 0"
}
]
}
],
"PostToolUse": [
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "npx prettier --write \"$FILEPATH\" 2>/dev/null || true"
}
]
}
]
}
}rm -rfやdrop tableなどの破壊的コマンドを検出してブロックしています。上級者向けのTipsとして、権限リクエストをOpusモデルにルーティングし、 より高度な判断で自動承認/拒否を決定させるパターンもあります。 コストは増えますが、セキュリティと利便性を高いレベルで両立できます。
チームや組織でClaude Codeを導入する場合、個人の設定だけでなく組織レベルでのガバナンスが必要です。 Anthropicは企業向けに以下の機能を提供しています。
enterprise-settings.jsonで組織全体のポリシーを定義し、 個々のユーザーが変更できない強制ルールを設定できます。 たとえば、特定のディレクトリへのアクセス禁止や、使用可能なモデルの制限が可能です。私がクライアント企業にClaude Codeの導入を支援する際は、 まずManaged Settingsで最低限のdenyルール(.env読み取り禁止、rm -rf禁止)を全社に適用し、 そのうえで各プロジェクトのsettings.jsonで追加の権限設定を行う二段構えを推奨しています。