【重複購入のご注意】この記事は「ミオ|AI大好きな後輩」がnoteで販売している同名記事(コーディングエージェントのサンドボックスで閉じていない所を探す:Claude Code・Codex・Copilotなど6製品の比較と点検手順)と同じ内容です。すでにnoteで購入・閲覧できる方は重複購入にご注意ください。
コーディングエージェントにコマンドの実行を任せていて、「サンドボックスを有効にしたから、手元の秘密や通信は守られている」と考えている開発者に向けて書きます。コンテナや VM だけでの隔離、クラウドのエージェント(Copilot のクラウドサンドボックスなど)、ネイティブの Windows、キーチェーンへの到達、Codex・Gemini CLI の MCP サーバーの内外は扱いません。点検スクリプトは macOS と Python 3.9 以上で動き(Linux は対象外)、点検の手順は Strands Box を除く5製品が対象です。
筆者は AI 開発ツールの仕様と使い方を公式資料と照らして追い、Claude Code の権限とサンドボックスの使い分けも有料記事で扱ってきました。本稿は、Claude Code・GitHub Copilot・VS Code・OpenAI Codex・Gemini CLI・Strands Box の公式文書と issue を2026年10月9日(JST)に取得して突き合わせ、点検用のスクリプトを偽のホームディレクトリで走らせた結果をもとに書いています。
10月7日に何が出たか
10月7日、GitHub は Copilot のローカルサンドボックスを一般提供にしました。GitHub の changelog によると、対象は Copilot CLI・GitHub Copilot アプリ・Agent Host を使う VS Code のセッションです。エージェントを閉じ込めるオープンソースの Strands Box も出ています。README によると、いまは Apple silicon の macOS でのローカル実行だけのプレビューです。Claude Code・Codex・Gemini CLI は、それ以前からサンドボックスを持っています。
どの製品も、エージェントが動かすコマンドを OS の仕組み(macOS の Seatbelt、Linux の bubblewrap など)で囲う点は同じです。違うのは既定値で、有効にしても開いたままの所が製品ごとに違います。
- Claude Code のサンドボックスのページは、既定の読み取り範囲を「~/.ssh や ~/.aws/credentials のような資格情報のファイルを含む、マシンのほとんど」と書いています。
- Copilot のローカルサンドボックスの使い方のページは、Copilot CLI ではサンドボックスの中でも外向きのインターネット接続が既定でオンだと書いています。
- Codex の承認とセキュリティのページによると、Codex は逆に既定で通信を切ります。ただし設定の詳細のページによると、環境変数は名前に KEY・SECRET・TOKEN を含むものも既定では外しません。
「有効にした」で止まらない経路
10月6日、The Register は、Copilot CLI が Web ページに仕込まれた指示に従って開発者の秘密を漏らしうるという Adversa AI の報告を伝えました。報告の流れは、ディスク上の .env などから秘密を集め、それを URL に載せた要求で外へ送るものです。GitHub は記事の中で、利用者が意図して信頼できない内容を取りに行かせ、実行を確かめる必要があるので製品の脆弱性ではない、と答えています。
記事にも GitHub の回答にも、サンドボックスで止まるかどうかの話は出てきません。筆者の整理では、この流れが止まるかは「秘密のファイルを読めるか」と「許可していない宛先へ届くか」の2つの設定で決まります。どちらも、上のとおり製品によって既定で開いています。
点検する4つの軸

本稿で点検する4つの軸を、エージェントが動かすコマンドから境界を通りうる経路として描いた図です。軸の分け方は、6製品の公式文書の記述をもとにした筆者の整理です。4つ目の経路には、図に描いた MCP サーバーとフックのほか、ファイルを読み書きする組み込みのツールと、承認を得てサンドボックスの外で実行する経路も含めています。どの製品でどの経路が既定で開いているかは、有料部の製品ごとの節と「4つの軸で、既定で開いている所」に書きました。
本稿では、サンドボックスの境界を通りうる経路を次の4つの軸に分けて見ます(筆者の整理です)。
- ファイル:ホームの秘密(~/.ssh・~/.aws など)を読めるか、作業フォルダの外へ書けるか
- 外向きの通信:許可していない宛先へ届くか
- 認証情報:環境変数・SSH エージェント・キーチェーンに届くか
- 境界の外で動くもの:ファイルを読み書きする組み込みのツール・MCP サーバー・フック・承認付きの外での実行が、サンドボックスの外で動くか
文書を読むだけで終わらせないのは、既定値が版で変わり、文書どうしが食い違うこともあるからです。たとえば Gemini CLI のサンドボックスのページは、ツール単位のサンドボックスに問題があれば false にして無効にするよう書く一方、設定の一覧は同じ security.toolSandboxing の既定値を false としています。読んだ内容は、自分の環境で一度走らせて確かめます。
見本:点検スクリプトの出力
有料部の点検スクリプトは、偽の秘密をホームに置き、エージェントの外と中で同じコマンドを走らせて、軸ごとに「閉じている」「開いている」を出します。下は、偽のホームディレクトリを作り、外(制限なし)と中を比べた出力の一部です。中は macOS の sandbox-exec で、偽の秘密の読み取り、~/.ssh の鍵2つのうち片方だけの読み取り、~/.aws/credentials と ~/.config/gh/hosts.yml の読み取り、ホームへの書き込み、外向きの接続を拒否し、偽の値の環境変数を別の値に差し替えました。
file read_canary 外=open 中=blocked 閉じている
file read_ssh 外=open 中=open 開いている
file read_aws_credentials 外=open 中=blocked 閉じている
file read_config_gh_hosts.yml 外=open 中=blocked 閉じている
…
net connect_example.com 外=open 中=blocked 閉じている
net https_example.com 外=open 中=blocked 閉じている
cred env_SANDBOX_PROBE_TOKEN 外=open 中=blocked 閉じているこの例では、外向きの接続は直接も HTTPS も止まり、偽の値の環境変数は差し替えられていましたが、鍵を1つしか拒否しなかった ~/.ssh は、もう1つの鍵が中から開けたままでした。読み取りの拒否は、書いた場所にしか効きません。
参考になったら、記事下部のライクとXの共有ボタンから応援してもらえるとうれしいです。
続きで読めるのは、6製品それぞれの既定値を4つの軸で並べた比較(2026年10月9日に取得した公式文書と issue の記述、文書にある閉じる設定キー)、4つの軸ごとに既定で開いている製品のまとめ、偽の秘密を置いて外と中を比べる点検の手順4段と、Claude Code・Copilot・VS Code・Codex・Gemini CLI で中から走らせるときの注意、そのまま使える Python の点検スクリプト(標準ライブラリだけ。外で開けたものが中で OS やプロキシに拒否されたとき、または偽の値の環境変数が消された・差し替えられたときだけ「閉じている」と出し、それ以外の失敗は判定不能に分ける)と出力の読み方です。では、自分の使っているエージェントのサンドボックスで、どの軸が開いたままかを、どう確かめて閉じればよいのか。
