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 forwardexposed 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変更時に同じ評価セットを再実行できるようにする。

実装・移行手順

  1. 現行Agentが読むファイル、書く場所、実行するコマンド、外部接続を列挙する。
  2. workspaceをManifestへ移し、必要なCapabilitiesだけを指定する。
  3. Unix-localで正常系と不正パス、巨大出力、タイムアウトを試す。
  4. DockerSandboxClientへ切り替え、同じAgentと評価セットを実行する。
  5. 成果物のコピー、resume、snapshot、公開ポートの回収方法を実装する。
  6. 秘密情報をファイルへ残さない終了処理を追加する。
  7. ホステッド環境へ移す場合は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で同じ評価を通した

一次情報