サンドボックス
Codexのサンドボックス機構は、AIエージェントの安全な自律実行を実現するOS-native技術です。プラットフォーム別の実装と設定方法を解説します。
サンドボックスとは
Codexのサンドボックスは、AIエージェントの実行環境を安全に隔離するプラットフォームネイティブの機構です。特にFull Autoモードにおいて、以下の制約をデフォルトで適用します。
- ネットワークアクセス無効 — 外部へのHTTP/HTTPS通信、DNS解決、ソケット接続がすべてブロックされます。データの流出や外部サービスへの意図しないアクセスを防ぎます。
- 書き込み範囲の制限 — ファイルの書き込みはプロジェクトのワークスペースディレクトリと一時ディレクトリに制限されます。システムファイルや他のプロジェクトへの書き込みは不可能です。
- プロセス隔離 — Codexが起動するサブプロセスもサンドボックス内で実行され、制約が継承されます。
サンドボックスは「許可されていない操作はすべてブロック」するホワイトリスト方式です。明示的に許可された操作のみが実行可能なため、未知の攻撃ベクトルに対しても防御力を発揮します。
プラットフォーム別実装
Codexは各OSのネイティブサンドボックス機構を活用しています。仮想マシンやコンテナではなく、OSカーネルレベルの安全機構を直接利用するため、オーバーヘッドが極めて小さいのが特徴です。
macOS: SBPL / sandbox-exec
macOSでは、AppleのSeatbelt(SBPL: Sandbox Profile Language)を使用します。これはmacOSアプリのApp Sandboxと同じ基盤技術です。
- sandbox-exec コマンドでプロセスを起動し、SBPLプロファイルで権限を定義
- ファイルシステム、ネットワーク、プロセス間通信を細かく制御
- macOS 10.15以降で完全対応
(version 1)
(deny default)
(allow file-read* (subpath "/workspace"))
(allow file-write* (subpath "/workspace"))
(allow file-read* (subpath "/tmp"))
(deny network*)Linux: Landlock + seccomp-bpf
Linuxでは2つのカーネルセキュリティ機構を組み合わせています。
- Landlock — ファイルシステムアクセスを制御するLinux Security Module(LSM)。カーネル5.13以降で利用可能。プロセスが自身の権限を制限できる「unprivileged sandboxing」を実現します。
- seccomp-bpf — システムコールレベルでの制御。許可するシステムコールをホワイトリスト方式で定義し、不正なシステムコールをブロックします。
Linux環境ではカーネルバージョン5.13以降を推奨します。uname -r でバージョンを確認できます。Landlock非対応の古いカーネルでは、seccomp-bpfのみでフォールバックします。
Windows: Restricted Token + ACLs
WindowsではWindowsセキュリティの仕組みを活用します。
- Restricted Token — プロセスのアクセストークンから特権を除去し、最小権限で実行します。管理者権限の昇格を防止します。
- ACLs(Access Control Lists) — NTFSのACLを使って、ファイルシステムの読み書き範囲を制限します。ワークスペース外への書き込みをOS レベルでブロックします。
| プラットフォーム | 技術 | カーネル要件 | 特徴 |
|---|---|---|---|
| macOS | SBPL / sandbox-exec | macOS 10.15+ | App Sandboxと同じ基盤、成熟度が高い |
| Linux | Landlock + seccomp-bpf | Kernel 5.13+ | root権限不要、最も柔軟 |
| Windows | Restricted Token + ACLs | Windows 10+ | NTFSセキュリティと統合 |
設定方法
.codex/config.toml でサンドボックスの動作をカスタマイズできます。
[sandbox]
# ワークスペースへの書き込み許可(デフォルト: true)
workspace_write = true
# ネットワークアクセス(デフォルト: false)
network_access = false
# 追加の書き込み許可ディレクトリ
# additional_write_paths = ["/tmp/build-cache", "/var/log/app"]設定項目の詳細
| 設定キー | デフォルト | 説明 |
|---|---|---|
workspace_write |
true |
ワークスペースディレクトリへの書き込みを許可 |
network_access |
false |
外部ネットワークへのアクセスを許可 |
additional_write_paths |
[] |
追加の書き込み許可パス(配列) |
network_access = true を設定すると、Codexが外部APIやサービスにアクセスできるようになります。セキュリティリスクを理解した上で、必要な場合のみ有効にしてください。
Full Autoモードの安全性
Full Autoモードでは、Codexがファイル編集もコマンド実行も人間の承認なしに自動で行います。この強力な自律性は、サンドボックスによって安全性が担保されています。
安全性を担保する仕組み
ネットワーク隔離
デフォルトでネットワークアクセスが無効のため、機密データの外部送信や、悪意のあるスクリプトのダウンロードが不可能です。npm install等のパッケージインストールも制限されます。
ファイルシステム隔離
書き込みがワークスペースに制限されるため、システムファイルの改ざんや他プロジェクトへの影響を防ぎます。/etc、~/.ssh などの重要ディレクトリは保護されます。
プロセス隔離
Codexが起動したすべてのサブプロセスにもサンドボックス制約が継承されます。bash -c "curl ..." のような間接的なエスケープも防止します。
Git Worktree統合
デスクトップAppでは各タスクが独立したGit Worktreeで実行されます。メインブランチを直接変更することなく、安全に検証できます。
Full Autoモード + サンドボックスの組み合わせにより、「自律性」と「安全性」を両立しています。人間がすべてを監視しなくても、OSレベルの制約により被害を限定できます。
カスタマイズ
デフォルトのサンドボックス設定は最も安全ですが、タスクの要件に応じて制約を緩和できます。
書き込み範囲の拡張
ビルドキャッシュや一時ファイルなど、ワークスペース外への書き込みが必要な場合に設定します。
[sandbox]
additional_write_paths = [
"/tmp/build-cache",
"/home/user/.cache/node_modules",
]ネットワークアクセスの許可
API呼び出しやパッケージのダウンロードが必要な場合に設定します。
[sandbox]
network_access = truedanger-full-access
すべてのサンドボックス制約を無効化するオプションです。テスト環境やCI/CDパイプラインでのみ使用してください。
codex --danger-full-access "deploy to staging"--danger-full-access はサンドボックスを完全に無効化します。本番環境では絶対に使用しないでください。このフラグを使う場合は、他の安全機構(コードレビュー、ステージング環境など)で補完してください。
Claude Code Hooksとの比較
CodexのサンドボックスとClaude CodeのHooksは、どちらもAIエージェントの安全性を確保する機構ですが、アプローチが根本的に異なります。
| 項目 | Codex サンドボックス | Claude Code Hooks |
|---|---|---|
| アプローチ | OSレベルの隔離(予防的) | イベントベースの制御(反応的) |
| 実装レイヤー | カーネル / OS API | アプリケーション層 |
| ネットワーク制御 | OS-nativeブロック | Hookスクリプトで制御 |
| ファイル書込み制御 | OS-nativeアクセス制御 | PreToolUseフックで検査 |
| バイパス耐性 | 高(カーネルレベル) | 中(アプリ層で回避の余地あり) |
| 柔軟性 | 中(OS制約の範囲内) | 高(任意のスクリプト実行) |
| 設定の容易さ | 簡単(config.toml数行) | やや複雑(スクリプト記述が必要) |
| カスタムロジック | 限定的 | 自由(任意のbash/Python等) |
Codexのサンドボックスは「ハードな境界」を提供し、Claude CodeのHooksは「ソフトな制御」を提供します。理想的には、サンドボックスで基本的な安全性を確保し、Hooksでビジネスロジックに応じた細かな制御を行う、という併用がベストプラクティスです。
使い分けの指針
- Codexサンドボックスが向いているケース — Full Autoモードでの自律実行、ネットワーク隔離が必要な場合、OSレベルの堅牢な制約が求められる場合。
- Claude Code Hooksが向いているケース — 特定のツール呼び出しに対するカスタムバリデーション、コミット前の自動フォーマット、プロジェクト固有のポリシー適用。