Codex CLI、IDE 拡張機能、Codex Cloud のいずれかで Codex を使用している場合は、プログラムから制御することもできます。
次のような場合は SDK を使用します:
- CI/CD パイプラインの一部として Codex を制御する
- Codex と連携して複雑なエンジニアリングタスクを実行できる独自のエージェントを作成する
- 独自の社内ツールやワークフローに Codex を組み込む
- 独自のアプリケーションに Codex を統合する
CI のジョブを含むコーディングタスクの自動化には、Codex SDK を使用します。認証、会話履歴、承認、ストリーミング配信されるエージェントイベントを扱うカスタムクライアントの構築には、Codex App Server を使用します。
codex mcp-server コマンドとスタンドアロンの codex-mcp-server バイナリは削除されました。既存の連携には Codex App Server を使用してください。
ベータ版へのアクセス権があり、リポジトリや変更のスキャンで構造化されたセキュリティ検出結果とカバレッジ情報が必要な場合は、 Codex Security TypeScript SDK を使用してください。
TypeScript ライブラリ
TypeScript ライブラリを使用すると、アプリケーションからローカルの Codex スレッドを開始、継続、再開できます。
このライブラリはサーバー側で使用してください。Node.js 18 以降が必要です。
インストール
まず、npm を使用して Codex SDK をインストールします:
npm install @openai/codex-sdk
使用方法
Codex でスレッドを開始し、プロンプトを渡して実行します。
import { Codex } from "@openai/codex-sdk";
const codex = new Codex();
const thread = codex.startThread();
const result = await thread.run(
"Make a plan to diagnose and fix the CI failures"
);
console.log(result.finalResponse);
同じスレッドで続けるには run() を再度呼び出します。スレッド ID を指定して過去のスレッドを再開することもできます。
// running the same thread
const result = await thread.run("Implement the plan");
console.log(result.finalResponse);
// resuming past thread
const threadId = "<thread-id>";
const thread2 = codex.resumeThread(threadId);
const result2 = await thread2.run("Pick up where you left off");
console.log(result2.finalResponse);
詳しくは、TypeScript リポジトリを参照してください。
Python ライブラリ
Python SDK は、JSON-RPC を介してローカルの Codex app-server を制御します。Python 3.10 以降が必要です。公開されている SDK ビルドには、バージョンを固定した Codex CLI ランタイムが依存関係として含まれています。
インストール
SDK をインストールするには、次のコマンドを実行します:
pip install openai-codex
公開されている SDK ビルドは、バージョンが固定されたランタイムを自動的に使用します。特定のローカル Codex 実行ファイルを意図的に使用する場合にのみ、CodexConfig(codex_bin=...) を渡してください。
Python SDK は安定版として提供されています。pip install openai-codex を実行すると、最新の安定版がインストールされます。
より新しいプレリリースビルドを使用するには、
pip install --pre openai-codex を実行してください。
使用方法
Codex を起動し、スレッドを作成して、プロンプトを実行します:
from openai_codex import Codex, Sandbox
with Codex() as codex:
thread = codex.thread_start(
model="gpt-5.6-terra",
sandbox=Sandbox.workspace_write,
)
result = thread.run("Make a plan to diagnose and fix the CI failures")
print(result.final_response)
アプリケーションがすでに非同期処理を使用している場合は、AsyncCodex を使用します:
import asyncio
from openai_codex import AsyncCodex
async def main() -> None:
async with AsyncCodex() as codex:
thread = await codex.thread_start(model="gpt-5.6-terra")
result = await thread.run("Implement the plan")
print(result.final_response)
asyncio.run(main())
サンドボックスのプリセット
スレッドの作成時も、後続のターンに向けてファイルシステムへのアクセス権を変更する場合も、
同じ Sandbox プリセットを使用します:
from openai_codex import Codex, Sandbox
with Codex() as codex:
thread = codex.thread_start(sandbox=Sandbox.workspace_write)
thread.run("Make the requested change.")
review = thread.run("Review the diff only.", sandbox=Sandbox.read_only)
利用可能なプリセット:
Sandbox.read_only:ファイルの読み取りのみを許可し、書き込みは許可しないSandbox.workspace_write:ファイルの読み取りと、ワークスペースおよび書き込み可能なルートとして設定されたディレクトリ内への書き込みを許可Sandbox.full_access:ファイルシステムへのアクセスを制限せずに実行
sandbox= を省略すると、app-server は設定済みのデフォルト値を使用します。
run(...) または turn(...) に渡したサンドボックス設定は、
そのターンと、同じスレッドの後続のターンに適用されます。
詳しくは、Python リポジトリを参照してください。