Claude CodeAnthropic の機能

FEATURE

sandbox (サンドボックス)

sandbox (サンドボックス) は、Claude がマシン上で実行するシェルコマンドの周りに、オペレーティングシステムが強制する境界を設ける機能です。

提供中公式発表と照合済み
初出未調査
ページ更新
提供状態提供中
公式の記載で確認できた環境ターミナル、IDE 拡張
提供を確認できたプラン公式に記載なし
目次 CONTENTS
  1. できること
  2. 機能解説
  3. 使い方
  4. 利用シーン
  5. ChatGPT・OpenAI の対応する機能
  6. これまでの変更
  7. 関連する機能
  8. 出典
CAN DO

できること

POINT 01

コマンドを OS で隔離

Claude が実行するシェルコマンドを、OS が強制する境界の内側で動かせます。制限は Bash・PowerShell・Monitor のコマンドと、それらが起動するプロセスに及びます。

POINT 02

接続先ドメインの制御

サンドボックスのプロキシが各接続のホスト名を許可・拒否のドメインと照合します。user・managed・CLI の --settings の設定で strictAllowlist を true にすると、Claude Code はサンドボックス化されたコマンドから許可リスト外のホストへの接続を、確認を出さずに拒否します。

POINT 03

認証情報の保護

sandbox.credentials で、サンドボックス化されたコマンドから守る認証情報ファイルと環境変数を指定できます。環境変数をマスクした場合、コマンドとそのログは実際の値を持たず、リクエストの認証は通ります。

GUIDE

機能解説

概要

コマンドがアクセスできるファイルとネットワークのドメインを利用者が設定し、その制限は Bash・PowerShell・Monitor のコマンドと、それらが起動するプロセスに適用されます。対象はシェルコマンドだけで、サンドボックスは既定ではオフです。

sandbox は、Claude が実行するシェルコマンドに対して、OS が強制する境界を設ける機能です。対象はシェルコマンドだけで、既定ではオフです。親セッションでサンドボックスが有効な場合、サブエージェント内の Bash コマンドもサンドボックス化されます。

モードは 2 つあり、どちらもファイルシステムとネットワークに同じ制限をかけます。違いは承認の扱いだけです。

  • auto-allow:サンドボックス内で実行されるコマンドを、確認なしで自動承認します。
  • regular permissions:サンドボックス化されていても、すべての Bash コマンドが通常の許可フローを通ります。

プラットフォームがサンドボックスに対応していない場合や、起動時の依存関係チェックが失敗した場合、既定ではサンドボックスなしでコマンドを実行します。

制限の範囲と例外

ファイル

  • 既定では、サンドボックス化されたコマンドは一部の拒否されたディレクトリを除き、コンピューター全体を読み取れます。
  • 書き込み可能なディレクトリの中でも、Claude Code が設定やコードを読み込むファイルへの書き込みは拒否します。
  • kubectl・terraform・npm などが既定の書き込み可能ディレクトリの外に書き込む必要があるときは、sandbox.filesystem.allowWrite で特定のパスへのアクセスを与えます。
  • sandbox.filesystem.disabled を true にすると、ネットワークの分離を残したままファイルシステムの分離を省略します。

ネットワーク

Claude Code はサンドボックスのプロキシをマシン上のサンドボックス外で動かし、HTTP_PROXY・HTTPS_PROXY・ALL_PROXY などの環境変数でコマンドをそこへ向けます。sandbox.network.deniedDomains を使うと、より広い allowedDomains のワイルドカードで許可される場合でも特定のドメインをブロックできます。

サンドボックス外での実行

  • sandbox.excludedCommands に挙げたパターンに一致するコマンドは、ファイルシステムの制限もネットワークプロキシも無いサンドボックス外で実行されます。
  • サンドボックス内でコマンドが失敗すると、Claude が失敗を分析し、dangerouslyDisableSandbox パラメーター付きで再実行する場合があります。サンドボックス設定で "allowUnsandboxedCommands": false にするとこの再実行を無効にでき、Claude Code は dangerouslyDisableSandbox パラメーターを無視します。
  • ! の bash モードで入力したコマンドは、strict sandbox mode (sandbox.allowUnsandboxedCommands: false) が有効でも、自分のターミナルに入力したときと同じくサンドボックス外で実行されます。

認証情報の保護

sandbox.credentials は、サンドボックス化されたコマンドから守る認証情報ファイルと環境変数を宣言する設定です。環境変数をマスクすると、コマンドとそのログは実際の認証情報を持たず、リクエストの認証は通ります。

  • Linux と WSL では、認証情報ファイルに mode: "mask" を指定できます。コマンドは代わりの値を入れた写し (ファイル全体、または extract の正規表現で取り出した部分) を読み、送信時にサンドボックスのプロキシが実際の値に置き換えます。macOS では、ファイルのマスキングは deny にフォールバックします。
  • 構造化された環境変数向けの extract と onExtractNoMatch、JWT を考慮したマスキング (decode: "jwt" と maskClaims)、AWS SigV4 の再署名 (awsPairs/sigv4) のオプションがあります。これらは network.tlsTerminate が必要で、user・managed・--settings の設定からのみ有効です。

提供状況と導入時に確認したい点

対象プランについては、公式のリリースノートには記載がありません。

Ubuntu/Debian では sudo apt-get install bubblewrap socat で依存パッケージを入れます。依存関係のチェックは起動時に行われるため、インストール後に Claude Code を再起動すると /sandbox が検出します。Linux/WSL では、管理設定 sandbox.bwrapPath と sandbox.socatPath で bubblewrap と socat のバイナリの場所を指定できます。VS Code では、パネルメニューまたは /sandbox で Sandbox (サンドボックス) ダイアログを開き、サンドボックスモード・非サンドボックスのフォールバック・除外コマンドを扱えます。

組織で導入する際の確認点は次のとおりです。

  • 管理者は、全ユーザーにサンドボックスを必須にし、開発者がポリシーを広げるのを防ぎ、サンドボックスの通信を社内プロキシ経由にできます。
  • 自社のツールで通信を検査・フィルタ・記録するために、組み込みのプロキシを同じマシン上で動かす独自のプロキシに置き換えられます。
  • プロジェクト設定では、管理者が必須とするサンドボックスを広げたり無効にしたりできず、管理された拒否リストの背後のプロキシの置き換え、strict allowlist の拡張、管理された読み取り拒否の再開放もできません。
  • sandbox.ripgrep は user・managed・--settings の設定からのみ有効で、プロジェクト設定からサンドボックスの ripgrep バイナリを上書きできません。
  • サンドボックスの TLS の終端、独自プロキシ経由のルーティング、認証情報の注入、分離の弱化を行うサーバー管理設定は、適用前に承認が必要です。
  • sandbox.allowNestedUserNamespaces は Linux でコマンドがユーザー名前空間を作れるようにする設定で、有効にするとコマンドがサンドボックスのファイル保護を回避できる状態になります。
HOW TO USE

使い方

以下は、セッションでサンドボックスを有効にして使う基本の流れです。

  1. Claude Code のセッションを開始し、/sandbox コマンドを実行します。
  2. Mode (モード) タブで、auto-allow か regular permissions のどちらかを選びます。
  3. ビルドやテストスイートなど、コマンドの実行を Claude に依頼します。
公式ヘルプを開く ↗
USE CASES

利用シーン

CASE 01

ビルドやテストスイートの実行を Claude に任せる際に、書き込み先と接続先を絞っておく場面に向いています。

CASE 02

API キーなどを環境変数に置いた開発環境で、コマンドやログに実際の値を持たせずに認証付きリクエストを通したい場面に使えます。

CASE 03

組織全体でサンドボックスを必須にし、通信を社内プロキシ経由にそろえたい管理の場面に向いています。

CASE 04

許可リスト外のホストへの接続を、確認を出さずに一律に拒否したい場面に使えます。

COMPARISON

ChatGPT・OpenAI の対応する機能

比較の単位となる業務: コーディングエージェントが実行するコマンドのサンドボックス隔離 (ファイル・ネットワーク・認証情報へのアクセス制限)

対応する機能の Sandbox では、Windows での実行とサンドボックスの信頼性が改善され、その内容に exec-server のネイティブなサンドボックス化やネットワークプロキシの強制が含まれます。Claude Code の sandbox は、サンドボックスのプロキシをマシン上のサンドボックス外で動かし、各接続のホスト名を許可・拒否のドメインと照合する仕組みです。

承認との関係では、Sandbox 側は Auto-review とサンドボックス境界の関係を説明するドキュメントを更新しています。Claude Code の sandbox は、auto-allow モードでサンドボックス内のコマンドを確認なしで自動承認し、regular permissions モードではサンドボックス内でも通常の許可フローを通します。

TIMELINE

これまでの変更

  1. sandbox.allowNestedUserNamespaces が追加されました。

  2. /sandbox のモードの表記が「Sandbox BashTool」から「Sandbox commands」に変わりました。効果のなかった claude remote-control の --sandbox と --no-sandbox フラグが削除され、セッションのサンドボックス化には設定の sandbox.enabled を使います。

  3. プロジェクト設定から、管理者が必須とするサンドボックスを広げたり無効にしたりできなくなりました。

  4. VS Code に Sandbox ダイアログが追加されました。

  5. ! の bash モードで入力したコマンドが、strict sandbox mode でもサンドボックス外で実行されるようになりました。

  6. TLS の終端や分離の弱化などを行うサーバー管理設定に、適用前の承認が必要になりました。

  7. macOS で、ワイルドカードの読み取り拒否ルール (例:**/.env) が許可された読み取り領域内でも優先されるようになりました。

  8. sandbox.ripgrep が user・managed・--settings の設定からのみ有効になりました。

  9. 認証情報マスキングのオプション (extract/onExtractNoMatch、JWT 対応、AWS SigV4 再署名) と、Linux・WSL での認証情報ファイルの mode: "mask" が追加されました。

  10. sandbox.network.strictAllowlist と sandbox.filesystem.disabled が追加されました。

  11. ネットワーク許可ダイアログで「Yes」で許可したホストがセッション中記憶されるようになり、sandbox.credentials 設定が追加されました。

  12. macOS で Apple Events の送信を許すオプトイン設定 sandbox.allowAppleEvents が追加されました。

  13. 起動バナーが削除され、サンドボックスの状態は /status とコマンドがブロックされたときに表示されます。

  14. 管理設定 sandbox.bwrapPath と sandbox.socatPath が追加されました。

  15. サンドボックスの自動許可が、/ や $HOME などの重要ディレクトリを対象とする rm/rmdir の危険パス安全チェックを迂回しなくなりました。

  16. sandbox.network.deniedDomains 設定が追加されました。

  17. CLAUDE_CODE_SUBPROCESS_ENV_SCRUB が設定されている場合の、Linux での PID 名前空間分離によるサブプロセスのサンドボックス化が追加されました。auto モードと bypass-permissions モードでネットワークアクセスの確認が自動承認され、macOS で sandbox.network.allowMachLookup が有効に機能するようになりました。

  18. Linux サンドボックスが npm 版とネイティブ版の両方で apply-seccomp ヘルパーを同梱し、サンドボックス化されたコマンドの unix-socket ブロックが復元されました。

SOURCES

出典

出典 21 件を表示