OpenAI Agents SDKのSandbox Agentsは、Agentの指示と能力を保ちながら、実行環境を差し替えるための共通ハーネスを提供する。コード実行の自由度は高まるが、sandboxを使うだけで安全になるわけではなく、能力、入力、成果物、秘密情報の境界を設計する必要がある。
何が変わったか
OpenAIはAgents SDKのTypeScript版へSandbox Agentsとオープンソースのハーネスを追加した。SandboxAgentは作業空間を表すManifest、ShellやSkillsなどの能力、実行先となるsandbox clientを組み合わせて動く。実行先はAgent定義ではなくRunConfigへ置かれるため、同じAgentをUnixローカル、Docker、ホステッド環境へ移しやすい。
成果物はファイルだけでなく、Agentが起動したローカルWebアプリやレポートサーバーを公開ポート経由で確認する構成も取れる。
変更前後の差
| 項目 | 個別実装 | Sandbox Agents |
|---|---|---|
| 作業空間 | アプリごとに一時ディレクトリを実装 | Manifestで記述 |
| 実行能力 | Shell権限を都度組み込み | Capabilitiesとして明示 |
| 実行先 | Agentロジックと密結合 | RunConfigのclientで切替 |
| 成果物 | 独自コピー処理 | inspect・copy・resume・snapshotを設計可能 |
| ローカル確認 | 個別port forward | exposed portの共通契約 |
| 移行 | Provider変更でAgentを書き換え | Agentを保ちclientを交換 |
誰に影響するか
リポジトリを修正するcoding agent、CSVや文書を変換する業務Agent、テスト用アプリを起動するAgent、複数テナントの処理を隔離したいSaaS、ローカルからホステッドsandboxへ段階移行したいチームに影響する。単純な会話Agentでファイルやプロセスを扱わない場合は、導入効果が小さい。
期限
強制移行期限はない。既存のAgents SDK Agentはそのまま運用できる。新規にコード実行やファイル操作を追加する時点で、独自の一時環境を増やす前にSandboxAgentの適合性を評価する。
必要な対応
Agentが必要とする能力を、Shell、Skills、入力ファイル、Gitリポジトリ、公開ポートに分解する。実行環境へ渡す秘密情報を最小化し、ネットワーク接続の有無、書き込み可能範囲、成果物の持ち出し条件を決める。Agentのpromptとsandbox設定を別々に版管理し、Provider変更時に同じ評価セットを再実行できるようにする。
実装・移行手順
- 現行Agentが読むファイル、書く場所、実行するコマンド、外部接続を列挙する。
- workspaceをManifestへ移し、必要なCapabilitiesだけを指定する。
- Unix-localで正常系と不正パス、巨大出力、タイムアウトを試す。
- DockerSandboxClientへ切り替え、同じAgentと評価セットを実行する。
- 成果物のコピー、resume、snapshot、公開ポートの回収方法を実装する。
- 秘密情報をファイルへ残さない終了処理を追加する。
- ホステッド環境へ移す場合はProvider差分だけを構成として追加する。
失敗しやすい点
Agentへ広いShell権限を与える、hostの作業ディレクトリをそのままmountする、Provider変更時にネットワーク・UID・ファイル権限の差を確認しない、最終回答だけ保存して生成ファイルを回収しない、公開ポートを認証なしで共有することが問題になる。Skillsを可変ブランチから読み込む場合は、同じ実行が再現できなくなる。
リスク
悪意ある入力によるコマンド実行、秘密情報のファイル残存、成果物の取り違え、sandbox終了前の未回収、ホステッドProvider障害、snapshotに機密データが残る危険がある。sandboxは隔離を助けるが、Agentへ何を入力し、何を外へ持ち出すかのポリシーを自動で決めるものではない。
評価方法
- 同一課題のUnix-local・Docker間成功率
- 禁止パスへのアクセス拒否率
- 成果物の完全回収率
- timeout後に残存するprocess数
- sandbox作成・破棄時間
- 1実行当たりのCPU・メモリ・費用
- snapshotからの再開成功率
- 秘密情報スキャンの検出件数
ロールバック
SandboxAgent経路をFeature Flagで無効化し、既存の読み取り専用Agentまたは従来処理へ戻す。進行中sandboxは新規入力を止め、必要な成果物だけ回収して破棄する。Provider切替で問題が起きた場合はAgent定義を変えず、以前のclient設定へ戻して差分を限定する。
編集部分析
重要なのは「Agentがコードを実行できる」ことではなく、Agentの意図と実行基盤を別々に変更できる点である。独自sandboxをAgentごとに作ると、権限、監査、終了処理が分散する。ManifestとCapabilitiesを共通契約にすれば、実行先を変えても同じ安全要件と評価を適用しやすい。
実務チェックリスト
- [ ] 必要なCapabilitiesを最小化した
- [ ] Agent定義とProvider設定を分離した
- [ ] host全体をmountしていない
- [ ] 成果物・snapshot・公開ポートの扱いを決めた
- [ ] timeout後のprocess終了を確認した
- [ ] 秘密情報の残存検査を行った
- [ ] Unix-localとDockerで同じ評価を通した