OpenAI は 2026 年 5 月、コーディングエージェント Codex の Windows 版に独自サンドボックスを実装した経緯を技術ブログ『Building a safe, effective sandbox to enable Codex on Windows』で公開しました[1]。macOS の Seatbelt や Linux の seccomp/bubblewrap に相当する仕組みが Windows には標準で用意されておらず、AppContainer・Windows Sandbox・Mandatory Integrity Control(MIC)のいずれも開発エージェント用途には合わなかったため、専用 Windows ユーザーと Windows Firewall を組み合わせる「昇格サンドボックス」方式に行き着いた経緯が解説されています[1]。
既存の Windows ツールが合わなかった理由
ブログを執筆した Codex エンジニアリングチームの David Wiesen 氏は、2025 年 9 月の入社時点で Codex Windows 版にはサンドボックスが存在せず、Windows ユーザーは「ほぼ全コマンドを都度承認する」か「Full Access モードで一切の制限を外す」かの二択を迫られていたと振り返ります[1]。
候補に挙がった既存ツールは 3 つで、まず AppContainer は事前に必要なリソースを宣言する設計のため、シェル・Git・パッケージマネージャを横断的に動かす開発ワークフローには形が合わず却下された[1]。Windows Sandbox は使い切りの仮想 Windows デスクトップを丸ごと提供するもので、ユーザーの実チェックアウトを直接操作するエージェント用途と噛み合わず、Windows Home エディションでは利用できない制約もあった[1]。MIC は完全性ラベルを使うアプローチだが、ワークスペースを低完全性に降格させると Codex 以外の低完全性プロセスからも書き込みが可能になり、開発機の信頼モデルそのものが揺らぐ点で見送られています[1]。
第一案「非昇格サンドボックス」と書き込み制御
最初のプロトタイプは管理者権限を要求しない「unelevated sandbox」で、合成 SID と書き込み制限トークン(write-restricted token)を軸に組まれていました[1]。具体的には sandbox-write という合成 SID を作成して作業ディレクトリと writable_roots に書き込み権限を付与し、.git .codex .agents には拒否 ACL を当てたうえで、子プロセスを restricted トークンで起動する設計です[1]。
一方、ネットワーク遮断は Windows Firewall を管理者権限なしで操作できないという制約から、HTTPS_PROXY=http://127.0.0.1:9 のようなプロキシ環境変数注入と、GIT_SSH_COMMAND=cmd /c exit 1 の挿入、SSH/SCP のスタブを PATH 先頭に置く「ベストエフォート防御」に留まりました[1]。OpenAI は「環境変数を無視する実装や、独自のソケットを直接開くプログラムには通用しない」と評価し、敵対的コードに対する強度不足を理由に方針転換しています[1]。
最終形「昇格サンドボックス」と専用ユーザー方式
現行実装の「elevated sandbox」は、セットアップ時に管理者昇格を要求する代わりに、CodexSandboxOffline と CodexSandboxOnline という 2 つの専用 Windows ローカルユーザーを作成し、Offline 側にだけ Windows Firewall でアウトバウンドを全遮断します[1]。これにより、プロセス単位ではなく「プリンシパル単位」でファイアウォール規則を当てられるようになり、Codex から派生する Git や Python の子プロセスにも一律で網がかかる構造です[1]。
実装は codex.exe 本体に加え、昇格セットアップ専用の codex-windows-sandbox-setup.exe と、サンドボックスユーザー側で制限付きトークンを生成して子プロセスを起動する codex-command-runner.exe の 3 バイナリ構成になっています[1]。これは CreateProcessAsUserW を実ユーザー側から呼ぶと特権境界で失敗するため、サンドボックスユーザーとして既に走っているプロセスから制限トークンを作る必要があったためです[1]。ユーザー認証情報は Windows Data Protection API(DPAPI)で暗号化してローカル保存し、サンドボックスユーザー自身からは読み出せない位置に置く設計も併用されています[1]。設定は config.toml の [windows] セクションで sandbox = "elevated" または "unelevated" を選択でき、ドキュメント上は elevated が推奨モードです[2][3]。
まとめ
Codex Windows サンドボックスは、Windows に macOS の Seatbelt や Linux の bubblewrap に相当する単一プリミティブが存在しないという制約のもと、合成 SID・書き込み制限トークン・専用ユーザー・Windows Firewall を組み合わせて「開発エージェントが実環境で動く」状態を成立させた一例です[1]。Windows Home でも非昇格モードへフォールバックできる構造になっているため、Codex を業務 PC で運用するチームにとっては、サンドボックス挙動と設定オプションを config.toml 側で押さえておく価値があります[2]。
出典:https://openai.com/index/building-codex-windows-sandbox/
出典:https://developers.openai.com/codex/windows
出典:https://developers.openai.com/codex/concepts/sandboxing