できること
Codex をプログラムから操作
CI/CD パイプラインの一部として Codex を動かし、CI のジョブを含むコーディング作業を自動化できます。社内ツールや自社アプリケーションに Codex を組み込むこともできます。
スレッドの開始・継続・再開
アプリケーションから、ローカルの Codex のスレッドを開始し、続け、再開できます。threadSource を指定すると、連携先が作ったスレッドを識別できます。
設定とサンドボックスの指定
コードから Codex の設定を渡し、Sandbox のプリセットでファイルシステムへのアクセス範囲を指定できます。
機能解説
概要
CI を含むコーディング作業の自動化、社内ツールやワークフローへの組み込み、自社アプリケーションへの統合に使えます。Codex と連携して複雑なエンジニアリング作業をこなす独自のエージェントも作れます。ライブラリは TypeScript 版と Python 版があります。
Codex SDK には TypeScript と Python の 2 つのライブラリがあります。
- TypeScript ライブラリ: サーバー側で使うライブラリで、Node.js 18 以降が必要です。ローカルの Codex のスレッドを開始・継続・再開できます。スレッド作成時に
threadSourceを指定すると連携先が作ったスレッドを識別でき、スレッドを再開しても元の source は保たれます。 - Python ライブラリ: JSON-RPC でローカルの Codex app-server を操作します。Python 3.10 以降が必要で、
pip install openai-codexでインストールします。公開されているビルドには、バージョンを固定した Codex CLI ランタイムが依存関係として含まれます。特定のローカルの Codex 実行ファイルを意図して使う場合だけCodexConfig(codex_bin=...)を渡します。アプリケーションがすでに非同期で書かれている場合はAsyncCodexを使います。
設定・サービスティア・サンドボックスの制御
設定の上書き
TypeScript ライブラリでは、config で構造化された Codex の設定を渡します。ドット区切りのパスで表せないキーには、configOverrides で生の TOML 文字列を個別の --config 引数として渡します。生の上書きは構造化された config より優先されます。これらの上書きは Codex の設定ファイルを変更しません。
サービスティア
run() または turn() に turn_service_tier を渡すと、新しい 1 ターンだけのサービスティアを選べます。service_tier を渡すと、そのターンと以降のターンのティアが変わります。
サンドボックスのプリセット
スレッドの作成時と、後のターンでファイルシステムへのアクセスを変えるときに、同じ Sandbox のプリセットを使えます。
Sandbox.read_only: ファイルを読み取り、書き込みは許可しません。Sandbox.workspace_write: ファイルを読み取り、ワークスペースと設定済みの書き込み可能なルートの中に書き込みます。Sandbox.full_access: ファイルシステムへのアクセス制限なしで実行します。
sandbox= を省略すると、app-server は設定済みの既定値を使います。run(...) または turn(...) に渡したサンドボックスは、そのターンとスレッド上の以降のターンに適用されます。
外部の入力と履歴の扱い
ツール、アプリケーション、別のエージェントから来た内容は、ExternalMessage として thread.run() または thread.turn() の入力全体に渡せます。Codex はこの内容をツールの出力として扱い、ユーザーや開発者の指示より低い優先度に置きます。
codex.thread_resume() または codex.thread_fork() に include_turns=False を渡すと、古いターンをレスポンスに読み込まずにスレッドを再開できます。履歴が後で必要になったときは thread.read(include_turns=True) を呼びます。モデルのプロバイダーを切り替えた場合は、codex.thread_fork(thread_id) で同じ履歴から新しいプロバイダー上で続けられます。
使い方
TypeScript ライブラリでの基本的な流れです。
npm install @openai/codex-sdkで TypeScript 用の Codex SDK をインストールします。- Codex でスレッドを開始し、プロンプトを渡して実行します。
- 同じスレッドで続けるときは
run()をもう一度呼びます。過去のスレッドを再開するときは、スレッド ID を指定します。
利用シーン
CI/CD パイプラインのジョブとして Codex にコーディング作業をさせる場面に向いています。
社内の開発ツールや業務ワークフローに Codex を組み込む用途に使えます。
他のツールやエージェントの出力を ExternalMessage として Codex に渡す連携に使えます。この内容はユーザーや開発者の指示より低い優先度で扱われます。
コードの調査など書き込みが不要な処理を、Sandbox.read_only で読み取りだけに限って実行する場面に使えます。
Claude・Anthropic の対応する機能
比較の単位となる業務: SDK からのコーディングエージェントのプログラム実行と設定制御
推論の強さの指定について、Codex SDK では SDK から推論強度として max または ultra を選べます。Claude Code の /effort では、Opus 4.7 向けに high と max の間に位置する xhigh が追加され、/effort、--effort、モデルピッカーから指定でき、他のモデルでは high にフォールバックします。
SDK から作ったセッションの扱いについて、Codex SDK ではスレッド作成時に threadSource を指定して連携先が作ったスレッドを識別でき、再開しても元の source が保たれます。Agent SDK 側では、claude -p や SDK の呼び出しで作成されたセッションは --resume のピッカーに表示されません。
これまでの変更
Python SDK とランタイムの公開が安定版 CLI のリリースに合わせられ、同じバージョンを使い、SDK の公開前にランタイムのアセットを検証する形になりました。Python SDK の型は、リポジトリの app-server スキーマから生成されるようになりました。
SDK から CLI の設定オーバーライドをそのまま渡せるようになり、推論強度として max または ultra を選べるようになりました。TypeScript SDK に生の設定オーバーライドが追加されました。