SpyBara
Go Premium

sandbox-environments.md 2026-09-17 05:00 UTC to 2026-09-18 23:58 UTC

This page contains 11 additions and 11 deletions.

2026
Wed 9 22:58 Thu 10 23:00 Sat 12 03:02 Mon 14 22:58 Fri 18 23:58

サンドボックス環境を選択する

Claude Code のサンドボックスオプションを比較します。組み込みのサンドボックス化された Bash ツール、サンドボックスランタイム、dev コンテナ、Docker、VM があります。脅威モデルに適した分離を選択してください。

Claude Code を分離することで、セッションがホスト上で読み取り、書き込み、ネットワークにアクセスできる内容を制限します。これは、Claude に権限プロンプトを少なくして作業させたり、無人で実行したり、完全に信頼していないコードを指定したりする場合に最も重要です。

Claude Code は、軽量なコマンド単位のサンドボックスから完全に独立した仮想マシンまで、複数の種類の分離環境で実行できます。このページでは、それらを分離内容と必要な要件で比較し、脅威モデルに合ったものを選択するのに役立ち、組織全体でその選択を強制する方法を示します。

サンドボックス化アプローチの比較

以下の表の最初の 2 つのアプローチはコンテナなしでホストオペレーティングシステム上で実行されます。残りは Claude Code をコンテナまたは仮想マシン内に配置します。

アプローチ 何が分離されるか Docker が必要 セットアップの手間
サンドボックス化された Bash ツール Bash、PowerShell、Monitor コマンドとその子プロセス いいえ macOS では最小限。Linux と WSL2 では低い
サンドボックスランタイム Claude Code プロセス全体(ファイルツール、MCP サーバー、hooks を含む) いいえ 低い
Dev コンテナ 完全な開発環境 はい 中程度
カスタムコンテナ 完全な開発環境 はい 中程度から高い
仮想マシン 完全なオペレーティングシステム いいえ 高い
クラウドセッション 完全なオペレーティングシステム(Anthropic がホスト) いいえ なし。Claude サブスクリプションが必要で、claude --cloud で起動する場合を除き、接続された GitHub アカウントが必要

サンドボックス化された Bash ツールは Claude Code に組み込まれており、Bash コマンドのみを制限します。組み込みファイルツール、MCP サーバー、hooks はホスト上で直接実行されます。表内の他のすべてのアプローチは、Claude Code プロセス全体を分離境界内に配置するため、ファイルツール、MCP サーバー、hooks も制限されます。

アプローチを選択する

目標を以下の行と照合してから、その後に続く詳細セクションを読んでください。

実現したいこと 開始するもの
自分のマシンでの日常的な作業中に権限プロンプトを減らす サンドボックス化された Bash ツール(/sandbox で有効化)
Claude に --dangerously-skip-permissions または自動モードで無人で作業させる 事前設定された dev コンテナ、任意のコンテナまたは VM、または サンドボックスランタイム
Bash だけでなく MCP サーバーと hooks も分離し、Docker なしで実行する サンドボックスランタイム
信頼できないリポジトリで作業する 専用の仮想マシン、または Claude サブスクリプションがある場合は Web 上の Claude Code。claude --cloud で起動する場合、GitHub は不要です
チーム全体でサンドボックス化された環境を標準化する 事前設定された dev コンテナ(リポジトリにコピー)
ローカルセットアップなしのデバイスから Claude Code を使用する Web 上の Claude Code(Claude サブスクリプションと接続された GitHub アカウントが必要)
組織内のすべての開発者に対して分離を要求する 組織全体で分離を強制
ネイティブ Windows ホストで作業する コンテナまたは VM、または WSL2 内で Bash サンドボックスを実行

分離が権限モードとどのように関連するか

権限モードは、ツール呼び出しが実行されるかどうか、および最初にプロンプトが表示されるかどうかを決定します。分離は、コマンドが実行されたら何にアクセスできるかを制限します。この 2 つは連携して機能します。権限モードがアクションを確認なしで実行させる場合、分離境界はそれらのアクションが到達できる内容を制限します。

--dangerously-skip-permissions を渡すと、Claude は最初にあなたに尋ねることなく行動します。どのモードも自動承認しないアクションは依然として適用されます。

間違いをキャッチするプロンプトがないため、選択した分離境界があなたのシステムを保護するものです。常にコンテナ、VM、または サンドボックスランタイム内で --dangerously-skip-permissions セッションを実行してください。ファイルツール、MCP サーバー、hooks も境界内にあります。Linux と macOS では、Claude Code はこのフラグを使用して root として実行されている場合は起動を拒否するため、コンテナ、VM、またはサンドボックスランタイムを非 root ユーザーとして実行してください。

自動モードはプロンプトを、アクションをレビューする分類器に置き換えます。分類器はアクション単位の制御であり、分離境界ではないため、分離境界は無人実行の防御層を追加し、--dangerously-skip-permissions の場合のように必須ではありません。

サンドボックス化された Bash ツール単独では Bash のみを制限するため、どちらのモードでも完全に無人で実行するには不十分です。アプローチを重ねることができます。サンドボックス化された Bash ツールをコンテナまたは VM 内で実行すると、外側の環境境界の上に OS レベルのコマンド制限が得られます。Bash サンドボックス自体が権限ルールおよび権限モードとどのように相互作用するかについては、サンドボックス化が権限および権限モードとどのように関連するかを参照してください。

サンドボックス化された Bash ツール

サンドボックス化された Bash ツールは Claude Code に組み込まれています。オペレーティングシステムプリミティブを使用して、Claude が実行するすべての Bash、PowerShell、または Monitor コマンドのファイルシステムとネットワークアクセスを制限します。

/sandbox コマンドを実行してサンドボックスパネルを開き、モードを選択してください。サンドボックス化ガイドでは、承認モード、デフォルト境界、および拡大または縮小する方法について説明しています。

コマンド単位のサンドボックスはセッションで実行されるすべてをカバーしていません。

  • Read、Edit、WebFetch などの他の 組み込みツールは Claude Code プロセス内で実行され、任意のコードを生成しません。権限ルールがパスまたはドメインでそれらをゲートします。
  • MCPサーバーと command hooksは、ホスト上で制約なく実行される別のプロセスです。

組み込みツール、MCP サーバー、hooks をすべて 1 つの OS 境界の背後に配置するには、Claude Code プロセス全体を サンドボックスランタイム、dev コンテナ、または カスタムコンテナ内で実行してください。

サンドボックスランタイム

@anthropic-ai/sandbox-runtime パッケージは、組み込みの Bash サンドボックスが使用するのと同じ Seatbelt または bubblewrap 分離でプロセス全体をラップします。Claude Code をそれを通して実行すると、シェルコマンドだけでなく、セッション内のすべてのツール、hook、MCP サーバーが制限されます。ランタイムはベータ研究プレビューであり、パッケージが進化するにつれて設定形式が変わる可能性があります。

このセクションでは、設定する内容とランタイムが独自に実施する内容について説明します。Agent SDK アプリケーションでランタイムをデプロイする場合は、セキュアデプロイメントガイドを参照してください。

ランタイムのセットアップと起動

Linux と WSL2 では、ランタイムは組み込みサンドボックスと同じ bubblewrap および socat パッケージに加えて、Claude Code がバンドルしているが、スタンドアロンランタイムは PATH から解決する ripgrep に依存しています。Linux と WSL2 のセットアップで説明されているように bubblewrap と socat をインストールし、ディストリビューションのパッケージマネージャーから ripgrep をインストールしてください。macOS では追加のパッケージは必要ありません。ランタイムはそこで組み込みの Seatbelt サンドボックスを使用します。

デフォルトでは、ランタイムはネットワークアクセスを拒否し、書き込みを小さな組み込みランタイムパスセットに限定するため、Claude Code を起動する前に設定してください。設定を ~/.srt-settings.json に、または --settings で渡すファイルに配置します。パッケージ README は完全な設定スキーマを文書化しています。

少なくとも以下への書き込みアクセスを許可してください。

  • プロジェクトディレクトリ。
  • Claude Code の設定パス ~/.claude および ~/.claude.json。
  • /tmp。Claude Code はランタイムファイルをここに書き込みます。

セッションが必要とするネットワークドメインを許可してください。

  • api.anthropic.com、またはプロバイダーのエンドポイント。サードパーティプロバイダーでは、api.anthropic.com も保持してください。WebFetch ドメインセーフティチェックは、skipWebFetchPreflight: true を設定しない限り、デフォルトでそれを呼び出します。
  • claude.ai および platform.claude.com。OAuth サインインとトークンリフレッシュに必要です。API キーで認証されたランは、これら 2 つを削除できます。

Linux と WSL2 では、ランタイムは既に存在するパスにのみ書き込み許可を適用します。新しい環境では、最初の起動前に Claude Code の設定パスを作成してください。

mkdir -p ~/.claude && echo '{}' > ~/.claude.json

設定ファイルが配置されたら、npx で Claude Code を起動し、ラップするコマンドとして claude を渡します。

npx @anthropic-ai/sandbox-runtime claude

Claude Code はサンドボックス内で起動し、設定したファイルシステムとネットワーク境界があります。同じコマンドは、スタンドアロン MCP サーバーまたは他のヘルパープロセスのサンドボックス化に機能します。

ランタイムが独自にブロックするもの

ランタイムは、設定なしで最高リスクの書き込みをブロックします。

  • denyWrite は allowWrite より優先されます。
  • プロジェクトルートでは、ランタイムは .git/hooks を拒否し、filesystem.allowGitConfig: true を設定しない限り .git/config を拒否し、.mcp.json、.claude/commands、.claude/agents、およびシェルスタートアップファイルを拒否します。
  • macOS では、これらの拒否は書き込みが発生したときにチェックされるため、ネストされたファイルとセッション中に作成されたリポジトリもカバーします。
  • Linux と WSL2 では、ランタイムは起動時に拒否リストを構築します。プロジェクトルートを確実にカバーし、その時点で存在するネストされたコピーの最善の努力による浅いスキャンを行い、git init、git clone、またはスキャフォルディングなど、セッションが後で作成するものはカバーしません。README の mandatoryDenySearchDepth セクションはスキャンの正確なセマンティクスを説明しています。
  • 有効な ~/.srt-settings.json がない場合、ランタイムは起動しますが、ネットワークアクセスをブロックし、書き込みを /tmp/claude、~/.npm/_logs、~/.claude/debug などの組み込みランタイムパスに限定します。クリーンスタートを設定が読み込まれた証拠として受け取らないでください。
  • --settings を渡すと、ファイルの読み込みに失敗した場合、ランタイムは起動を拒否します。

書き込み許可には、Claude Code が設定を読み込む他のパスも含まれるため、denyWrite でそれらを拒否してください。それらに書き込みできるサンドボックス化されたセッションは、次に Claude Code を起動するときに、サンドボックス化されていない hook、権限ルール、または MCP サーバーを永続化できます。

無人実行後

保持した書き込み可能なパスを確認してください。Linux と WSL2 では、セッションが作成したものも確認してください。

Dev コンテナ

Dev コンテナは Claude Code を Docker コンテナ内で実行します。VS Code または互換性のあるエディターが管理し、プロジェクトがマウントされます。リポジトリの .devcontainer/ ディレクトリで独自に定義できます。

claude-code リポジトリは、デフォルト拒否 iptables ファイアウォールを備えた example dev container を出発点として公開しています。リポジトリにコピーし、ファイアウォール許可リスト、ベースイメージ、ピン留めされた Claude Code バージョンを環境に合わせて調整します。ファイアウォールが未承認の出力をブロックするため、このような設定は無人作業のために --dangerously-skip-permissions で Claude Code を実行することをサポートしています。

カスタムコンテナ

Claude Code は、独自のネットワークポリシー、マウントされたボリューム、seccomp プロファイルを備えた任意の Docker または OCI コンテナイメージで実行できます。これは、既存のコンテナインフラストラクチャまたは CI ランナーを持つ組織にとって最も一般的なパスです。

複数のマネージドサンドボックスおよびリモート実行サービスがコンテナをホストできます。操作するコンテナと同じチェックリストが適用されます。書き込み可能にマウントされているもの、その内部で到達可能な認証情報とトークン、ネットワーク出力ポリシーが許可するものを確認します。

コマンド単位の制限のためにコンテナ内に組み込みの Bash サンドボックスを重ねることができます。特権のないコンテナには、サンドボックス化のトラブルシューティングで説明されている nested-sandbox 設定が必要です。

仮想マシン

専用の仮想マシンは、独自のカーネルと、クラウドまたは microVM デプロイメントでは独自の仮想化ハードウェアを備えた最強の分離を提供します。オプションには、クラウドインスタンス、ローカルハイパーバイザー、Firecracker などの microVM が含まれます。信頼できないコードを評価する場合、セキュリティポリシーがエージェントとホスト間のカーネルレベルの分離を要求する場合、またはホストレベルのアプローチがコンプライアンス要件を満たさない場合に、このアプローチを使用します。

Docker Sandboxes は、独自の Docker デーモンとワークスペース同期を備えた microVM を提供し、Docker Sandboxes がインストールされているホストで Claude Code を実行できます。これは Docker の無料のスタンドアロン製品であり、Docker Desktop は必要ありません。

クラウドセッション

クラウドセッションは、分離された Anthropic 管理の仮想マシンで実行されます。ネットワークプロキシはデフォルト許可リストを強制し、別のプロキシはサンドボックス内のリポジトリアクセスのためにスコープ付き認証情報を発行しながら、GitHub トークンをサンドボックスの外に保持します。組織がセルフホスト環境にルーティングするセッションは、代わりにユーザーがプロビジョニングするインフラストラクチャ上で実行され、分離、エグレス制御、および git 認証情報はデプロイメントの責任です。

インフラストラクチャを自分でプロビジョニングせずに完全な VM 分離が必要な場合、またはローカル開発環境がないデバイスからタスクを委任する場合に、このアプローチを使用します。Claude サブスクリプションが必要です。CLI から起動しない限り、サンドボックスがリポジトリをクローンできるように、接続された GitHub アカウントも必要です。--cloudを使用して CLI から起動する場合、Claude Code は代わりにローカルリポジトリをバンドルしてアップロードできます。プラン可用性と GitHub 認証オプションについては、クラウドで Claude Code を使用するを参照してください。

組織全体で分離を強制する

個々の開発者は、このページのいずれかのサンドボックス化アプローチにオプトインできます。組織が強制できるもの、およびどのツールで強制できるかは、アプローチによって異なります。

  • 組み込み Bash サンドボックス:Claude Code が自体で強制する唯一のアプローチです。管理設定を通じて sandbox 設定キーを配信します。MDM で管理されるファイルとして、または Claude.ai のサーバー管理設定を通じて。デプロイするキーと開発者がポリシーを拡大するのを防ぐ方法については、管理設定でサンドボックス化を強制を参照してください。
  • Dev コンテナ:example dev containerをリポジトリにコミットして、チーム全体で環境を標準化します。Claude Code がコンテナを要求しないため、これは強制境界ではなく慣例です。開発者が Claude Code をその外で実行できないようにする場合は、組織のデバイス管理またはソフトウェア許可リストツールでそれを強制します。
  • カスタムコンテナと VM:承認されたイメージを通じて Claude Code を配布し、組織のデバイス管理またはソフトウェア許可リストツールを使用して、その外でのインストールを防止します。

関連項目

これらのページでは、このページで説明しているサンドボックス化アプローチの設定とポリシーの詳細について説明しています。