Codex harness

Codex ハーネスランタイム

Codex ハーネスターンのランタイム契約。セットアップとルーティングについては、 Codex ハーネスを参照してください。設定フィールドについては、 Codex ハーネスリファレンスを参照してください。

概要

Codex は、ネイティブモデルループ、ネイティブスレッドの再開、ネイティブツールの 継続、ネイティブ Compaction を管理します。OpenClaw は、チャネルルーティング、セッション ファイル、可視メッセージの配信、OpenClaw 動的ツール、承認、メディア 配信、およびその境界を囲むトランスクリプトミラーを管理します。

プロンプトのルーティングは、プロバイダー文字列だけでなく、選択されたランタイムに従います。 ネイティブ Codex ターンには Codex app-server の開発者指示が適用されます。明示的な OpenClaw 互換ルートでは、Codex 形式の OpenAI 認証またはトランスポートを 使用する場合でも、通常の OpenClaw システムプロンプトが維持されます。

OpenClaw は、Codex の組み込みパーソナリティを無効化して (personality: "none")、ネイティブ Codex スレッドを開始および再開します。これにより、ワークスペースのパーソナリティファイル と OpenClaw エージェントのアイデンティティが引き続き優先されます。それ以外については、ネイティブ Codex は Codex が管理する ベース/モデル指示とプロジェクトドキュメントの読み込みを維持します。軽量な OpenClaw 実行(cron など)では、引き続きプロジェクトドキュメントの読み込みが抑制されます。

OpenClaw の開発者指示は、OpenClaw ランタイムに関する事項、つまりソースチャネルへの 配信、OpenClaw 動的ツール、ACP 委譲、アダプターコンテキスト、および アクティブなエージェントワークスペースのプロファイルファイルを対象とします。Skills カタログと、ツール経由でルーティングされる MEMORY.md ポインターは、ターン単位のコラボレーション用開発者 指示として投影されます。メモリツールを利用できない場合、アクティブな BOOTSTRAP.md の内容 と完全な MEMORY.md は、代わりにプレーンなターン入力コンテキストへフォールバックします。

ほとんどの OpenClaw 動的ツールは、検索可能な openclaw 名前空間を使用します。 catalogMode: "direct-only" とマークされたツールは openclaw_direct を使用します。Codex はこれを、ネストされた Code Mode 実行に公開する代わりに、DirectModelOnly としてモデルから直接参照可能な状態に保ちます。

スレッドのバインディングとモデルの変更

OpenClaw セッションが既存の Codex スレッドに接続されると、次の ターンで、現在選択されているモデル、承認ポリシー、サンドボックス、 承認レビュー担当、およびサービスタイアが app-server に再送信されます。 openai/gpt-5.5 から openai/gpt-5.2 へ切り替えると、スレッドのバインディングは維持されますが、 新しく選択されたモデルで続行するよう Codex に要求します。

監督対象のバインディングは例外です。OpenClaw のモデルピッカーはロックされたままとなり、 再開時にはモデルとプロバイダーのオーバーライドが省略されるため、Codex は正規 スレッドに永続化されたモデルとプロバイダーを復元します。別のネイティブ Codex コントロールで、 その永続化された組み合わせを変更できます。また、初期スナップショットにより Codex の通常の モデル差異警告が表示される場合があります。外側の OpenClaw モデルとフォールバックチェーンが、 どちらかの代わりに使用されることはありません。

監督と安全な継続

Codex の監督は、同じ codex Plugin のオプトイン機能です。これは、 別の接続を通じてネイティブスレッドを検出し、アーカイブされていない セッションのみを Gateway カタログに投影します。明示的な appServer 接続 設定がない場合、通常のハーネスはエージェント単位のまま、この接続では管理対象のユーザーホーム stdio が使用されます。 一覧表示とメタデータの読み取りは受動的です。これらによって スレッドが再開されたり、OpenClaw がライブイベントをサブスクライブしたり、その 承認要求に応答したりすることはありません。

Gateway コンピューター上に保存されている、またはアイドル状態のセッションについて、ブランチとして続行 を実行すると、通常のモデルロック済み Chat が作成され、ソースの最後に永続化された終端ターンまでの ユーザーおよびアシスタントの履歴が、範囲を限定してミラーリングされます。最初の通常の Chat ターンでは、実際の承認ハンドラーがインストールされ、一時的なネイティブフォークを使用して、 モデルまたはプロバイダーをオーバーライドせずにスナップショットを固定します。Codex App Server は 現在のネイティブ設定を使用し、選択された組み合わせを返します。そのモデルがソースに最後に記録されたモデルと異なる場合は、 通常の警告を出力します。 同じ監督接続上で、OpenClaw は、その cwd およびランタイムポリシーの下にある正規の appServer ソース Codex ハーネススレッドを、その初回起動時に返されたモデルおよびプロバイダーと 完全に同じ組み合わせで開始し、範囲を限定した可視履歴を注入して、 一時的なフォークをアーカイブします。ソースが再開されることはありません。 正規スレッドは OpenClaw ハーネスの完全なツールサーフェスを備えています。 ソースの推論、ツール呼び出し、ツール結果は複製されません。 保留中およびコミット済みのバインディング状態を通してプライベート接続のスコープが維持されるため、 以降のすべてのターンは、ネイティブ認証とプロバイダー設定を使用して、その接続上に留まります。 監督が無効になっている場合や、バインディング/接続にずれがある場合は、通常のエージェントホームのハーネスへ 切り替えるのではなく、フェイルクローズします。

元の CLI、VS Code、Atlas、または ChatGPT のソースは、引き続き両方の カタログの対象となります。正規ブランチはネイティブ Codex スレッドですが、そのソース種別は appServer です。ネイティブクライアントがそのソース種別をフィルタリングする可能性があるため、 Codex Desktop に表示されることは保証されません。

アクティブなソースでは、新しいブランチの開始やアーカイブはできません。既存の監督対象 Chat は引き続き開くことができます。notLoaded はアクティビティが不明であることを意味し、アイドル状態を意味するものではありません。 OpenClaw は、ローカルの idle または notLoaded 行について、他に実行主体が存在しないことを明示的に確認し、 プロセスローカルのステータスを新しく読み取った後にのみ、アーカイブを許可します。Codex は、 1 つの App Server プロセス内ではスレッドの変更を直列化しますが、プロセス間で排他的な 実行主体または承認所有者のリースを提供しないため、その読み取りによって別のプロセスが スレッドを使用していないことを証明することはできません。OpenClaw は、正確な対象、または Codex のページ分割された子孫クエリによって返された、アーカイブされていない生成済み子孫の 既知のアクティブなバインディング所有者をブロックします。列挙エラー、循環、および 安全上限の超過はフェイルクローズします。ネイティブアーカイブは、別のプロセスの新しいターンと 競合する可能性があるため、確認は未知のクライアント、およびステータス読み取りと アーカイブの間の空白期間を対象とします。監督対象のモデルロック済み Chat は、ネイティブバインディングを 保護している間は削除できません。

ペアリングされた Node のカタログは、初期リリースではメタデータ専用のままです。現在の Node 呼び出し境界はリクエスト/レスポンス方式であり、実際の Codex ハーネスの バインディングに必要な、長時間継続するターンイベント、承認要求、ストリーミング出力を 伝送できません。そのため、行がアイドル状態であっても、リモートの 続行アーカイブ は 引き続き利用できません。

オペレーター向けのセットアップと Control UI の可視動作については、 Codex の監督を参照してください。

可視応答と Heartbeat

Codex ハーネス経由の直接/ソースチャットターンでは、内部 WebChat サーフェス向けの最終 アシスタント応答がデフォルトで自動配信されます。これは Pi ハーネスの 契約と同じです。エージェントは通常どおり応答し、OpenClaw は最終テキストを ソースの会話へ投稿します。エージェントが message(action="send") を呼び出さない限り 最終アシスタントテキストを非公開にするには、messages.visibleReplies: "message_tool" を設定します。

Codex の Heartbeat ターンでは、デフォルトで検索可能な OpenClaw ツール カタログに heartbeat_respond が追加され、ウェイクをサイレントのままにするか 通知するかをエージェントが記録できます。Heartbeat の自発的な動作に関するガイダンスは、Heartbeat ターンを スコープとする Codex コラボレーションモードの開発者指示として送信されます。通常のチャットターンは、 Codex Default モードのままです。HEARTBEAT.md が空でない場合、Heartbeat の 指示では、その内容をインライン化する代わりにファイルを Codex に示します。

フックの境界

レイヤー 所有者 目的
OpenClaw Plugin フック OpenClaw OpenClaw と Codex ハーネス間の製品/Plugin 互換性。
Codex app-server 拡張ミドルウェア OpenClaw バンドル Plugin OpenClaw 動的ツールを囲むターン単位のアダプター動作。
Codex ネイティブフック Codex Codex 設定による低レベルの Codex ライフサイクルとネイティブツールポリシー。

OpenClaw は、Plugin の動作をルーティングするために、プロジェクトまたはグローバルの Codex hooks.json ファイルを使用しません。ネイティブツールと権限のブリッジのために、OpenClaw は PreToolUsePostToolUsePermissionRequest、 および Stop のスレッド単位の Codex 設定を注入します。

Codex app-server の承認が有効な場合(approvalPolicy"never" ではない場合)、デフォルトで注入されるネイティブフック設定では PermissionRequest が省略され、 レビュー後の実際のエスカレーションは Codex の app-server レビュー担当と OpenClaw の承認ブリッジが 処理します。それでも互換性リレーを強制するには、permission_requestnativeHookRelay.events に追加します。SessionStartUserPromptSubmit などの他の Codex フックは、引き続き Codex レベルの制御です。v1 契約では、OpenClaw Plugin フックとして 公開されません。

OpenClaw 動的ツールについては、Codex が呼び出しを要求した後に OpenClaw がツールを 実行するため、Plugin とミドルウェアの動作はハーネスアダプター内で実行されます。Codex Code Mode は汎用的な動的結果をテキストとして受け取り、ネストされた 動的呼び出しを直列化します。呼び出し元は JSON のように見える結果を解析する必要があり、並行送信のために Promise.all に依存することはできません。Codex ネイティブツールについては、Codex が 正規のツールレコードを管理します。OpenClaw は選択したイベントをミラーリングできますが、 Codex が app-server またはネイティブフックのコールバックを通じて公開しない限り、 ネイティブスレッドを書き換えることはできません。

Codex app-server のレポートモード PreToolUse イベントは、Plugin の承認を 対応する app-server 承認まで保留します。ネイティブペイロードで openclaw_approval_mode: "report" が設定されているときに、 OpenClaw の before_tool_call フックが requireApproval を返すと、ネイティブフックリレーは Plugin の承認要件を記録し、 ネイティブの決定を返しません。Codex が後で同じツール使用に対する app-server の承認 要求を送信すると、OpenClaw は Plugin の承認プロンプトを開き、その 決定を Codex にマッピングします。Codex の PermissionRequest イベントは 別の承認経路であり、そのブリッジ用に設定されている場合は、引き続き OpenClaw の承認を経由できます。

Codex app-server の項目通知は、ネイティブの PostToolUse リレーでまだ処理されていないネイティブツールの完了について、非同期の after_tool_call 観測も提供します。これらはテレメトリ/互換性専用であり、ネイティブツール呼び出しを ブロック、遅延、変更することはできません。

Compaction と LLM ライフサイクルの投影は、ネイティブ Codex フックコマンドではなく、 Codex app-server の通知と OpenClaw アダプターの状態から得られます。 before_compactionafter_compactionllm_input、および llm_output は アダプターレベルの観測であり、Codex の内部リクエストまたは Compaction ペイロードを バイト単位でそのまま取得したものではありません。

Codex ネイティブの hook/started および hook/completed app-server 通知は、 軌跡の記録とデバッグのために codex_app_server.hook エージェントイベントとして 投影されます。これらは OpenClaw Plugin フックを呼び出しません。

V1 サポート契約

Codex ランタイム v1 でサポートされる機能:

サーフェス サポート 理由
Codex を介した OpenAI モデルループ サポート済み Codex app-server が OpenAI のターン、ネイティブスレッドの再開、ネイティブツールの継続を管理します。
OpenClaw のチャネルルーティングと配信 サポート済み Telegram、Discord、Slack、WhatsApp、iMessage、およびその他のチャネルはモデルランタイムの外部に留まります。
OpenClaw の動的ツール サポート済み Codex がこれらのツールの実行を OpenClaw に要求するため、OpenClaw は実行パスに留まります。
プロンプトおよびコンテキスト Plugin サポート済み OpenClaw は、Codex が所有するベース、モデル、および設定済みのプロジェクトドキュメントのプロンプトをネイティブ Codex レーンに残したまま、OpenClaw 固有のプロンプトとコンテキストを Codex のターンに投影します。OpenClaw はネイティブスレッドで Codex の組み込みパーソナリティを無効にし、エージェントワークスペースのパーソナリティファイルが引き続き信頼できる情報源となるようにします。ネイティブ Codex の開発者指示では、codex_app_server に明示的にスコープ指定されたコマンドガイダンスのみを受け入れます。従来のグローバルなコマンドヒントは、Codex 以外のプロンプトサーフェス向けに維持されます。
コンテキストエンジンのライフサイクル サポート済み 組み立て、取り込み、ターン後のメンテナンスが Codex のターンの前後で実行されます。コンテキストエンジンはネイティブ Codex Compaction を置き換えません。
動的ツールフック サポート済み before_tool_callafter_tool_call、およびツール結果ミドルウェアが、OpenClaw 所有の動的ツールの前後で実行されます。
ライフサイクルフック アダプターによる観測としてサポート llm_inputllm_outputagent_endbefore_compaction、および after_compaction が、実態を正確に表す Codex モードのペイロードで発火します。
最終回答の修正ゲート ネイティブフックの中継を通じてサポート Codex の Stopbefore_agent_finalize に中継され、revise は確定前にもう一度モデルを実行するよう Codex に要求します。
ネイティブのシェル、パッチ、MCP のブロックまたは観測 ネイティブフックの中継を通じてサポート Codex の PreToolUsePostToolUse は、Codex app-server 0.142.0 以降の MCP ペイロードを含む、コミット済みのネイティブツールサーフェス向けに中継されます。ブロックはサポートされますが、引数の書き換えはサポートされません。
ネイティブ権限ポリシー Codex app-server の承認と互換性ネイティブフックの中継を通じてサポート Codex app-server の承認要求は、Codex のレビュー後に OpenClaw を経由します。Codex はガーディアンレビューの前に PermissionRequest を発行するため、ネイティブ承認モードではこのネイティブフックの中継はオプトインです。
app-server の軌跡キャプチャ サポート済み OpenClaw は、app-server に送信した要求と、app-server から受信した通知を記録します。

Codex ランタイム v1 ではサポートされていません:

サーフェス V1 の境界 将来の対応方針
ネイティブツール引数の変更 Codex のネイティブなツール実行前フックはブロックできますが、OpenClaw は Codex ネイティブツールの引数を書き換えません。 置換後のツール入力に対応する Codex のフック/スキーマサポートが必要です。
編集可能な Codex ネイティブのトランスクリプト履歴 Codex が正規のネイティブスレッド履歴を所有します。OpenClaw はミラーを所有し、将来のコンテキストを投影できますが、サポート対象外の内部状態を変更すべきではありません。 ネイティブスレッドの操作が必要な場合は、明示的な Codex app-server API を追加します。
Codex ネイティブツールレコード向けの tool_result_persist このフックは、Codex ネイティブツールのレコードではなく、OpenClaw が所有するトランスクリプトへの書き込みを変換します。 変換済みレコードをミラーすることは可能ですが、正規データの書き換えには Codex のサポートが必要です。
詳細なネイティブ Compaction メタデータ OpenClaw はネイティブ Compaction を要求できますが、安定した保持/破棄リスト、トークン差分、完了概要、または要約ペイロードを受け取りません。 より詳細な Codex Compaction イベントが必要です。
Compaction への介入 OpenClaw では、Plugin やコンテキストエンジンがネイティブ Codex Compaction を拒否、書き換え、または置換することはできません。 Plugin がネイティブ Compaction を拒否または書き換える必要がある場合は、Codex の Compaction 前後フックを追加します。
バイト単位で同一のモデル API 要求のキャプチャ OpenClaw は app-server の要求と通知をキャプチャできますが、最終的な OpenAI API 要求は Codex コアが内部で構築します。 Codex のモデル要求トレースイベントまたはデバッグ API が必要です。

ネイティブ権限と MCP の情報要求

PermissionRequest について、OpenClaw が明示的な許可または拒否の 判断を返すのは、ポリシーが判断した場合のみです。判断なしという結果は許可ではありません。Codex は これをフックによる判断なしとして扱い、独自のガーディアンまたはユーザーによる 承認パスへフォールスルーします。

Codex app-server の承認モードでは、デフォルトでこのネイティブフックが省略されます。これは、 permission_requestnativeHookRelay.events に明示的に含まれているか、 互換性ランタイムがこれをインストールしている場合を除き適用されます。

オペレーターが Codex のネイティブ権限要求に対して allow-always を選択すると、 OpenClaw は、そのプロバイダー/セッション/ツール入力/cwd の完全に一致する フィンガープリントを、制限されたセッション期間中記憶します。記憶された判断は 意図的に完全一致のみに限定されます。コマンド、引数、ツールペイロード、または cwd が変更されると、新たな承認が必要になります。

Codex が _meta.codex_approval_kind"mcp_tool_call" としてマークした場合、 Codex MCP ツールの承認に関する情報要求は OpenClaw の Plugin 承認フローを経由します。Codex の request_user_input は、発生元セッションに対してプロバイダーに依存しない Gateway の質問を登録します。 Control UI は Gateway の質問カードを表示し、チャネルが対応している場合、 秘密情報ではない単一の選択肢には型付きチャネルボタンが使用されます。 ボタンのタップ、Control UI での回答、次にキューに入ったプレーンテキストの返信はすべて、 OpenClaw が app-server の回答を返す前に、同一の Gateway レコードを解決します。 Codex の自動解決と試行の中止により、待機時間が制限され、レコードがキャンセルされます。 秘密情報に関する質問は、警告付きのテキスト返信パスのみで完全に処理されます。その他の MCP 情報要求は、安全側に倒して失敗します。

これらのプロンプトを伝達する一般的な Plugin 承認フローについては、 Plugin 権限要求を参照してください。

キューの誘導

アクティブ実行キューのステアリングは、Codex app-server の turn/steer に対応します。 デフォルトの messages.queue.mode: "steer" では、OpenClaw は設定された静穏期間中のステアモードのチャット メッセージをまとめ、到着順に 1 件の turn/steer リクエストとして送信します。

Codex のレビューと手動 Compaction ターンでは、同一ターンのステアリングが拒否される場合があります。その 場合、OpenClaw はアクティブな実行が終了するまで待ってから プロンプトを開始します。メッセージをステアリングする代わりにデフォルトでキューに入れる場合は、/queue followup または /queue collect を使用してください。ステアリングキューを参照してください。

Codex フィードバックのアップロード

ネイティブ Codex ハーネスのセッションで /diagnostics [note] が承認されると、 OpenClaw は関連する Codex スレッドについて Codex app-server の feedback/upload も呼び出します。 これには、一覧に含まれる各スレッドのログと、利用可能な場合は生成された Codex サブスレッドが含まれます。

アップロードは Codex の通常のフィードバック経路を通じて OpenAI サーバーに送信されます。その app-server で Codex フィードバックが無効になっている場合、コマンドは app-server エラーを返します。完了した診断の応答には、送信されたスレッドのチャンネル、 OpenClaw セッション ID、Codex スレッド ID、およびローカルの codex resume <thread-id> コマンドが一覧表示されます。

承認を拒否または無視した場合、OpenClaw はそれらの Codex ID を表示せず、 Codex フィードバックも送信しません。このアップロードは、ローカルの Gateway 診断エクスポートを置き換えるものではありません。承認、プライバシー、ローカルバンドル、およびグループチャットの動作については、診断エクスポートを参照してください。

完全な Gateway 診断バンドルを含めず、現在接続されているスレッドの Codex フィードバックだけをアップロードする場合に限り、 /codex diagnostics [note] を使用してください。

Compaction とトランスクリプトミラー

選択したモデルが Codex ハーネスを使用する場合、ネイティブスレッドの Compaction は Codex app-server が担当します。OpenClaw は Codex ターンの事前 Compaction を実行せず、 Codex の Compaction をコンテキストエンジンの Compaction に置き換えず、ネイティブ Compaction を 開始できない場合に OpenClaw または公開 OpenAI の要約へ フォールバックすることもありません。OpenClaw は、チャンネル履歴、検索、 /new/reset、および将来のモデルやハーネスの切り替えに使用するトランスクリプトミラーを保持します。

/compact や Plugin が要求する手動 Compaction 操作など、明示的な Compaction リクエストは、thread/compact/start を使用してネイティブ Codex Compaction を開始します。 OpenClaw は、Codex が対応する contextCompaction 完了項目を発行するまで リクエストと共有クライアントのリースを開いたままにし、その後 Compaction ターンを完了として報告します。その終了ターンが設定された Compaction タイムアウトを超えると、OpenClaw はネイティブターンの中断を要求します。Codex が終了状態を報告するか、 中断 RPC を確認するまで、リースとスレッド単位の Compaction フェンスは保持されます。Codex が中断の猶予 期間内に確認しない場合、OpenClaw はフェンスを解放する前に接続を破棄します。リモート 接続では、対応するスレッドのバインディングも切り離されるため、後続の処理が 未確認のリモートターンと重複することはありません。破棄された接続上のほかのターンは失敗し、 新しいクライアントで再試行できます。クライアントの終了、リクエストのキャンセル、または Compaction ターンの失敗は、失敗した操作を返します。コンテキスト圧力による自動 Compaction は Codex の役割です。OpenClaw がネイティブ Compaction を開始するのは、手動で 要求されたトリガーに対してのみです。

コンテキストエンジンが Codex スレッドのブートストラップ投影を要求すると、OpenClaw は ツール呼び出しの名前と ID、入力形式、および編集済みのツール結果 コンテンツを新しい Codex スレッドへ投影します。生のツール呼び出し引数の 値は、その投影にコピーしません。

ミラーには、ユーザープロンプト、アシスタントの最終テキスト、および app-server が発行した場合は軽量な Codex の推論または計画レコードが含まれます。OpenClaw は ネイティブ Compaction の開始と終了状態を記録しますが、 人間が読める Compaction の要約や、Compaction 後に Codex が保持した エントリの監査可能な一覧は公開しません。

Codex が正規のネイティブスレッドを所有するため、tool_result_persist は Codex ネイティブのツール結果レコードを書き換えません。これは、OpenClaw が OpenClaw 所有のセッショントランスクリプトへツール結果を書き込む場合にのみ適用されます。

メディアと配信

OpenClaw は引き続きメディア配信とメディアプロバイダーの選択を担当します。画像、 動画、音楽、PDF、TTS、およびメディア理解では、agents.defaults.mediaModels.imageagents.defaults.mediaModels.videopdfModeltts などの対応するプロバイダー/モデル 設定を使用します。

テキスト、画像、動画、音楽、TTS、承認、およびメッセージングツールの出力は、引き続き 通常の OpenClaw 配信経路を通ります。メディア生成に レガシーランタイムは必要ありません。Codex が savedPath を含むネイティブ画像生成項目を発行すると、 Codex ターンにアシスタントテキストがない場合でも、OpenClaw はそのファイルを変更せずに通常の応答メディア 経路へ転送します。

関連項目

Was this useful?
On this page

On this page