Codex Router の仕組み — アーキテクチャとリクエストフロー
Codex Router はコーディングエージェントと外部モデルプロバイダーの間にあるローカルサービスです。Codex が主要フロントエンドであり、同じ認証済みモデルレジストリを DeepSeek Harness、Gemini CLI、Cursor、Claude Code、OpenClaw、opencode、pi、omp、Command Code、Hermes Agent にも公開できます。このページではリクエストフローとセキュリティ境界を説明します。
なぜルーターが必要か
Codex App は Responses API と Codex 型のモデルカタログを期待します。Kimi と DeepSeek は、認証とリクエスト詳細が異なる OpenAI 互換の Chat Completions API を公開しています。Codex Router はそれらの契約を橋渡しし、ネイティブ GPT トラフィックは通常の ChatGPT Codex バックエンドのままにします。
4 つの構成要素
- 生成カタログが外部モデルを Codex の
model_catalog_jsonのネイティブ GPT モデルの隣に配置。 - ディスパッチャーが名前空間モデル ID でネイティブ/外部ルーティングを選択——
deepseek/、kimi-oauth/、anthropic-api/などで始まるものは外部パスへ。 - LiteLLM が Responses リクエスト・ストリーム・ツールコールを各プロバイダーのネイティブプロトコル(OpenAI 互換 Chat Completions と Anthropic Messages を含む)に変換。
- 認証情報フォワーダーが選択したプロバイダーの認証だけを注入し、他をすべて除去。
すべてのリスナーは 127.0.0.1 にバインドされ、サービス全体がマシン上でローカルに動作します。
リクエストフロー
Codex は Responses リクエストを 4202 ポートのループバックルーターに送信します:
| ポート | リスナー | 役割 |
|---|---|---|
| 4202 | ルーター | クライアント要求を受信し caller capability を認証 |
| 4200 | LiteLLM | Responses を各プロバイダーのネイティブプロトコルへ変換 |
| 4201 | Kimi OAuth | 更新済み OAuth bearer で Kimi に転送 |
| 4203 | API フォワーダー | 選択キーで API キープロバイダーに転送 |
ネイティブ GPT モデルの場合、ルーターは許可リスト化された Codex ヘッダーとネイティブモデル ID で ChatGPT Codex バックエンドに転送します——ネイティブリクエストを外部プロバイダーに送ることはありません。
レジストリモデル(例:kimi-oauth/k3)の場合、ルーターは呼び出し元を検証し、ゲートウェイモデルと内部キーを LiteLLM に渡し、LiteLLM がリクエストを変換して一致するフォワーダーに渡します。フォワーダーは内部キーを破棄し、選択したプロバイダー認証のみを注入します。ストリームは Responses イベントとして LiteLLM を経由して戻ります。
1 つのレジストリ、複数クライアント
Codex、DeepSeek Harness、Gemini CLI、Cursor、Claude Code、OpenClaw、opencode、pi、omp、Command Code、Hermes Agent は、プロバイダー表示とモデル選択状態を共有します。各パブリッシャーは外側の契約(Responses、Gemini、Anthropic Messages、Cursor edge)のみを適応し、同じルート要求パスへ戻します。Command Code と Hermes Agent は Claude Code と同じ Anthropic Messages 面を使い、opencode、pi、omp は認証済みのローカルループバック /v1 パスを受け取ります。公開先の 5 クライアントには MODEL_ROUTER_TARGET も 2 つ目のサービスもなく、プロバイダーの有効化やモデルのキュレーションでまとめて再公開されます。Codex 以外でネイティブ ChatGPT モデルを公開するには、ユーザーが chatgpt-session enable を明示実行する必要があります。
認証情報境界
| ルート | 入ってくる Codex 認証 | アップストリーム認証 |
|---|---|---|
| ネイティブ GPT | 許可リスト化・転送 | 既存の ChatGPT/Codex 認証 |
| Kimi OAuth | 破棄 | ~/.kimi-code の Kimi CLI OAuth bearer |
| Kimi API | 破棄 | Kimi Platform API キー |
| DeepSeek | 破棄 | DeepSeek API キー |
| GitHub Copilot | 破棄 | Copilot 権限とエンドポイント検証済みの GitHub fine-grained token |
Codex からルーターへ、内部サービスへの 2 つの信頼境界は別々のランダムキーを使用し、それぞれ mode 600 または現在ユーザー Windows ACL で保存されます。外部フォワーダーは、アップストリームへ送信する前に Codex アカウント・インストール・attestation・プライベートヘッダーを除去します。
GitHub Copilot は catalog-only プロバイダーです。fine-grained token はまず GitHub の Copilot アカウントエンドポイントで検証され、返された推論先は GitHub 所有の Copilot ホストに限定されます。ライブ検出はアカウントから見える、ストリーミングとツールコール対応の Responses モデルだけを表示するため、利用モデルと上限は Copilot プランおよび組織ポリシーに従います。
セキュリティモデル
- ローカル呼び出し元認証。 管理ベース URL には独立したランダムケーパビリティが含まれ、ルーターはモデルリクエストの読み取り前、アップストリーム接触前にそれを検証します。Codex は内蔵プロバイダーにルーター専用ヘッダーを付けられないため、ケーパビリティは URL パスに置かれます。ステータス・移行・サポートツールはそれを脱敏します。
- ブラウザアクセスなし。 ルーターは JSON コンテンツを要求し、ブラウザオリジンヘッダーを拒否し、CORS を許可しません。
- 脱敏されたエラー。 ネットワーク向けエラーは限定的で非機密。生の例外テキストは置き換えられます。
- 認証情報漏洩なし。 診断は存在とソースのみを報告し、値を報告しません。保護ファイルは mode
600または現在ユーザー ACL を使用。
トランスポートと圧縮
現在の Codex は認証付き Responses WebSocket を使う場合があります。ルーターは同じ caller-capability エッジで受け入れ、要求ごとに ID を導出し、クォータ/エラー情報を保持したまま同じ管理 Responses パスへ送ります。HTTP も引き続き対応します。Zstandard、gzip、deflate、Brotli の要求ボディを扱い、上限超過フレームはデコード前に拒否します。
外部 Chat Completions プロバイダーは OpenAI の不透明な暗号化圧縮ペイロードを作成できないため、ルーターは選択した外部モデルに続きの要約を生成させ、ルーター所有の kcr1: ペイロードに包みます。リプレイ時には普通の続きメッセージに変換します。
Codex 内に残るもの
コマンド、権限、MCP ツール、スキル、エージェントループ、タスク状態は Codex に残ります。ルーターはモデル推論と外部モデルの圧縮を処理します。選択したモデルやプロバイダーが実装していない機能を追加することはできません。
コラボレーションサブエージェントの場合、ルーターはネイティブタスクペイロードを認証済みのネイティブ Codex バックエンド経由で中継します——このリレーには有効な ChatGPT ログインが必要で、ログインフリーでは読み取り不能な暗号文を外部プロバイダーに転送せず、失敗して閉じます。モデルをサブエージェントとして有効化すると自動リサーチが行われます:分離プローブがストリーミングと強制ツールコールを検証し、合格したモデルは experimental v2 上書きとして公開。最初の実子ターンが機械ローカルの証明を記録し、構造的拒否は理由付きで v1 に降格します。生成されるルート agent 定義にはモデルごとの model_reasoning_effort も書き込まれるため、低エフォートの親がすべての子を暗黙に低エフォートへ固定することはありません。
条件を満たして見えるモデルへ委譲できないときは、子を生成して codex exited 1 を読む代わりに理由を尋ねられます:
./bin/model-router codex subagents explain <provider/model>
このコマンドは最初の阻害要因とそれを解消するコマンドを示し、タイプミス・未キュレーションのモデル・ネイティブスラグを区別します。また、そのルートの v2 主張がレジストリ由来か、ローカルの 5 項目チェック由来か、あなた自身の選択由来かも報告します。読み取り専用で、クォータを消費しません。
ネイティブツールとカスタムモデル向けスキルパック
ルーティングされたカスタムモデルも、Codex のスレッド、オートメーション、アプリ内ブラウザー、コンピューター操作ツールを利用できます。一部のモデルには明示的なツール呼び出しガイドが必要なため、インストーラーは codex-router、codex-app-threads、codex-in-app-browser、codex-computer-use の 4 つの管理対象スキルを追加します。同名のユーザー所有スキルは上書きせず、アンインストール時はルーター管理版だけを削除し、doctor がチェックアウトおよび現在のアプリツールセットとの整合性を確認します。
ネイティブカタログは保持される
統合は内蔵 OpenAI プロバイダー、ネイティブ GPT モデル、ChatGPT ログイン、プロファイル、MCP 設定、プロジェクトトラスト、推論デフォルトを保持します。Codex 設定にはマークされたルートブロックと不活性カスタムプロバイダーテーブルを 1 つ追加するだけです。disable は以前の値を正確に復元します。
関連:インストール、モデル概要、トラブルシューティング。