この記事のポイント
自社プロダクトにCodex agentを組み込むなら「App Server + JSON-RPC」が第一候補。MCPは軽量統合、SDKはCI/自動化用途で使い分ける
Thread/Turn/Itemの3プリミティブと双方向通信・承認フローが揃うのはApp Serverのみ。CLIやMCPでは同等の統合はできない
認証はトランスポート依存。stdio直接接続なら不要、WebSocketならCapability TokenかSigned Bearer Token(JWT)を選ぶ
認証方式は 「codex login status」 で確認し、APIキー経路に切り替えるときは 「codex login --with-api-key」 で明示的に指定する
WebSocketトランスポートは2026年7月時点で実験的扱い。本番はstdioかUnix Socketで始めるのが安全

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。
Codex App Server(コーデックス アップサーバー)は、OpenAIが2026年2月4日に公開した、Codex agentを単一の統一APIで駆動するJSON-RPC 2.0系の双方向プロトコルです。
VS Code拡張・macOSデスクトップアプリ・Codex Web・JetBrains/XcodeのIDE統合といったリッチクライアントが、共通のApp Server経由で動くようになりました。Codex CLIも 「codex --remote」 オプションでApp Serverに接続する形で参加できます。
本記事では、Codex App Serverの定義と誕生背景、なぜMCPを部分的に採用しなかったのか、Thread/Turn/Itemの3プリミティブによる会話管理、Codex CLI・SDK・MCPとの使い分け、TypeScriptによる最小実装、認証と課金経路の設計、そして選定で詰まる論点までを、2026年7月時点の一次情報で整理します。
目次
Codex App Serverとは?Codex agentのUIと中身を分離する統一プロトコル
Codexハーネス全体の中でのApp Serverの位置づけ
Codex App Serverが解決した「サーフェスごとに実装が分断される」問題
業界標準化の動き——ACP(Agent Client Protocol)との関係
Codex App Serverのアーキテクチャ——Thread/Turn/Itemと双方向JSON-RPC
トランスポート——stdio・WebSocket・Unix Socketの3種
Codex App Server・Codex CLI・Codex SDK・MCPの使い分け
Business/Enterprise向けCodex access tokens
Codex App Serverの運用で見落としやすい実験的機能
Codex App Serverとは?Codex agentのUIと中身を分離する統一プロトコル

Codex App Server(コーデックス アップサーバー)とは、OpenAIが2026年2月4日に公開した、Codex agentを単一のAPIで駆動する双方向プロトコルです。基本トランスポートは「JSON-RPC 2.0 over JSONL (stdio)」で、「"jsonrpc": "2.0"」ヘッダを省略した「JSON-RPC lite」形式を採用しつつ、WebSocketやUnix Socket経由でも接続できます。
位置づけとしては単なる「新しいAPIエンドポイント」ではなく、VS Code拡張・macOSデスクトップアプリ・Codex Web・JetBrains/XcodeのIDE統合といったリッチクライアントを動かす共通インターフェイスにあたります。
Codex CLIも 「codex --remote」 オプションでApp Serverに接続する形で参加できます。

VS Code拡張のCODEXパネルで 「just fmt」・「cargo test -p codex-app-server」 の進行状況を表示している様子(出典:OpenAI)
Codexハーネス全体の中でのApp Serverの位置づけ

「Codexハーネス」とは、OpenAIがCodex agentのコア実装(推論ループ・スレッド管理・サンドボックス実行)を指す内部用語です。
このハーネスを複数のクライアントから安全に呼び出すために設計されたのがApp Server層です。
-
Codex agentコア
モデル呼び出し・推論ループ・スレッド永続化・ツール実行の判断ロジック。Rust実装(「codex-rs」)
-
App Server(本記事のテーマ)
上記コアをクライアントに公開するJSON-RPC 2.0系プロトコル。会話・ターン・アイテムの3プリミティブで駆動
-
ツール実行・サンドボックス層
シェルコマンド実行・ファイルシステム操作・サンドボックスポリシーはCodex harness側の責務。App Serverはこの実行結果を承認フロー付きで各クライアントに通知する
つまりCodexは「ターミナルで動くコーディングツール」から「複数クライアントで共有できるプラットフォーム」へと位置づけを変え、App Serverはその転換を実現する技術基盤として追加されました。
単体で使うものではなく、クライアント側から呼び出す前提のバックエンドとして理解するのが要点です。
Codex App Serverが解決した「サーフェスごとに実装が分断される」問題

Codex App Serverの意義を理解するには、それ以前にどんな課題があったのかを整理するのが早道です。
App Server導入以前は、Codex CLI・Codex Web(chatgpt.com)・VS Code拡張・macOSアプリなど、CLI/TUI系とIDE/Web統合系で実装差分が生じていました。
各クライアント別実装がもたらした3つの摩擦

同じCodex agentであっても実装が別れていたため、以下のような摩擦が発生していました。
-
機能追加の同期問題
CLIに新機能を入れても、VS Code拡張・Webアプリに反映されるまで時間差が生じる。逆もまた然り
-
セッション・会話状態の非互換
CLIで開始した会話をVS Codeに引き継げない。プラットフォーム間の永続化ロジックがバラバラ
-
サードパーティIDE統合の困難さ
JetBrainsやXcodeがCodexを組み込みたいと考えても、公開されたAPIが「モデル呼び出しレベル」しかなく、承認フロー・差分表示・ツール実行の設計を各社が独自に作る必要があった
これは開発リソースの重複だけでなく、ユーザー体験の一貫性を大きく損ないました。

Codex Webで「Update login success message」の変更内容・テスト結果・「login.rs」 の差分をVersion別に確認している様子(出典:OpenAI)
Codex Webは、VS Code拡張と同じApp Server経由で動きます。Codex agentが生成した「変更サマリ・テスト実行結果・ファイルdiff」を、今度はブラウザ側UIで受けているだけです。
同じagent実行結果をどのサーフェスでも同じ形で扱える設計が、App Server層の核心にあたります。
OpenAIが「Codexプラットフォーム」を標榜する以上、UIごとに挙動が違うのは商品戦略として持続できない状況になっていたわけです。
なぜMCPをそのまま採用しなかったのか

CodexはすでにMCP(Model Context Protocol)に対応しており、外部ツールとの連携にはMCPを使っています。
「なぜクライアント統合にもMCPを使わないのか」という疑問は自然に浮かびます。
InfoQのCelia Chen氏のインタビューによれば、OpenAIは当初MCPでの統合を試みましたが、「MCPのセマンティクスをVS Codeで期待通りに保持することが難しかった」と説明しています。
MCPは本来「モデル ⇄ ツール」を繋ぐプロトコルで、以下の役割分担で設計されています。
| プロトコル | 接続の向き | 主な用途 |
|---|---|---|
| Codex App Server | クライアント → Codex agent | IDE・CLI・Webアプリなどが「Codex agent自体を呼び出す」 |
| MCP | Codex agent → 外部ツール | データベース・Figma・ブラウザなど「Codexが使うツールを繋ぐ」 |
この表が示すように、両者は方向も役割も異なるプロトコルです。
MCPはツール指向で、「ツールを列挙する/呼び出す/結果を返す」というシンプルな契約に最適化されています。
一方、IDE統合で必要なのは「1つのユーザーリクエストが複数のツール実行・承認フロー・ストリーミング差分表示を伴う会話全体」を管理することです。
MCPで実装しようとすると、この「会話全体のライフサイクル」を各クライアントが個別に組み立て直す必要がありました。
App Serverは、この会話ライフサイクルそのものをプロトコルレベルで規定することで、クライアント側の実装負担を大幅に削減しています。
業界標準化の動き——ACP(Agent Client Protocol)との関係

Codex App Serverと並行して、業界横断のプロトコル標準化も進んでいます。
Zed Industriesが主導し、JetBrainsが支援する「Agent Client Protocol(ACP)」は、「任意のコーディングエージェントを任意のエディタに接続する統一標準」を目指しています。
これはLSP(Language Server Protocol)が2010年代に「任意の言語サーバーを任意のエディタに繋ぐ」役割を果たしたのと同じ発想です。
Codex App ServerとACPの関係は競合ではなく、実装レベルでは連携が始まっています。codex-acpプロジェクトは、Codex App ServerをACPに変換するアダプター実装で、Zedエディタなどがこれ経由でCodexを組み込めるようになっています。
つまり、Codex App Serverは「OpenAI公式のCodex統合API」、ACPは「業界横断の統合標準」、両者を繋ぐ層としてcodex-acpが存在する、という3層構造で整理できます。
Codex App Serverのアーキテクチャ——Thread/Turn/Itemと双方向JSON-RPC

Codex App Serverの内部設計は、シンプルな3プリミティブと双方向JSON-RPC通信で構成されています。
このセクションでは、実装者が最初に理解すべき3つの概念(Thread・Turn・Item)と、プロトコルの実際の動きを整理します。
Thread——永続的な会話コンテナ

Threadは、Codexとのやりとりを保持する最上位の会話単位です。
一般的なチャットアプリで言う「会話履歴」に相当しますが、単なるメッセージ配列ではなく、以下の機能を持ちます。
- thread/start: 新しい会話を開始し、「thread_id」を返す
- thread/resume: 過去の「thread_id」を指定して会話を再開する
- thread/fork: 既存の会話から分岐した新しい会話を作る(履歴を引き継ぎつつ別方向に展開できる)
- thread/list / thread/read: 保存されているスレッドの一覧・詳細取得
- thread/archive / thread/delete: 整理・削除
Threadは履歴として永続化されるため、無操作でセッションが切れた後でも「thread/resume」で会話を再開できます。
分岐したいときは「thread/fork」、整理したいときは「thread/archive」が用意されています。
Turn——1回のリクエスト・レスポンスの単位

Turnは、1つのユーザーリクエスト(メッセージ・指示)から、それに対するCodex agentの一連の応答が完了するまでを指します。
たとえば「このバグを直してテストも通してほしい」というリクエストは、内部で「コード読解 → 修正案生成 → ファイル書き込み承認 → テスト実行承認 → 結果報告」といった複数ステップに展開されますが、これらすべてが1つのTurnにまとまります。
Turn関連のメソッドは3つに絞られており、実装のシンプルさが特徴です。
- turn/start: 新しいTurnを開始(ユーザーメッセージを送信)
- turn/steer: 実行中のTurnに追加の指示を注入する(新しいTurnを作らずに軌道修正)
- turn/interrupt: 実行中のTurnをキャンセルする
この「Turn」という単位が明示的にプロトコル化されているため、クライアント側は「Codexが今どこまで進んだか」を「turn/started」 / 「turn/completed」通知で把握できます。
Item——原子単位の入出力とライフサイクル

Itemは、1つのTurnの中で発生する個別の入出力を表します。
具体的には以下のようなものが1つずつItemとして扱われます。
| Item種別 | 内容 |
|---|---|
| agentMessage | Codex agentからのメッセージテキスト |
| commandExecution | シェルコマンドの実行 |
| fileChange | ファイルの作成・変更・削除 |
| toolCall | MCP経由で外部ツールを呼び出す |
| userMessage | ユーザーからの追加入力 |
| approvalRequest | 実行前の承認リクエスト |
すべてのItemは「item/started」 → 型別のdelta通知(「item/agentMessage/delta」・「item/commandExecution/outputDelta」・「item/plan/delta」など)→ 「item/completed」という明確なライフサイクルを持ちます。
これによりクライアント側は「今どのItemが進行中か」「テキストのどの部分がまだストリーミング途中か」を正確に追跡できます。VS Code拡張で差分表示がリアルタイムに流れるのは、この設計の恩恵です。
トランスポート——stdio・WebSocket・Unix Socketの3種

Codex App Serverは、以下の3種類の通信経路をサポートしています。
-
stdio(JSONL)——デフォルト
標準入出力経由でJSONLをやりとり。ローカルプロセスとして子プロセス起動するIDE拡張が典型例。プロセス境界で暗黙に信頼するため認証不要
-
WebSocket(ws://・wss://)
LAN内やリモートサーバー経由での接続に対応。リモート公開時は必ず認証を設定する必要がある(現状は未設定でも接続できる場合があるため、公開前に 「--ws-auth」 等を明示する)。2026年7月時点では実験的(experimental)扱いで、本番運用は非推奨
-
Unix Socket(unix://)
UNIX系OS上でHTTP Upgrade経由の高速IPC。stdio同様、プロセス境界での信頼が前提
用途としては、IDE拡張などのローカル統合はstdioでシンプルに始め、リモート開発サーバー・チーム共有基盤といったユースケースでWebSocket/Unix Socketを検討する形が現実的です。
承認フロー——コマンド実行と権限リクエスト

Codex App Serverの重要な特徴が、双方向通信を活かした承認フローです。
Codex agentがシェルコマンドを実行しようとしたり、ネットワーク接続を張ろうとしたりする直前、App Serverはクライアントに「item/commandExecution/requestApproval」通知を送ります。
クライアント側は以下のいずれかで応答します。
- accept: 実行を許可
- decline: 実行を拒否
- acceptWithExecpolicyAmendment: 承認しつつ、以降の同種コマンドを自動許可するポリシー変更を伴う
- cancel: 承認プロセス自体をキャンセル
この承認フローがプロトコルレベルで規定されているため、VS Code拡張・macOSアプリ・JetBrainsのどれで実装しても、承認ダイアログのUX設計は共通の契約に基づけます。

「「pnpm test」 をこのワークスペースで実行してよいか?」に対する3択(Yes / Yes and don't ask again / No)と Submit ボタン(出典:OpenAI)
プロンプト本文の「Yes and don't ask again for commands that start with 「pnpm test」」は、まさに 「acceptWithExecpolicyAmendment」(承認しつつ以降の同種コマンドを自動許可するポリシー変更を伴う応答)に該当します。App Serverの承認契約が、クライアント側のUX選択肢としてそのまま現れている例です。
サンドボックスポリシーも同時に選べます。「読み取り専用(read-only)」「ワークスペース内書き込みのみ(workspace-write)」「制限なし(danger-full-access)」といったポリシーをTurn単位・スレッド単位で切り替えられ、業務での運用ガバナンスに直接効いてきます。
Codex App Server・Codex CLI・Codex SDK・MCPの使い分け

Codexのインターフェイス選定で最も混乱しやすいのが、Codex App Server・Codex CLI・Codex SDK・MCPの使い分けです。
4つとも「Codex agentに何かをさせる手段」ですが、想定ユースケースが明確に異なります。
以下の表で、4つのインターフェイスの位置づけを整理しました。
| インターフェイス | 誰が使うか | 想定ユースケース | プロトコル |
|---|---|---|---|
| Codex CLI | 開発者本人(対話的利用) | ローカルターミナルでの対話的コーディング支援 | 直接コマンド呼び出し |
| Codex SDK | CI/自動化スクリプトの開発者 | GitHub Actions・cron・バッチ処理でCodexを呼ぶ | ローカルCodex/App Serverを扱うライブラリ(TypeScript/Python) |
| Codex App Server | IDE・アプリ開発者 | 自社アプリ・IDE拡張にCodex agentをリッチに組み込む | JSON-RPC 2.0(双方向・ストリーミング・承認フロー) |
| MCP | Codex agent側から見た統合先 | 外部ツール(DB・Figma・ブラウザ等)をCodex agentから使えるようにする | JSON-RPC 2.0(ツール登録・呼び出し) |
この4種類の使い分けを、実装者視点で言い換えると次のようになります。
Codex App Serverを選ぶべきケース
自社アプリ・自社SaaS・IDE拡張などに、Codex agentを深く統合したい場合が第一候補です。
具体的には以下のような要件がひとつでもあれば、App Server一択と考えて良いでしょう。
- 会話履歴・スレッドをアプリ側で永続管理したい
- コマンド実行前にユーザー承認を挟む独自UIを作りたい
- 差分・ファイル変更をアプリ側で可視化しストリーミングで表示したい
- 複数の会話を並行して管理したい
- サブスク契約者としてChatGPT/Codexサブスク経由で動かしたい
VS Code拡張・macOSアプリ・JetBrainsやXcodeの統合は、すべてこの層で作られています。
Codex SDKを選ぶべきケース
CI/CDパイプライン・cron・GitHub Actions・バッチ処理のように、「一発リクエストして完了させる」用途はCodex SDKが向いています。
- PRの自動レビューをGitHub Actionsで回す
- Nightlyビルドでコードベース全体の静的解析をCodexに依頼する
- Slackボットが単発の質問をCodexに投げる
Codex公式docsも「自動化ジョブやCIで使う場合はCodex SDKを使いなさい」と明示しており、App Serverの双方向・ストリーミング機能はこの用途には過剰スペックです。
Codex CLIを選ぶべきケース
ターミナルで開発者本人が直接叩く場合の第一候補です。
- ローカル環境で「このリポジトリを読んで改善案を出してほしい」と対話する
- SSH越しにリモートサーバー上のコードを操作する
- Vim/Emacsなどターミナル完結の開発環境で使う

OpenAI Codex v0.95.0-alpha.7 / gpt-5.2-codex medium で 「explain app server to me」 を入力し、Workingステータスが表示されている画面(出典:OpenAI)
ターミナルで直接プロンプトを渡し、Working ステータスの間に Codex agent がツール実行・ファイル読解を進める、というのがCLIの典型的な使い方です。
Codex CLI は 「codex --remote wss://…」 オプションでApp Serverに接続する構成にも対応しており、CLIとApp Serverは「同じCodex agentコアに対する別々の入口」として使い分けられます。
MCPを選ぶべきケース
MCPは、Codex agent「自体」を提供するのではなく、Codex agentが使う道具を追加するときに使います。
- 社内DBをCodexから直接検索できるようにする
- Figmaのデザインファイルを読ませる
- 独自のドキュメント検索APIをCodexに使わせる
「Codex agentに機能を追加する」文脈ならMCP、「Codex agent自体を別の場所で動かす」文脈ならApp Server、と考えると迷いません。
4種類の中で迷ったときの実務判断

「MCPで軽量統合するか、App Serverで本格統合するか」の判断は、プロダクトチームで最も迷う論点です。
境界のしきい値をシンプルにまとめると、「自社が既存Codexクライアントに機能を足す側」ならMCP、「自社が新しいCodexクライアントになる側」ならApp Serverになります。
会話履歴・承認フロー・ストリーミング差分表示を独自UIで実現したい要件がひとつでもあれば、App Serverが必要です。
支援現場でCodex統合の相談を受けたとき、実務的にはプロダクトの統合深度で以下のように使い分けを推奨しています。
- プロトタイプ・PoC段階: Codex CLIを内部ツールとして使うだけで十分。統合コード書かない
- 社内ツール・軽量統合: MCPサーバーを1本立てて既存クライアントから使わせる
- 業務用アプリ・IDE拡張: Codex App Serverでフル統合する
- CI/CD・バッチ自動化: Codex SDKで単発呼び出しする
App Serverは強力ですが、実装量とメンテナンス負担も相応に発生します。「Codexとの統合が自社プロダクトの中核価値になる」場面まで来て初めて、App Serverを採用する意義が出てきます。
逆に、単にCodexが便利だから使いたい、程度の要件ならCodex CLIやGitHub Copilot、あるいはCursor・WindsurfといったAIエディタや、Claude Codeといった類似ツールで足りるケースが大半です。
【関連記事】
Claude CodeとCodexを徹底比較!料金や性能・サブエージェントの違いと選び方を解説
Codex App Serverの導入ステップと最小実装

ここからは実装者向けに、Codex App Serverを実際に動かす最小構成を整理します。
概念を理解したうえで、まず手を動かす段階に進みたい方向けのセクションです。
基本的な起動コマンド

Codex CLIをインストール済みの環境で、以下のコマンドでApp Serverが立ち上がります。
# stdio経由(デフォルト)
codex app-server
# WebSocket経由(実験的)
codex app-server --listen ws://127.0.0.1:4500 \
--ws-auth signed-bearer-token \
--ws-shared-secret-file /path/to/secret
# Unix Socket経由
codex app-server --listen unix:///tmp/codex-app-server.sock
stdio経由の場合、クライアント側は子プロセスとしてこのコマンドを起動し、標準入出力越しにJSONLでメッセージをやりとりします。
WebSocketは実験的機能なので、まずはstdioでプロトタイプを作り、リモート開発など明確な要件が出てきた段階でWebSocket移行を検討するのが安全です。
初期化ハンドシェイクとスレッド開始

App Serverに接続したクライアントは、まず「initialize」ハンドシェイクを実行する必要があります。
- クライアントが「initialize」リクエストを送る(「clientInfo.name」とサポートするcapability一覧を含む)
- サーバーが自身のcapabilityを応答する
- クライアントが「initialized」通知を送り、ハンドシェイク完了
このハンドシェイクは接続1回につき必ず1回だけ実行するもので、複数回送るとエラーになります。
「clientInfo.name」はエンタープライズ向けのOpenAI Compliance Logs Platformでの識別子として使われるため、本番運用では固有の名前を割り当てておくと監査ログ上で追跡しやすくなります。
TypeScriptによる最小実装例

以下は、TypeScript側でCodex App Serverを起動しThreadを開始する最小例です。
import { spawn } from 'child_process';
import { createInterface } from 'readline';
const codex = spawn('codex', ['app-server']);
const rl = createInterface({ input: codex.stdout });
let requestId = 0;
let threadId: string | undefined;
const send = (method: string, params: any) => {
const req = { id: ++requestId, method, params };
codex.stdin.write(JSON.stringify(req) + '\n');
};
rl.on('line', (line) => {
const msg = JSON.parse(line);
// thread/start の応答から threadId を取り出し、続けて turn/start を投入
if (msg.result?.thread?.id && !threadId) {
threadId = msg.result.thread.id;
send('turn/start', {
threadId,
input: [{ type: 'text', text: 'テストを実行して要約してください' }],
});
}
console.log('[recv]', msg);
});
// ハンドシェイク → スレッド開始 → 応答受信後にturn/startを投入
send('initialize', { clientInfo: { name: 'my-app', version: '0.1.0' } });
send('initialized', {});
send('thread/start', {});
このアプローチの利点は複数あります。
1つ目は、外部SDKに依存せず標準ライブラリだけで動くこと。JSON-RPCのシンプルさが、依存最小の実装を可能にしています。
2つ目は、TypeScriptの型定義を「codex app-server generate-ts --out ./types」で自動生成できるため、実装が進むに従って型安全性を段階的に強化できることです。
ストリーミング受信の実装

Codex agentの応答は通知(notification)として非同期にストリーミングされます。
「item/agentMessage/delta」 などItem種別ごとのdelta通知が流れてくるたびにテキストが少しずつ追加されるため、リアルタイム表示を実装するにはこれをそのまま UIに流し込む形にします。
- item/started: 新しいItem(メッセージ・コマンド実行・ファイル変更等)が開始
- item/{type}/delta: そのItemの追加コンテンツがストリームで流れてくる(「item/agentMessage/delta」・「item/commandExecution/outputDelta」・「item/plan/delta」など型別)
- item/completed: Itemが完了、最終状態が確定
VS Code拡張のように差分をリアルタイム更新するUIは、型別のdelta通知が届くたびにエディタ上のインライン表示を書き換える形で実装されています。
エラーハンドリングとバックプレッシャー
App Serverは過負荷時に「-32001」 エラー(「"Server overloaded; retry later."」)を返します。
大量のリクエストを短時間に送る場合は、指数バックオフでリトライを実装するのが定石です。実装で詰まりやすい箇所なので、初期段階からエラーコード対応を組み込んでおくと安心です。
Codex App Serverの認証と課金経路の設計

本番運用に持ち込む際、認証と課金の設計は避けて通れない論点です。
このセクションでは、App Serverでの認証方式と、サブスク経路とAPIキー経路の使い分けを整理します。
WebSocketの2種類の認証方式

stdioとUnix Socket経由の接続は、プロセス境界での暗黙的な信頼を前提とするため、追加の認証は不要です。
一方、WebSocket経路では以下2種類の認証方式を選べます。
-
Capability Token(Bearer認証)
「Authorization: Bearer <token>」ヘッダで送信されたトークンを、サーバー側でSHA-256定時間比較して検証する方式。シンプルで扱いやすい
-
Signed Bearer Token(JWT)
HMAC-SHA256で署名されたJWTを検証する方式。発行者・対象者を細かく設定可能で、「alg: none」は明示的に却下される安全設計
シンプルな社内ネットワーク用途ならCapability Tokenで十分ですが、複数チームで共有する・発行者を追跡したい・トークン失効を細かく制御したい、といった要件があればJWT方式が望ましくなります。
サブスクとAPIキーの選び方

Codex App Serverには、認証と別軸で「モデル呼び出しの課金経路をどうするか」という選択があります。
以下の表で、2つの経路の特性を比較しました。
| 経路 | 課金 | 想定ユーザー | 注意点 |
|---|---|---|---|
| ChatGPT/Codexサブスク経由 | サブスク料金に含まれる(ChatGPT Plus・Pro・Enterprise等) | 個人利用・小規模チーム | サブスクの利用回数上限あり。プロダクト組み込みには不向き |
| Codex APIキー経由 | トークン従量課金(ChatGPT APIの料金体系) | 自社サービスへの組み込み | 従量課金なので突発的コスト増に注意。予算アラート必須 |
個人が試すだけならサブスク経由で始めるのが手軽ですが、公開SaaSへの組み込みならAPIキー経路が基本になります。
社内の信頼済み自動化(CIランナー・スケジュールジョブ等)を組む場合は、Business/Enterprise workspace限定で提供される「Codex access tokens」も選択肢に入ります。
APIキー経路が公開SaaS向けの基本になる理由は、サブスク経路が利用上限・workspaceポリシー・ユーザーセッションに依存するためです。
エンドユーザー向けサービスとして安定運用する要件と、こうしたサブスク側の運用制約は両立しにくくなります。
認証状態の確認と課金経路の切替コマンド

Codex CLIには認証状態を確認・切替するためのコマンドが揃っています。開発初期にどの経路で動かすかを決め、以下のコマンドで状態を把握するのが安全です。
- codex login: ブラウザフローでChatGPT/Codexサブスクにサインイン
- codex login --with-api-key: APIキー経路に切替(「printenv OPENAI_API_KEY | codex login --with-api-key」)
- codex login status: 現在アクティブな認証方式を確認
- codex logout: 認証情報をクリア
公式ドキュメントは、APIキー使用時は「standard API rates」でOpenAI Platformアカウントに課金され、ChatGPT plan credits ではなくAPI料金体系が適用されると明示しています。
サブスク経由・APIキー経由のいずれで動かしているかを「codex login status」でチェックする運用にしておくと、想定と違う経路で走らせて課金が発生する事故を避けられます。
支援現場でも、PoC段階でサブスク経由で試し、本番移行時にAPIキー経路に切り替えるパターンが多く見られます。切り替え時は「codex logout」で現行認証をクリアし、「codex login --with-api-key」で明示的にAPIキー経路に固定するのが安全です。
Business/Enterprise向けCodex access tokens
ChatGPT BusinessまたはEnterprise workspaceを利用している場合、Codex access tokensという選択肢もあります。
これはCodex CLIやApp Serverベースの自動化を、workspaceユーザーの身元にひもづけて非対話的に実行するための認証方式です。CIランナー・スケジュールジョブ・信頼済みの社内自動化ワークフローに向いており、workspaceの権限・監査ログを継承したまま走らせられます。
公開SaaSの一般ユーザー向け認証ではなく、あくまでworkspace管理下の信頼済み自動化枠として使う設計である点に注意が必要です。
Codex App Serverの運用で見落としやすい実験的機能

導入判断の使い分けを整理したうえで、実運用で必ず確認しておきたいのが「まだGAになっていない機能」の扱いです。
Codex App Serverの一部機能は、2026年7月時点で実験的(experimental)扱いです。
以下は公式docsおよび 「codex app-server generate-json-schema --out ./schemas」 で確認できる、公開ドキュメント/生成スキーマ上の機能ステータスです。
| 機能 | ステータス | 補足 |
|---|---|---|
| WebSocketトランスポート | 実験的・非サポート | localhost/ポートフォワード用途に限る |
| process/*(プロセス制御API) | 実験的 | 「capabilities.experimentalApi = true」 のopt-inが必要 |
| ページング付きスレッド履歴 | スキーマ上で確認(ステータス未明記) | 生成スキーマにページング項目が存在。UI向け機能で破壊的変更の可能性あり |
| 動的ツール呼び出し | 実験的 | 「experimentalApi」 opt-inが必要な直接ツール呼び出し |
| Permission Profile | ベータ | サンドボックスポリシーの細粒度制御 |
| thread/rollback | 非推奨 | 将来削除予定・利用箇所は代替APIへ移行する |
本番運用に持ち込むなら、まずGA(Generally Available)済みのコアAPI(thread/turn/item・基本的なコマンド実行)に絞って設計するのが安全です。
WebSocket接続や動的ツール呼び出しに依存した設計にすると、OpenAI側の仕様変更で本番障害が発生するリスクがあります。
支援現場で見えているのは、「実験的機能を早く試したい」と「本番SLAを守りたい」を同じ環境で走らせて破綻するケースです。検証用と本番用で環境を分け、実験的機能はGA化を待ってから本番に組み込むのが安全な運用です。
Codex統合と並行して、社内業務プロセスもAgent化するなら
Codex App Serverは、自社プロダクトのIDE統合・PRレビュー・CI自動化といった開発ワークフローにCodex agentを深く組み込むための統一プロトコルで、"自社が新しいCodexクライアントになる"組織が最初に選ぶレイヤーです。ただしCodexが担うのはコーディング・開発フローに寄った領域で、経費精算・請求書処理・稟議書レビュー・仕様書ドラフト・保全帳票入力といった開発以外の社内業務プロセスは、Codex統合とは別レイヤーの実行基盤を持つほうが、認証・課金経路・ガバナンスを分けて設計できます。
このレイヤーを担うのが、自社Azureテナント内で動くエンタープライズAIエージェント基盤です。AI総合研究所のAI Agent Hubは、AI-OCR Agent・自動入力Agent・フロー判定Agentなど9種類の業務特化Agentを、SAP Concur・freee会計・Dynamics 365・Salesforce・勘定奉行クラウドといった基幹システムと繋げ、Microsoft Teamsから呼び出せる形でパッケージ化しています。開発側のCodex統合と、業務側のAgent実行基盤を別レイヤーで並行運用することで、開発生産性と業務自動化を両輪で伸ばせます。
AI総合研究所の専任チームが、開発ワークフローと業務プロセスの両面でAI組み込み設計から運用まで伴走支援します。AI Agent HubのLPで、Codex統合の対象外である社内業務プロセスへのAIエージェント組み込みの全体像をご確認ください。
開発と業務、両輪でAIエージェント運用
Codex統合と別レイヤーで業務Agent運用
Codex App Serverは開発ワークフローへのCodex agent統合層ですが、経費精算・請求書処理・稟議書レビュー・保全帳票入力といった開発以外の社内業務プロセスは別レイヤーで基盤化するのが現実的です。AI Agent HubのLPで、Codex統合と並行運用できる業務プロセスAgent実行基盤の全体像をご確認ください。
まとめ
Codex App Serverは、Codex agentの「UI=IDE/デスクトップ/Web/CLI」と「中身=agentコア」を分離するJSON-RPC 2.0双方向プロトコルです。
2026年2月4日にOpenAIが公開して以降、VS Code拡張・macOSデスクトップアプリ・Codex Web・JetBrains/XcodeのIDE統合が共通のプロトコルで動くようになりました。Codex CLIも 「codex --remote」 オプションでApp Serverに接続する形で参加できます。
各セクションの結論を整理すると以下のとおりです。
- 位置づけ: Codex agentコアを複数クライアントに公開するプロトコル層。単体で使うものではなくクライアント側から呼び出す前提のバックエンド
- 誕生背景: サーフェスごとの実装分断とMCPだけでは会話ライフサイクル管理が困難だった課題への対応。ACPとの連携も進行中
- アーキテクチャ: Thread/Turn/Itemの3プリミティブ、stdio/WebSocket/Unix Socketの3トランスポート、双方向JSON-RPCと承認フロー
- 使い分け: 自社アプリへの深い統合ならApp Server、CI/自動化ならSDK、対話利用ならCLI、外部ツール追加ならMCP
- 実装: 「codex app-server」起動 → 「initialize」ハンドシェイク → thread/turn/item操作。TypeScript最小実装は約20行で書ける
- 認証と課金: stdio/Unix Socketは認証不要、WebSocketはCapability TokenかJWT。本番組み込みはAPIキー経路推奨
- 選定判断: 自社が新しいCodexクライアントになるならApp Server、既存クライアントに機能を足すだけならMCP
自社プロダクトへのCodex統合を検討している開発者にとって、まず最初に取る一歩は「Codex CLIを「codex app-server」で起動してみて、TypeScript側から「initialize」・「thread/start」・「turn/start」 が通ることを確認する」ことです。
そこから承認フロー・ストリーミング・エラーハンドリングを段階的に組み立てていけば、Codex agentを自社アプリの中核に据えた設計が現実味を帯びてきます。











