OpenAI Codex CLIはCLIで動作するコーディングエージェント。(同名のOpenAI Codexはクラウドで動作するコーディングエージェントサービスで別物)
(追記)JS版とRust版(開発中)がありRustに置き換える流れになっている。この記事はJS版の話なのでしばらくしたら陳腐化する。なお6/6時点ではRustはまだAzure OpenAI未対応。
Azure OpenAIを使うにはちょっと工夫が必要そうだったのでメモ。今後良くなるとは思う。
前提
Azure OpenAIを使えて、o4-miniなどデプロイ済みのモデルがあること。(手元ではo4-miniで動作している。)
要約
まず、~/.codex/config.yaml を書く。(JSONにしたい場合は読み替えてください)
provider: azure # azureの場合はデプロイしたモデルのDeploy名 model: o4-mini providers: azure: name: "AzureOpenAI" baseURL: "https://*******.openai.azure.com/openai" # 一旦このキー名にしておくこと envKey: "OPENAI_API_KEY"
次に、{workdir}/.envもしくは~/.codex.envへAzure OpenAIのAPIキーをOPENAI_API_KEYとして書く。もちろん、何らかの方法で環境変数として指定できる術があるならそちらでもよい。
OPENAI_API_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
後は codex を実行するだけ。
おまけ
codexで使う環境変数をファイルで書くには
明示的に指定するか、{workdir}/.envもしくは~/.codex.envに書くことができる。
このことは 実装のコメントに書かれていた。
なぜ OPENAI_API_KEY を指定しないといけないのか
わからん。
まず、環境変数にOPENAI_API_KEYがないと以下のような確認が毎回出る(npxで実行しているのはシステムやユーザ環境に入れたくないこだわりなので気にしない)
$ npx codex Sign in with ChatGPT to generate an API key or paste one you already have. [use arrows to move, enter to select] ❯ Sign in with ChatGPT Paste an API key (or set as OPENAI_API_KEY)
これは結構鬱陶しいので省略したい。
実装を眺めたところ、OPENAI_API_KEYの環境変数でないと入力を要求するし、スルーする方法もなさそうだった。
- codex/codex-cli/src/utils/get-api-key.tsx at 835eb77a7dc1cbb5595cbde793b56eee58382f3e · openai/codex · GitHub
- codex/codex-cli/src/cli.tsx at a86270f581353f9cc663c4f9122a1fbb3d506aea · openai/codex · GitHub (TUIもReactなんだ...)
なので、providerは"azure"を使う場合でも、キー名は OPENAI_API_KEYとすることで、このチェックをごまかしている。
ちなみに、環境変数を使わない場合はPaste an API key (or set as OPENAI_API_KEY)を選んでAzure OpenAIのAPIキーを入れても動作はする(毎回いれることになりますけどね)
Azure OpenAIのBaseURLとモデル名の指定はどうやればよいか?
Azure OpenAIのエンドポイントURLは以下のような感じになっている。
https://リソース名.azure.com/openai/deployments/デプロイ名/chat/completions?api-version=2025-01-01-preview
この場合、baseURLには以下を指定する。
https://リソース名.azure.com/openai
デプロイ名はmodelに指定する。
わかりにくいけど、Azure AI Foundryの画面上でいえば「名前」のほう。「モデル名」のほうではない。

YAMLの設定はこんな感じになる。
model: デプロイ名 provider: azure providers: azure: name: "AzureOpenAI" baseURL: "https://リソース名.azure.com/openai" envKey: "OPENAI_API_KEY"
ちなみにapi-versionは環境変数 AZURE_OPENAI_API_VERSION で指定できる。現在のデフォルト値は 2025-03-01-previewで特にいじることもないはず。
devcontainerで動かすには
現状はNodeJSが必要。(Rust実装も頑張っているみたい)
devcontainerで使うなら~/.codexをマウントするよう設定するとよい。
https://code.visualstudio.com/remote/advancedcontainers/add-local-file-mount
devcontainer.jsonの設定例。
{ "name": "Node.js & TypeScript", "image": "mcr.microsoft.com/devcontainers/typescript-node:1-22-bookworm", // (中略) "mounts": [ // マウント先はベースイメージのHomeディレクトリに合わせる必要がある "source=${localEnv:HOME}/.codex,target=/home/node/.codex,type=bind,consistency=cached" ], }
環境変数も~/.codex.env にしてファイルをマウントするほうがいいかもしれない。
あとはdevcontainer上でインストールして実行すれば動くはず。
npm install --save-dev "@openai/codex" npx codex