CodexOpenAI の機能

FEATURE

Sandbox (サンドボックス)

Sandbox (サンドボックス) は、Codex のエージェントにマシンへの無制限のアクセスを与えずに、自律的に作業させるための境界です。

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

できること

POINT 01

コマンド実行の境界

エージェントが実行するコマンドを制約された環境で動かし、変更できるファイルとネットワーク利用の可否を定めます。git、パッケージマネージャー、テストランナーなど、エージェントが起動したコマンドにも同じ境界が引き継がれます。

POINT 02

制限の強さを選ぶ

read-only・workspace-write・danger-full-access のモードから制限の範囲を選べます。workspace-write はワークスペース内の編集と通常のローカルコマンドの実行を許す、ローカル作業向けの既定のモードです。

POINT 03

書き込み先を広げる

writable roots (書き込み可能なルート) を使うと、サンドボックスを外さずに、エージェントが変更できる場所を複数のディレクトリに広げられます。

GUIDE

機能解説

概要

ローカルのチャットでエージェントが実行するコマンドは、既定ではフルアクセスではなく、制約された環境の中で動きます。この環境が、どのファイルを変更できるか、コマンドがネットワークを使えるかといった、エージェントが自分の判断で行える範囲を定めます。

Sandbox は技術的な境界を定め、承認ポリシー (approval policy) は、その境界を越える前にエージェントが止まって確認を求めるタイミングを決めます。承認はアクションの前に Codex が一時停止するタイミングを、サンドボックスはコマンドがアクセスできるファイルとネットワーク資源を、それぞれ担います。

承認済みの境界の中では、エージェントは低リスクのコマンドを 1 つずつ確認させずに、ファイルの読み取り、編集、プロジェクトの通常のコマンドの実行を行えます。既定の権限モードでは、サンドボックスが自動で適用されます。

自動レビュー (Automatic review) は、使える場合でもサンドボックスの境界を変えません。サンドボックス内ですでに許可されている操作は、追加のレビューなしで実行されます。

モードと承認の設定

サンドボックスのモード (sandbox_mode) は次の 3 つです。

  • read-only: ファイルを調べることはできますが、承認なしにファイルの編集やコマンドの実行はできません。
  • workspace-write: ファイルの読み取り、ワークスペース内の編集、境界内での通常のローカルコマンドの実行ができます。ローカル作業向けの既定のモードです。
  • danger-full-access: サンドボックスの制限なしで動き、ファイルシステムとネットワークの境界が外れます。

承認ポリシーでは、on-request を選ぶとエージェントは既定でサンドボックス内で作業し、境界を越える必要があるときに確認を求めます。never では承認の確認で止まりません。approvals_reviewer は、確認をユーザーに表示する user (既定) と、対象の承認確認をレビュー用のエージェントに回す auto_review から選べます。

フルアクセスは sandbox_mode = "danger-full-access" と approval_policy = "never" の組み合わせです。よりリスクの低いローカル自動化の組み合わせは sandbox_mode = "workspace-write" と approval_policy = "on-request" で、CLI では --sandbox workspace-write --ask-for-approval on-request に当たります。

切り替えは、ChatGPT デスクトップアプリや IDE 拡張機能では入力欄の下にある権限の操作から行います。設定によって、Ask for approval (承認を求める)、Approve for me (代わりに承認)、Full access (フルアクセス)、名前付きまたはカスタムの権限プロファイルが表示されます。CLI では /permissions で権限の選択画面を開き、使用中の権限プロファイルを変更します。毎回同じ動作で始めたい場合は、config.toml に既定値を設定します。

OS ごとの仕組み

Codex は OS ごとにプラットフォーム固有の仕組みで制限をかけます。実装は macOS、Linux、WSL2、ネイティブの Windows で異なります。

  • macOS: 組み込みの Seatbelt フレームワークを使い、追加の準備なしで動作します。
  • Linux: ファイルシステムの分離に bubblewrap、システムコールのフィルタリングに seccomp を使います。PATH 上で最初に見つかった bwrap を使い、見つからない場合は同梱のヘルパーに切り替えます。このヘルパーには、非特権ユーザー名前空間の作成のサポートが必要です。bwrap が無い場合や、ヘルパーが必要なユーザー名前空間を作成できない場合は、起動時に警告が表示されます。
  • Windows: PowerShell で実行するとネイティブの Windows sandbox を、WSL2 で実行すると Linux のサンドボックス実装を使います。

管理者・導入時に確認したい点

  • danger-full-access はファイルシステムとネットワークの境界を外すモードです。フルアクセスは、このモードと approval_policy = "never" の組み合わせを指します。
  • 承認されたコマンドでも、明示的なファイルシステムの拒否は保持されます。書き込み可能なルート配下の .aws ディレクトリは既定で保護されます。
  • Windows MXC サンドボックスは、管理された要件 (managed requirements) で無効化できます。利用者側のオプトアウトもあり、ローカルの MXC サンドボックスを優先するオプトインの設定もあります。
  • レガシーな Windows サンドボックスをアンインストールする CLI コマンドがあります。
  • Windows の /sandbox-add-read-dir スラッシュコマンドは削除されました。
HOW TO USE

使い方

Linux と WSL2 でサンドボックスを使う前の準備の手順です。

  1. パッケージマネージャーで bubblewrap をインストールします。
  2. Ubuntu 24.04 で、bubblewrap のインストール後も必要なユーザー名前空間を作成できないという警告が出る場合は、追加の AppArmor プロファイルをコピーして読み込みます。
  3. そのプロファイルが使えない、または問題が解消しない場合は、AppArmor の非特権ユーザー名前空間の制限を無効化できます。
公式ヘルプを開く ↗
USE CASES

利用シーン

CASE 01

リポジトリ内のコード編集やテストの実行をエージェントに任せつつ、変更できる範囲をワークスペースに限りたい場面に workspace-write が向いています。

CASE 02

初めて扱うコードベースを、編集させずに調べさせたい場面に read-only が使えます。

CASE 03

複数のディレクトリにまたがる作業を、サンドボックスを外さずに行わせたい場面に writable roots が使えます。

CASE 04

通常のコマンドは境界内で進め、境界を越えるときだけ確認を受けたい場面に、workspace-write と on-request の組み合わせが使えます。

COMPARISON

Claude・Anthropic の対応する機能

比較の単位となる業務: エージェントが実行するコマンドのサンドボックス隔離と安全な実行

Linux での仕組みについては、Codex の Sandbox はシステムコールのフィルタリングに seccomp を使い、Claude Code の sandbox も npm 版とネイティブ版の両方で apply-seccomp ヘルパーを同梱しています。

サンドボックスに関わる確認の扱いでは、Claude Code の sandbox は auto モードと bypass-permissions モードで、サンドボックスのネットワークアクセス確認を自動承認します。Codex では、approvals_reviewer を auto_review にすると対象の承認確認がレビュー用のエージェントに回り、この自動レビューはサンドボックスの境界を変えません。

TIMELINE

これまでの変更

  1. macOS での大文字小文字違いのメタデータパスと、実行ファイルの探索に使われる置換可能なシンボリックリンクに対するサンドボックスのチェックが強化されました。

  2. Linux サンドボックスが bubblewrap と seccomp をどう使うかのドキュメントが明確化されました。Windows MXC サンドボックスのオプトアウトが追加されました。

  3. 複数の拒否ファイルがある場合の Linux サンドボックス起動が修正され、書き込み可能なサンドボックス構築用実行ファイルを拒否し、ripgrep の設定が deny-glob マスクを弱めないようになりました。レガシーな Windows サンドボックスをアンインストールする CLI コマンドも追加されました。

  4. Codex アプリで、アプリ更新後の Windows サンドボックスのリフレッシュ失敗が修正されました。サンドボックス化された PowerShell が保護されたユーザープロファイル配下の相対パスを保持するようになり、管理された要件で Windows MXC サンドボックスを無効化できるようになりました。

  5. Windows サンドボックスの PowerShell フォールバックと、長いパスの権限修復が修正されました。

  6. 承認されたコマンドでも明示的なファイルシステムの拒否が保持され、書き込み可能ルート配下の .aws ディレクトリが既定で保護されるようになりました。ネットワークが有効なサンドボックスでの macOS の TLS アクセスも修正されました。

  7. 通常の Windows 10 のパス、拒否された保存済み資格情報、大きな権限ポリシーに関する Windows サンドボックスの失敗が修正されました。ネストした書き込み可能ルートでの Linux サンドボックス起動も修正され、Linux と macOS で書き込み可能ルート全体の Git メタデータ保護が維持されるようになりました。

  8. ローカルの MXC サンドボックスを優先するオプトインの設定が追加されました。

  9. Windows の受信接続、Linux/macOS の特権ソケット、macOS の読み取り専用ファイルハンドル経由の書き込みに関する分離の抜け穴が塞がれました。

  10. 制限された WSL サンドボックスから Windows プロセスへの脱出がブロックされました。Windows の /sandbox-add-read-dir スラッシュコマンドが削除されました。

  11. macOS のサンドボックスがターミナル入力の注入をブロックするようになりました。

  12. Microsoft Store 版 PowerShell での Windows サンドボックス実行が修正されました。

  13. /cd によってサンドボックスの制限が弱まることが防止されました。リモートのサンドボックス強制は、実行側の実際のホームディレクトリ・OS・パス規則を使うよう改善されました。

  14. Unicode を含むユーザーパスでの、昇格された Windows サンドボックスのセットアップと起動エイリアスが修正されました。

  15. Linux と Windows で、拒否されたパスや読み取れないパスに対してサンドボックスの制限がフェイルクローズするようになりました。

  16. サンドボックス化されたプロセスツリーを確実に終了させるようになりました。

  17. exec-server のネイティブなサンドボックス化やネットワークプロキシの強制などを含め、Windows での実行とサンドボックスの信頼性が改善されました。

  18. Windows サンドボックスのセッションで、書き込み可能なルート内のファイル削除と、管理されたプライマリランタイムへのアクセスができるようになりました。

  19. Windows の ConPTY 入力処理 (改行とバックスペース) と、サンドボックスの資格情報再試行のエッジケースが修正されました。

  20. Agent approvals & security と Sandbox のドキュメントが更新され、Auto-review とサンドボックス境界の関係の説明が明確になりました。

SOURCES

出典

出典 24 件を表示