エージェントのハーネスは OpenAI が実行します。アプリケーションはハーネスに作業を送信し、結果を受け取ります。エージェントにコンピューティングリソースやファイルが必要な場合は、環境を追加します。
構成要素
- ハーネス: モデルとツールの実行ループを処理し、エージェントのセッションを維持する、OpenAI がホストする Codex インスタンスです。
- 環境: エージェントがコマンドやコードを実行し、ファイルを操作する場所です。リモートのサンドボックス、手元のノート PC、Docker コンテナ、AWS Lambda 関数などを環境として使用できます。
- アプリケーションサーバー: エージェントをプロダクトに接続する、開発者が実装するコードです。タスクの送信、イベントの受信、関数ツールの処理を行います。独自の環境を用意する場合は、そのライフサイクルも管理します。
まずはタスクに必要な構成要素から始めます。ハーネスは環境がなくても動作し、アプリケーションはストリーミングや Webhook を通じて進捗を受け取れます。
環境なしでの利用開始
質問に回答したり、ツールを使って外部サービスにアクセスしたりするエージェントは、専用のコンピューティングリソースやファイルを必要としない場合があります。environment.type を none に設定します。以下のコードは環境設定の部分を示しています。セッションの作成には、エージェントと初期入力も必要です。
{
"environment": {
"type": "none"
}
}
アプリケーションはセッションに入力を送信します。ハーネスはモデルを呼び出し、設定されたツールを使用して、結果を返します。OpenAI は、後続の作業に備えてセッションを維持します。
ハーネスはリモートの MCP ツールを直接呼び出せます。関数ツールの場合は、開発者が実装するコードで各呼び出しを受け取り、関数を実行して結果を返します。
環境がない場合、組み込みの Bash ツールと apply-patch ツール、ワークスペースのファイル、エグゼキューターの MCP は利用できません。

ここに示すオプションの仮想ランタイムは、アプリケーションの関数ツールを通じてファイルとシェルコマンドを提供します。
OpenAI ホスト型環境の追加
エージェントがスクリプトの実行、ファイルの編集、成果物の作成を行う必要がある場合は、environment.type を openai_hosted に設定します。OpenAI がセッション用のサンドボックスを作成し、管理します。
エージェントに必要なパッケージ、ファイル、ネットワークアクセスを設定します。ハーネスはサンドボックス内でコマンドを直接実行します。アプリケーションは引き続きタスクの送信、イベントの受信、関数ツールの処理を行います。

破線の矢印は、以下で説明するように環境を自分で管理する場合にのみ当てはまります。
設定オプションについては、OpenAI ホスト型環境を参照してください。
独自環境の接続
エージェントが独自のインフラストラクチャ、プライベートネットワーク、カスタムソフトウェアを必要とする場合は、environment.type: "self_hosted" を使用します。
開発者が実装するコードで環境を起動し、エグゼキューターをセッションに接続します。エグゼキューターは、ハーネスが要求するコマンドやツールを実行します。アプリケーションは個々のコマンドを転送することなく、接続とライフサイクルを管理します。
プロビジョニング、再接続、シャットダウン、保持が必要なファイルの管理は、開発者が担当します。これらの処理は、アプリケーションサーバーや Webhook ハンドラーで管理できます。

コンピューティングリソースを停止する前に、受信する作業の処理を調整し、実行待ちの処理がないことを確認します。
セットアップとシャットダウンの要件については、サンドボックスの接続とサンドボックスのライフサイクルを参照してください。
進捗と結果の受信
どの環境を選択しても、次のいずれか、または両方を使用できます。
- ストリーミング: プロダクトに表示する出力など、エージェントの作業中に発生する詳細なイベントを受信します。
- Webhook: ストリームを開いたままにせず、セッションの状態変更を受信します。ハンドラーでは、結果の取得、関数ツールの実行、セルフホスト型環境の管理を行えます。
関数ツールには、呼び出しを受け取って結果を返すハンドラーが必要です。このハンドラーが利用できない場合、エージェントは結果を待ち続けることがあります。イベントやライフサイクルを処理するハンドラーで障害が発生した場合も、進捗の更新や環境の管理が中断される可能性があります。