Skip to content

原文(日本語に翻訳)

BashのdangerouslyDisableSandboxがサンドボックス外でコマンドを実行する際にパーミッションプロンプトなしで実行されていた問題を修正しました。

原文(英語)

Fixed Bash dangerouslyDisableSandbox running commands outside the sandbox without a permission prompt

概要

dangerouslyDisableSandbox オプションを使用してBashコマンドを実行する場合、本来はサンドボックス外でコマンドを実行する前にパーミッション確認ダイアログが表示されるべきですが、それが表示されずにコマンドが実行されてしまう問題がありました。この修正により、dangerouslyDisableSandbox を使用する場合でも、サンドボックス外での実行には適切なパーミッション確認が求められるようになります。

基本的な使い方

javascript
// MCPツールやSDKでの使用例(修正後の正しい動作)
const result = await claude.bash({
  command: "npm install",
  dangerouslyDisableSandbox: true  // サンドボックスを無効化
  // → 修正後: この場合もパーミッション確認が表示される
});

実践例

SDKでのBashツール実行

python
# Anthropic SDKでのBashツール使用例
import anthropic

client = anthropic.Anthropic()

# dangerouslyDisableSandbox を使用する場合
response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=1024,
    tools=[{
        "name": "bash",
        "type": "bash_20250124",
        # dangerouslyDisableSandbox オプション
        # 修正後: 適切にパーミッション確認が行われる
    }],
    messages=[{
        "role": "user",
        "content": "カレントディレクトリのファイルを一覧表示して"
    }]
)

影響を受けるシナリオ

bash
# シナリオ1: 開発環境でのサンドボックス無効化

# settings.json での設定
{
  "bash": {
    "dangerouslyDisableSandbox": true
  }
}

# 修正前: サンドボックス外でコマンドが確認なしに実行されていた
# 修正後: サンドボックス外のコマンドには確認ダイアログが表示される
javascript
// シナリオ2: MCP Bashツールでの使用

// 修正前の問題のある動作:
// dangerouslyDisableSandbox: true を指定すると
// 全てのコマンドが確認なしで実行されていた

// 修正後の正しい動作:
// サンドボックス外のコマンド実行には確認が求められる
// 許可リストにあるコマンドは引き続き自動承認される

セキュリティ設定の確認

json
// .claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(ls:*)",
      "Bash(cat:*)",
      "Bash(echo:*)"
    ],
    "deny": [
      "Bash(rm:*)",
      "Bash(sudo:*)"
    ]
  }
}

// 修正後:
// - 許可リストのコマンド → 自動承認(dangerouslyDisableSandboxに関わらず)
// - 拒否リストのコマンド → 常に拒否
// - リストにないコマンド + dangerouslyDisableSandbox → 確認ダイアログ表示

注意点

  • dangerouslyDisableSandbox はその名前の通り、危険な操作です。本番環境では使用しないでください
  • この修正はセキュリティ上の重要な修正です。アップデートを早めに適用することを推奨します
  • dangerouslyDisableSandbox を使用しても、明示的な拒否ルールは引き続き有効です
  • この修正により、意図せず危険なコマンドがサイレントに実行される事態を防げます
  • 開発環境でのみ dangerouslyDisableSandbox を使用し、必要なコマンドは許可リストに明示的に追加することを推奨します

関連情報