ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #31 - OpenAI Codex CLI」という勉強会を開催しました。
generative-agents.connpass.com
アーカイブ動画はこちらです。
OpenAI Codex CLI
今回は、OpenAIのコーディングエージェント「OpenAI Codex CLI」について、動かしてみたりソースコードを読んだりしてみました。
Codexの公式リポジトリはこちらです。
今回のポイント
Codexの基本的な使い方
OpenAI Codex CLIは、ターミナル上で動作するコーディングエージェントです。 AnthropicのClaude Codeのような立ち位置のツールですね。
Codexは以下のコマンドでインストールできます。
npm install -g @openai/codex
Codexを起動する前に、OpenAI APIキーを環境変数として設定します。
export OPENAI_API_KEY="your-api-key-here"
codexコマンドにより、Codexが起動します。
# インタラクティブモードで起動 codex # プロンプトを引数として実行 codex "このコードベースを説明してください"

承認モードの種類
Codexには、エージェントの自律性を制御する3つの承認モードがあります。
- Suggest(デフォルト)
- リポジトリ内のファイル読み取りのみ許可
- ファイルの書き込みやシェルコマンドの実行には承認が必要
- Auto Edit
- ファイルの読み取りと書き込みを許可
- シェルコマンドの実行には承認が必要
- Full Auto
- ファイルの読み取り/書き込みとシェルコマンドの実行を許可
- ただし、ネットワーク接続は無効化され、書き込みは現在の作業ディレクトリ内のみに制限される
Codexのプロンプト
Codexのプロンプトは、ソースコードの以下の箇所で確認できます。
const prefix = `You are operating as and within the Codex CLI, a terminal-based agentic coding assistant built by OpenAI. It wraps OpenAI models to enable natural language interaction with a local codebase. You are expected to be precise, safe, and helpful.
You can:
- Receive user prompts, project context, and files.
- Stream responses and emit function calls (e.g., shell commands, code edits).
- Apply patches, run commands, and manage user approvals based on policy.
:
このプロンプトは、以下のようにCodexを使って見つけることができました。
user
codexディレクトリにcodexのコードをcloneしてきてあります。その中から、プロンプトを探してください。
:
codex
codexディレクトリ内で「プロンプト」として機能しているのは、agent-loop.
ts の中で定義されている定数 prefix です。場所は以下のとおりです。
• ファイル: codex/codex-cli/src/utils/agent/agent-loop.ts
• 定義位置:約 1462 行目
─── prefix の内容(一部抜粋)───
const prefix = `You are operating as and within the Codex CLI, a
terminal-based agentic coding assistant built by OpenAI. It wraps
OpenAI models to enable natural language interaction with a local
codebase. You are expected to be precise, safe, and helpful.
You can:
- Receive user prompts, project context, and files.
- Stream responses and emit function calls (e.g., shell commands,
code edits).
- Apply patches, run commands, and manage user approvals based on
policy.
- Work inside a sandboxed, git-backed workspace with rollback
support.
- Log telemetry so sessions can be replayed or inspected later.
- More details on your functionality are available at `codex
--help`
…(以下、動作上のルールやコーディングガイドラインが続きます)…`;
この prefix が「システムプロンプト」としてモデルに渡され、ユーザーの入
力とマージされた上で OpenAI API
へ送信されます。詳しい全文は上記ファイルを開いてご確認ください。
LLMの呼び出しで設定しているツール
Codexでは、LLMの呼び出し時に、ツールとして「shellTool」だけを設定しています。
stream = await responseCall({ : tools: [shellTool],
shellToolに対して「apply_patch」というコマンドが指定された場合、その引数をpatchとしてファイルを編集するという挙動が実装されています。
{ "cmd": [ "apply_patch", "*** Begin Patch\n*** Update File: path/to/file.py\n@@ def add(a, b):\n- return a + b\n+ return a - b\n*** End Patch" ] }
diff形式の出力
apply_patchの引数は、以下のようなdiffの形式です。
*** Begin Patch *** Update File: path/to/file.py @@ def add(a, b): - return a + b + return a - b *** End Patch
Codexには、このdiff形式の出力をもとにファイルを編集する処理が実装されています。
以前Aiderを試した際も、diff形式の出力をもとにファイルを編集していました。
モデルによるかもしれませんが、コードの編集ではdiff形式の出力が有用なケースもあるのかもしれません。
次回のご案内
以上、今回は「OpenAI Codex CLI」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #32 - The Agent Company」ということで、LLMエージェントの実世界のタスクでのベンチマーク「The Agent Company」がテーマです!
generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!