CC逆引きリファレンス

サンドボックス + 全自動実行

13. セキュリティリスク回避

コマンド / 機能

sandbox + --dangerously-skip-permissions

概要

サンドボックスと --dangerously-skip-permissions を組み合わせることで、全自動実行しながら OS レベルの保護を維持できます。CI/CD での推奨構成です。

設定例

# settings.json(推奨設定)
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "allowUnsandboxedCommands": false  // 重要:サンドボックス外実行を禁止
  },
  "permissions": {
    "deny": [
      "Read(.env*)",
      "Read(~/.ssh/*)",
      "Read(~/.aws/*)"
    ]
  }
}

# 実行コマンド
claude -p --dangerously-skip-permissions "テストを実行してコミットして"

# セキュリティの構造
# ┌─────────────────────────────────────┐
# │ --dangerously-skip-permissions      │
# │ → 権限確認をスキップ(全自動)       │
# └─────────────────────────────────────┘
#           ↓ でも
# ┌─────────────────────────────────────┐
# │ サンドボックス(OS レベル強制)     │
# │ → 作業ディレクトリ外の書き込み禁止  │
# │ → 未許可ホストへの通信禁止          │
# │ → バイパス不可                      │
# └─────────────────────────────────────┘

# GitHub Actions での例
- name: Run Claude
  run: |
    claude -p --dangerously-skip-permissions "PRをレビューして"
  env:
    ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

こんな時に使う

  • CI/CD で安全に全自動実行したい時
  • 権限確認なしでも保護を維持したい時
  • 自動化と安全性を両立したい時

使い方

  1. 1settings.json で sandbox.enabled: true を設定
  2. 2allowUnsandboxedCommands: false でサンドボックス脱出を禁止
  3. 3--dangerously-skip-permissions で全自動実行
  4. 4deny ルールで追加の保護(.env など)

Tips

  • この組み合わせが Anthropic 内部でも使われている
  • サンドボックスの保護は bypassPermissions でも有効
  • deny ルールもサンドボックスと併用可能
  • excludedCommands で特定コマンドをサンドボックス外で実行可能(注意して使用)