Codex

Codex app serverとは?できること・起動方法・MCPとの違いを解説

INTERCREATE JAPAN 編集部公開 2026.10.15

この記事でわかること

  • app serverが何で、誰が使うものか(ふつうの利用者は意識しなくてよい点)
  • 会話(スレッド)・依頼(ターン)・項目(アイテム)という3つの単位
  • codex app-serverの起動方法と、最初の通信の流れ
  • 別のマシンのCodexにCLIをつなぐ方法と、認証の注意
  • 承認・サンドボックス・認証方式と、安全に使うための注意点
  • codex mcp-serverが削除された経緯と、SDKとの使い分け
目次
  1. Codex app serverとは
  2. 3つの基本単位
  3. 誰が使うものか
  4. できること
  5. 通信の方式
  6. 起動して動かす
  7. 型定義を生成する
  8. 実験的なAPIは明示的に有効にする
  9. 別のマシンから接続する
  10. ネットワーク越しにつなぐときの認証
  11. 認証・承認・安全面
  12. 承認の仕組み
  13. サンドボックスと、注意が必要な操作
  14. 認証の方式
  15. mcp-server・SDKとの違い
  16. codex mcp-serverは削除された
  17. どれを選ぶか
  18. うまくいかないとき
  19. よくある質問
  20. まとめ

「codex app-serverというコマンドを見かけたが、何のことか分からない」「Codexのドキュメントに、MCPサーバーの代わりにapp serverを使うと書いてあった」と戸惑っている方は多いのではないでしょうか。

Codex app serverは、Codexを自分で作ったアプリや社内ツールの中から操作するための接続口です。公式ドキュメントでは、Codexが自社のリッチなクライアント(たとえばVS Code拡張機能)を動かすために使っているインターフェースで、認証、会話履歴、承認、エージェントの動きのリアルタイム配信を扱えると説明されています。

この記事では、app serverの仕組み、できること、起動方法と最初の通信の流れ、別のマシンからの接続、認証と承認の注意点、MCPサーバーやSDKとの違いまでを順に解説します。内容は2026年10月時点のOpenAI公式ドキュメントにもとづいています。app serverは実験的な機能で、仕様が変わることがあるので、実際に組み込む前には公式ページもあわせて確認してください。

Codex app serverとは

会社員がノートPCで、アプリとCodexの間をつなぐ仕組みの説明図を確認している場面

app server(codex app-server)は、Codexを裏側で動かすための「受け口」となるプログラムです。自作のアプリがこの受け口にメッセージを送ると、Codexが作業を進め、その経過と結果が順次返ってきます。やりとりには、MCPと同じくJSON-RPC 2.0という形式のメッセージが使われます。

実装はオープンソースで、GitHubのCodexのリポジトリ(openai/codexのcodex-rs/app-server)で公開されています。

3つの基本単位

app serverでは、やりとりを次の3つの単位で扱います。この3つが分かれば、ドキュメントの大半が読めるようになります。

用語意味たとえ
スレッド(Thread)ユーザーとCodexの会話ひとまとまり。複数のターンを含むチャットの1つのやりとり全体
ターン(Turn)ユーザーからの1回の依頼と、それに続くCodexの作業「このテストを直して」と頼んで、終わるまで
アイテム(Item)入力や出力の1つの単位。メッセージ、コマンドの実行、ファイルの変更、ツールの呼び出しなど作業の記録の1行

アプリ側は、スレッドを作り、ターンを開始し、流れてくるアイテムの通知を読んで画面に表示する、という流れで使います。

誰が使うものか

結論から言うと、Codexを使うだけの人は、app serverを意識する必要はありません。CLIやアプリ、IDE拡張機能からふつうに使っていれば、裏側の仕組みとして動いているだけです。

あなたの立場app serverは
Codexを使って仕事を進めたい知らなくてよい。使い方は「Codex CLI」や「Codexアプリ」の記事へ
Codexを自社のアプリや社内ツールに組み込みたい対象。認証・会話履歴・承認・進行状況の配信を自前の画面で扱いたいときに使う
CIや定期ジョブでCodexを自動実行したい公式はSDKの利用を案内している
別のマシンで動くCodexにCLIをつなぎたい対象。--listenと--remoteを使う

「組み込む人のための仕組み」と考える

公式の説明は、自分のプロダクトの中に深い連携を作りたい開発者向けです。非エンジニアの方は、社内ツールを作る担当者や外注先から「app serverを使います」と言われたときに、Codexを自社の画面に組み込むための部品のことだ、と分かれば十分です。

あわせて読みたいCodex CLIとは?使い方・インストール・料金を初心者向けに解説Codex CLIは、OpenAIのAI「Codex」をターミナル(黒い画面)から使い、ファイルの読み書きやコマンドの実行を任せられる道具です。2026年10月時点の公式手順をもとに、できること、使えるプランと料金、インストールとサインイン、基本の使い方、安全に使う設定、業務での活用例をまとめました。

できること

会話の一覧と作業の進み具合が並んだ画面を、担当者が確認している場面

公式ドキュメントのAPI一覧から、業務に置き換えて分かりやすいものを抜き出すと、次のようになります。メソッド名は代表的なものだけを載せています。

やりたいこと主なメソッド内容
会話を始める・再開するthread/start thread/resume thread/fork新しい会話を作る、過去の会話の続きに戻る、途中から枝分かれさせる
会話の履歴を見る・整理するthread/list thread/read thread/archive thread/delete一覧の取得、保存済みの内容の読み取り、アーカイブ、完全な削除
依頼を出すturn/startテキストや画像を渡して作業を開始する。モデルや作業フォルダ、サンドボックスの設定も指定できる
作業中に指示を足す・止めるturn/steer turn/interrupt進行中のターンに指示を追加する、作業を中断する
変更内容をレビューするreview/start未コミットの変更、ブランチとの差分、特定のコミットなどを対象にレビューさせる
コマンドを実行するcommand/exec会話を作らずに、サーバーのサンドボックスの下で1つのコマンドを実行する
使えるモデルを調べるmodel/listアカウントで使えるモデルと、思考の深さの選択肢を取得する
ログインの状態を扱うaccount/read account/login/start認証状態の確認、APIキーまたはChatGPTでのログイン

ほかにも、スキルの呼び出し、アプリ(コネクタ)の一覧、ファイルの変更監視、ChatGPTの利用上限の取得などが用意されています。メソッドの全一覧は、公式ドキュメントの「API overview」にあります。

通信の方式

app serverには、クライアントとの接続方式がいくつかあります。--listenオプションで切り替えます。

方式指定特徴
標準入出力(stdio)--listen stdio://(初期値)1行1メッセージのJSONL形式。アプリがCodexを子プロセスとして起動して直接やりとりする
WebSocket--listen ws://IP:PORTネットワーク越しに接続できる。公式は「実験的で、サポート対象外」としている
Unixソケット--listen unix://既定のソケット、または指定したパスで接続を受け付ける
待ち受けなし--listen offローカルでの待ち受けを行わない

実験的な機能です

公式ドキュメントには、app-serverコマンドとWebSocket通信は実験的で、本番のワークロードにはサポートされないと書かれています。コマンドの説明でも「おもに開発とデバッグ向けで、予告なく変わることがある」とされています。社内の業務システムの中核に据える前に、変更への対応を前提にしてください。

起動して動かす

開発者がターミナルでコマンドを入力し、返ってきたメッセージを確認している場面

ここでは、手元のマシンでapp serverを起動して、最初の依頼を送るまでの流れを説明します。CLIが入っていることが前提です。入れ方は「Codex CLIのインストール」の記事で解説しています。

  1. app serverを起動するターミナルでcodex app-serverを実行します。何も指定しなければ標準入出力で待ち受けます。ネットワーク越しにつなぐなら--listen ws://127.0.0.1:4500のように指定します。
  2. 初期化する接続したら、最初にinitializeリクエストを送り、続けてinitialized通知を送ります。clientInfoに自分のアプリの名前とバージョンを入れます。この手順より前に送ったリクエストはNot initializedエラーになります。
  3. スレッドを作るthread/startで新しい会話を作ります。返ってくるthread.idを、以降のリクエストで使います。
  4. ターンを開始するturn/startにスレッドIDと入力(テキストなど)を渡します。依頼ごとに、作業フォルダや承認ポリシー、サンドボックスの設定を上書きできます。
  5. 通知を読み続ける作業の経過はitem/started、item/agentMessage/delta、item/completedなどの通知として流れてきます。turn/completedが来たら、そのターンは終了です。

公式ドキュメントにある、メッセージの形の例を紹介します。リクエストにはmethod、params、idがあり、通知にはidがありません。

{ "method": "initialize", "id": 0, "params": { "clientInfo": { "name": "my_product", "title": "My Product", "version": "0.1.0" } } }
{ "method": "initialized", "params": {} }
{ "method": "thread/start", "id": 1, "params": {} }
{ "method": "turn/start", "id": 2, "params": { "threadId": "thr_123", "input": [ { "type": "text", "text": "Summarize this repo." } ] } }

上の例は、公式の例をもとに、モデル名の指定を省いたものです。公式の例にはモデル名の指定がありますが、使えるモデルはアカウントやワークスペースによって異なるため、model/listで確認するよう案内されています。省略した場合は、設定済みの既定のモデルが使われます。

型定義を生成する

自分のアプリをTypeScriptなどで書く場合は、使っているCodexのバージョンに合った型定義を、CLIから生成できます。

codex app-server generate-ts --out ./schemas
codex app-server generate-json-schema --out ./schemas

出力はCodexのバージョンごとに固有なので、アップデートしたら作り直します。実験的なメソッドも含めたい場合は--experimentalを付けます。

実験的なAPIは明示的に有効にする

一部のメソッドや項目は、initializeのときにcapabilities.experimentalApiをtrueにしないと使えません。有効にせずに使うと、「requires experimentalApi capability」というエラーで拒否されます。安定したAPIだけで作りたい場合は、この指定を入れないままにします。

あわせて読みたいCodexをVS Codeで使う方法|拡張機能の入れ方・使い方・設定を解説CodexはVS Codeの拡張機能として使えます。必要なプラン、インストールとサインインの手順、開いているファイルを使った依頼の出し方、権限モード、スラッシュコマンド、設定とショートカット、動かないときの対処までを2026年10月時点の公式情報でまとめました。

別のマシンから接続する

自席のPCから、別のマシンで動くCodexに接続する操作をしている会社員

app serverには、Codexのターミナル画面(TUI)を別のマシンのapp serverにつなぐ使い方もあります。たとえば、社内のサーバーでCodexを動かしておき、手元のPCから操作する、といった形です。

  1. 接続を受け付ける側で起動するcodex app-server --listen ws://127.0.0.1:4500を実行します。
  2. 操作する側で接続する別のターミナルでcodex --remote ws://127.0.0.1:4500を実行します。

--remoteには、ws://、wss://、unix://、unix://パスの指定ができます。

ネットワーク越しにつなぐときの認証

ローカル以外から接続を受け付ける場合は、WebSocketの認証を設定し、TLS(wss://)で暗号化された接続の内側に置くよう案内されています。使えるオプションは次のとおりです。

オプション内容
--ws-auth capability-token --ws-token-file パストークンを書いたファイルを指定して認証する
--ws-auth capability-token --ws-token-sha256 ハッシュトークンのSHA-256ハッシュだけをサーバーに渡す。クライアントは元のトークンを別に保管しておく
--ws-auth signed-bearer-token --ws-shared-secret-file パス共有シークレットで署名されたトークンを検証する。--ws-issuer、--ws-audienceなども指定できる
--remote-auth-token-env 環境変数名(接続する側)トークンを入れた環境変数の名前を渡す

公式は、トークンをコマンドラインに直接書くのではなく、ファイルや環境変数を使うことを勧めています。接続側の例は次のとおりです。

export CODEX_REMOTE_TOKEN="$(cat "$HOME/.codex/app-server-token")"
codex --remote wss://remote-host:4500 --remote-auth-token-env CODEX_REMOTE_TOKEN

認証なしで外に公開しない

公式には、ローカル以外のWebSocketの待ち受けは、現時点では認証なしの接続を既定で許可すると書かれています。外部から届く場所で待ち受ける前に、必ず認証を設定してください。平文のws://は、localhostかSSHのポート転送の接続だけに使うよう案内されています。

WebSocketで待ち受けているときは、同じポートで簡易の死活確認も使えます。GET /readyzは接続を受け付けられる状態になると200を返し、GET /healthzはOriginヘッダーのないリクエストに200を返します。Originヘッダー付きのリクエストは403で拒否されます。

なお、codex remote-controlというコマンドもありますが、公式ではこれは管理されたバックグラウンドのサーバーを使うリモート操作用で、自作のプロトコルクライアントを作るときのcodex app-server --listenの代わりにはならないと説明されています。

認証・承認・安全面

盾のアイコンの横で、承認の確認画面の内容をチェックしている会社員

Codexはファイルを書き換え、コマンドを実行します。自作のアプリに組み込むときは、承認の確認を画面に出す責任がアプリ側にある点に注意が必要です。

承認の仕組み

Codexの設定によっては、コマンドの実行やファイルの変更に承認が必要になります。そのときapp serverは、クライアントに向けて承認を求めるリクエストを送ります。クライアントは、次のような判断を返します。

対象返せる判断
コマンドの実行accept(許可)、acceptForSession(このセッション中は許可)、decline(拒否)、cancel(中止)。実行ポリシーの追加を伴う許可もある
ファイルの変更accept、acceptForSession、decline、cancel

承認の要求には、どのコマンドをどのフォルダで実行しようとしているかの情報が付いてきます。アプリ側では、これを利用者に分かる形で表示し、判断を受け付ける画面を用意することになります。ネットワークへのアクセスを求める承認では、接続先のホストとプロトコルが示されます。

そのほか、MCPサーバーが利用者に入力を求める「エリシテーション」や、追加の権限を求めるリクエストも、同じようにクライアントが応答します。副作用のあるアプリ(コネクタ)のツール呼び出しでも承認が求められることがあり、破壊的な操作を示すツールには、常に承認が求められると公式に書かれています。

サンドボックスと、注意が必要な操作

依頼(turn/start)ごとに、approvalPolicy(承認のポリシー)とsandboxPolicy(サンドボックスの設定)を指定できます。たとえばworkspaceWriteは、指定した作業フォルダの中への書き込みを許す設定です。

一方で、次のような操作はサンドボックスの外で動くと公式に書かれています。組み込むアプリで公開する範囲は慎重に決めてください。

操作公式の説明
thread/shellCommand利用者が指示したシェルコマンドを、サンドボックスの外で、フルアクセスで実行する。スレッドのサンドボックス設定は引き継がない
process/*(実験的)明示的なプロセス制御のAPI。Codexのサンドボックスの外で動く。実験的APIの有効化が必要
thread/delete保存されたスレッドと、そこから生まれたスレッドを完全に削除する

認証の方式

app serverが扱う認証の方式は、次のとおりです。account/readで、いまの方式とアカウントの情報を確認できます。

方式内容
APIキー呼び出し側がOpenAIのAPIキーを渡し、Codexが保存してAPIリクエストに使う
ChatGPT(管理型)CodexがChatGPTのログイン(ブラウザ、またはデバイスコード)を行い、トークンの保存と更新も担う
ChatGPTの外部トークン(実験的)すでにChatGPTの認証を管理しているホストのアプリが、トークンを直接渡す。更新も呼び出し側が行う
Amazon BedrockBedrockのアカウントとして報告される。Codexが管理するキーか、AWSの認証情報を使う

商用・ホスト型のサービスには使えません

公式ドキュメントには、app serverの認証は、商用サービスやホスト型のサービスには許可されたことがないと明記されています。個人や社内の用途を超えて、顧客向けのサービスで利用者のChatGPTアカウントを使いたい場合は、公式が案内している「Sign in with ChatGPT」を検討するよう書かれています。

また、企業で使う新しい連携を作る場合は、initializeのclientInfo.nameで自分のクライアントを識別します。OpenAIのコンプライアンスログで使われる名前で、企業向けに作る場合はOpenAIに連絡して既知のクライアントとして登録してもらうよう案内されています。

管理者が設定した要件は、configRequirements/readで確認できます。requirements.tomlやMDM(端末管理)から読み込まれた、実際に有効な制限が返ってきます。

mcp-server・SDKとの違い

複数の選択肢を見比べながら、使い分けを整理している担当者

app serverに近い名前や役割のものがいくつかあるので、違いを整理します。

codex mcp-serverは削除された

以前は、Codex自体をMCPサーバーとして動かすcodex mcp-serverというコマンドがありました。現在は、このコマンドとスタンドアロンのcodex-mcp-serverは削除されています。これらを起動する連携を作っている場合は、Codexをアップデートする前に移行する必要があります。

移行先がapp serverですが、公式は、app serverはMCPサーバーではなく、MCPクライアントの置き換えとしてそのまま使えるものでもないと説明しています。独自のJSON-RPCプロトコルを使うため、MCPのツール呼び出しではなく、app serverのプロトコルを使うように連携を作り直す必要があります。

混同しやすい点

削除されたのは、Codexを「MCPサーバーとして公開する」機能です。Codexが外部のMCPサーバーにつなぐ機能(codex mcp)は、引き続きサポートされています。

あわせて読みたいCodex MCPとは?つなぎ方・codex mcp addの使い方・安全な設定Codex MCPは、Codexを外部のツールやドキュメントにつなぐ仕組みです。使える画面、つなぎ方、config.tomlの設定項目、認証、承認と管理者の制限、動かないときの対処までを、2026年10月時点の公式情報でまとめました。

どれを選ぶか

やりたいこと選ぶもの理由
ターミナルで自分の作業を進めるCodex CLIapp serverを意識せず、そのまま使える
CIやジョブでCodexを自動実行するCodex SDK(TypeScript・Python)公式が、CIでの自動化にはSDKを使うよう案内している
認証・会話履歴・承認・進行状況の配信を、自作の画面で扱うapp server公式が、深い連携にはこちらを案内している
Codexから外部のツールやデータにつなぐMCP(codex mcp)Codexが外部サーバーを使う側。app serverとは向きが逆
別のマシンのCodexにTUIをつなぐcodex --remoteapp serverの--listenで待ち受けているサーバーに接続する

SDKとapp serverの関係についても補足します。公式によると、Python SDKはローカルのCodex app-serverをJSON-RPCで制御する仕組みで、公開されているSDKにはバージョンを固定したCodex CLIが同梱されます。つまり、Pythonから使う場合は、SDKがapp serverの起動と通信を代わりに行ってくれます。自分でプロトコルを組み立てる必要がなければ、SDKの方が手間は少なくて済みます。

うまくいかないとき

画面に出たエラーメッセージを見ながら、原因を探している担当者

公式ドキュメントに載っているエラーを、症状ごとに整理しました。

症状原因と対処
Not initialized接続後にinitializeとinitializedを送る前にリクエストした。最初に初期化の手順を送る
Already initialized同じ接続でinitializeを2回送った。接続ごとに1回だけにする
requires experimentalApi capability実験的なメソッドや項目を、有効化せずに使った。必要ならcapabilities.experimentalApiをtrueにする
エラーコード-32001「Server overloaded; retry later.」WebSocketのリクエスト待ち行列がいっぱいで拒否された。間隔を空け、ランダムな揺らぎを加えながら再試行する
/healthzが403を返すリクエストにOriginヘッダーが付いている。ヘッダーなしで確認する
ターンがfailedで終わる(UsageLimitExceeded)使用量の上限に達した。ChatGPTでログインしている場合は、account/rateLimits/readで上限の状況を確認できる
ターンがfailedで終わる(ContextWindowExceeded)会話が長くなり、処理できる量を超えた。thread/compact/start(履歴の圧縮)を使うか、新しいスレッドで始め直す
接続が切れる(ResponseStreamDisconnectedなど)応答のストリームが切れた。ネットワークを確認して再試行する
MCPサーバーの起動に失敗する(reauthenticationRequired)保存していたOAuthの認証情報の期限が切れ、更新もできなかった。クライアントで再接続を促す

プロトコルの動きを手元で確かめたいときは、codex debug app-server send-message-v2というデバッグ用のコマンドが使えます。内蔵のテスト用クライアントで、スレッドの作成からターンの送信、通知の受信までを実行して表示します。

よくある質問

Codexを使うだけなら、app serverを理解する必要はありますか?

ありません。CLIやアプリ、IDE拡張機能から使う場合、app serverは裏側の仕組みとして動いています。自分のアプリにCodexを組み込む人や、別のマシンのCodexにつなぎたい人が対象です。

app serverとMCPは何が違いますか?

MCPは、AIが外部のツールやデータにつながるための共通の規格です。app serverは、アプリの側からCodexを操作するための接続口です。向きが逆であり、公式もapp serverはMCPサーバーではないと説明しています。

codex mcp-serverはまだ使えますか?

使えません。codex mcp-serverとcodex-mcp-serverは削除されています。この機能を使っていた連携は、app serverのプロトコルを使うように作り直す必要があります。

本番の業務システムで使ってもよいですか?

公式は、app-serverコマンドとWebSocket通信を実験的で、本番のワークロードにはサポートされないとしています。使う場合は、仕様が変わる可能性を前提に、影響範囲を限って試すのが現実的です。

自社のお客様向けサービスに組み込めますか?

app serverの認証は、商用サービスやホスト型のサービスには許可されたことがないと公式に書かれています。顧客向けにChatGPTのログインを使いたい場合は、公式が案内している「Sign in with ChatGPT」を確認してください。

料金や、使えるプランはどうなっていますか?

app serverのドキュメントには、対応するプランや料金についての記載がありません。使用量は、ログインに使うChatGPTのプランやAPIキーの扱いに従います。料金は「Codexの料金」の記事も参考にしてください。

SDKとapp serverはどちらを使えばいいですか?

CIなどでCodexを自動実行したいだけなら、公式はSDKを案内しています。認証、会話履歴、承認、進行状況の配信まで自分で扱う画面を作る場合に、app serverを使います。

ソースコードは公開されていますか?

公開されています。GitHubのopenai/codexリポジトリのcodex-rs/app-serverにあります。公式の「Open Source」のページに、公開されているCodexの構成要素の一覧があります。

使えるモデルはどうやって調べますか?

model/listで、アカウントで使えるモデルと、選べる思考の深さを取得できます。公式の例に出てくるモデル名は例であり、自分のアカウントで使えるとは限りません。

まとめ

この記事のまとめ

  • Codex app serverは、Codexを自作のアプリや社内ツールから操作するための接続口で、Codexを使うだけの人は意識しなくてよい
  • 会話(スレッド)、依頼(ターン)、項目(アイテム)の3つの単位で、JSON-RPCのメッセージをやりとりする
  • codex app-serverで起動し、初期化、スレッドの作成、ターンの開始、通知の読み取りの順に進める
  • 別のマシンには--listenと--remoteでつなげるが、外部に公開するときは認証とTLSが必須
  • 承認の確認画面を出す責任はアプリ側にある。サンドボックスの外で動く操作には特に注意する
  • codex mcp-serverは削除済み。app serverは実験的な機能で、商用・ホスト型のサービスの認証には使えない

app serverは、Codexを自社の画面や業務の流れに組み込むための部品です。ただし実験的な機能で、承認や認証の設計を誤ると、意図しない操作や情報の持ち出しにつながります。SDKで足りるのか、app serverまで必要なのかは、作りたいものによって変わります。

INTERCREATE JAPANでは、Claude CodeやCodexの導入から、社内ツールづくり、運用のルール決めまでをお手伝いしています。社内の業務にCodexを組み込む前に、どの方法が合うかを整理したい場合はご相談ください。

この記事を書いた人

INTERCREATE JAPAN 編集部

Web制作、業務システムの開発、Claude Code・Codex の導入支援を行う INTERCREATE JAPAN の編集部です。実際の制作や導入の現場で確かめた手順をもとに、AIツールの使い方やホームページの運用について解説しています。

参考・出典