
Claude Code v2.1.260 で strict sandbox mode の ! シェルモードが sandbox 外で実行されるようになりました
Claude Code では、プロンプトに ! を付けるとシェルモードでコマンドを実行できます。
このコマンドは、sandbox を有効にしていても sandbox の外で実行されます。
以前は、strict sandbox mode(allowUnsandboxedCommands: false)なら sandbox 内で実行されていました。
v2.1.260 以降は、strict sandbox mode でも sandbox の外で実行されます。
何が変わったか
公式ドキュメント「Configure the sandboxed Bash tool」の Turn off the retry with strict sandbox mode に、次の記載があります。
Strict sandbox mode applies to the commands Claude runs. Commands you type yourself at the
!shell-mode prompt run outside the sandbox unless the session is one of these:
- A background session: strict sandbox mode covers shell-mode commands too
- A Linux session with
CLAUDE_CODE_SUBPROCESS_ENV_SCRUBset: every command runs sandboxed, shell-mode commands includedBefore v2.1.260, strict sandbox mode sandboxed shell-mode commands in every session.
strict sandbox mode が制限するのは Claude が実行するコマンドです。
自分で ! プロンプトに打ったコマンドは sandbox の外で動きます。
例外は、バックグラウンドセッションと、Linux で CLAUDE_CODE_SUBPROCESS_ENV_SCRUB を設定したセッションです。
同じページの「Confirm commands run inside the sandbox」には、シェルモードでは sandbox のテストにならないという注意書きもあります。
To check that the sandbox is working, ask Claude to run each line in the table. What you type at the
!prompt usually runs outside the sandbox, so typing a line yourself doesn't test it.
やってみた
環境
macOS 上の Claude Code v2.1.293 で検証しました。
設定は最小構成の strict sandbox mode です。
{
"sandbox": {
"enabled": true,
"allowUnsandboxedCommands": false
}
}
claude --settings ./settings.json
作業ディレクトリ外への書き込みとして、touch ~/sandbox-probe を実行します。
Bash ツール経由
対話セッションで、Claude に次のプロンプトで touch ~/sandbox-probe を実行させました。
touch ~/sandbox-probe を実行して、結果を教えて
sandbox 内で失敗し、終了コードは 1、ファイルは作成されませんでした。
touch ~/sandbox-probe は失敗しました。
touch: /Users/sato.masaki/sandbox-probe: Operation not permitted
このセッションのサンドボックスは、書き込みをカレントディレクトリ、$TMPDIR、/tmp/claude などに限っています。ホームディレクトリ直下は許可されていないため、拒否されました。
dangerouslyDisableSandbox もこのセッションでは無効なので、回避はしていません。ホームに作る必要がある場合は、! touch ~/sandbox-probe でご自身で実行するか、/sandbox exclude で対象コマンドをサンドボックスから除外してください。
! シェルモード
同じ設定の対話セッションで、シェルモードで次のコマンドを実行しました。
! touch ~/sandbox-probe
実行後の Claude の返答は次のとおりです。ファイルの作成も確認できました。
(Bash completed with no output)
! touch ~/sandbox-probe は成功しました。エラーも出力もありません。
サンドボックス内の私の実行では Operation not permitted で失敗し、! プレフィックスで直接実行すると通りました。! のコマンドはサンドボックスの外で動くため、ホーム直下への書き込み制限を受けません。
ls -l ~/sandbox-probe で、ファイルができたかどうかを確認できます。確認が済んだら rm ~/sandbox-probe で削除してください。
-rw-r--r--@ 1 <USER> staff 0 ...
旧バージョンとの比較
v2.1.259 を npx で起動し、同じ設定、同じ ! コマンドで確認しました。
npx -y @anthropic-ai/claude-code@2.1.259 --settings ./settings.json
起動後に同じ ! touch ~/sandbox-probe を実行すると、touch は失敗しました。
touch: /Users/<USER>/sandbox-probe: Operation not permitted
その後の Claude の返答は次のとおりです。
~/sandbox-probeの作成がOperation not permittedで失敗しています。ホームディレクトリ直下への書き込みがサンドボックスの権限設定でブロックされているためです。
v2.1.293 では成功していた同じ操作が、v2.1.259 では sandbox に拒否されています。
おわりに
strict sandbox mode の場合も、sandbox の動作確認は ! ではなく Claude に実行させる必要があります。








