この記事は AIHubMix が作成しました。内容は2026年10月19日に、Codex CLI 0.162.1 と OpenAI の設定ドキュメントで確認したものです。
最近の Codex CLI は、古い config.toml の一部を受け付けなくなっています。profile = "..." の行、wire_api = "chat"、approval_policy = "untrusted" があると起動時に止まり、ほかにもエラーを出さずに失敗する書き方がいくつかあります。原因の多くは、2026年前半に書かれた解説記事からコピーした設定です。
この記事では、Codex CLI 0.162.1 でカスタムプロバイダーを使うときに動く設定、編集後の確認方法、そして設定が間違っているときに Codex が出すメッセージをまとめます。例では AIHubMix をプロバイダーとして使いますが、OpenAI の Responses API に対応したゲートウェイなら設定方法は同じです。
TL;DR
- 設定ファイルは
~/.codex/config.toml(Windows ではC:\Users\<ユーザー名>\.codex\config.toml)。Codex が読み込むのは起動時だけです。 - プロバイダーには
base_url、wire_api = "responses"(受け付けられる唯一の値)、env_keyを書きます。env_keyには、キーを入れた環境変数の名前を指定します。 - プロファイルは1つにつき1ファイル(
~/.codex/<名前>.config.toml)で、--profile <名前>で選びます。config.tomlの中の[profiles.x]テーブルは使えなくなりました。 - プロジェクトの
.codex/config.tomlは信頼済みのプロジェクトでだけ読まれ、model_providerは設定できません。 - プロキシ用の設定キーはありません。Codex は
HTTPS_PROXY、ALL_PROXY、NO_PROXYに従います。
前提
- Codex CLI がインストール済み(
npm install -g @openai/codex)。この記事は 0.162.1 で確認しています。 - プロバイダーの API キー。AIHubMix の場合は AIHubMix コンソール で発行します。
動く設定
# ~/.codex/config.toml
model = "gpt-6-sol"
model_provider = "aihubmix"
model_reasoning_effort = "high"
[model_providers.aihubmix]
name = "AIHubMix"
base_url = "https://aihubmix.com/v1"
wire_api = "responses"
env_key = "AIHUBMIX_API_KEY"
# macOS / Linux:~/.zshrc か ~/.bashrc に書き、新しいターミナルを開く
export AIHUBMIX_API_KEY=sk-...
# Windows PowerShell:このあと開いたターミナルから有効
setx AIHUBMIX_API_KEY "sk-..."
失敗の大半は、次の3つのルールで説明できます。
-
model_providerはテーブル名と一致させます。テーブル名にopenai、ollama、lmstudioは使えません。Codex の組み込みプロバイダーの名前だからです。 -
env_keyに書くのは変数の名前で、キーそのものではありません。codex loginでauth.jsonに保存されたキーは、カスタムプロバイダーには送られません。 - トップレベルのキーは、最初の
[テーブル]行より上に書きます。TOML では、テーブル見出しより後ろの行はすべてそのテーブルに属します。
設定後の確認
codex exec "say ok" # 非対話でリクエストを1回送る
codex doctor # インストール、設定、認証をチェック
codex exec はリクエストの前に、実際に使われる設定(model:、provider:、approval:、sandbox:、reasoning effort:)を表示します。どの値が採用されたかを確かめるには、このヘッダーを見るのがいちばん早い方法です。なお、テストでは設定に on-request と書いていても、codex exec は approval: never と表示しました。非対話の実行では、確認を求める相手がいないためです。
プロファイルとプロジェクト設定
プロファイルは、メインの設定と違うキーだけをトップレベルに書いたファイルです。
# ~/.codex/review.config.toml
model_reasoning_effort = "xhigh"
sandbox_mode = "read-only"
codex --profile review で起動します。この形式は Codex 0.134.0 で変わりました。移行方法は OpenAI の advanced configuration ガイド にあります。
リポジトリの .codex/config.toml が読まれるのは、ユーザー設定でそのプロジェクトが信頼済みになっている場合だけです。
[projects."/Users/you/code/my-app"]
trust_level = "trusted"
信頼済みでも、プロジェクトのファイルに書かれた model_provider、model_providers、openai_base_url、profile、notify などは無視されます。リポジトリがリクエストの送り先を勝手に変えられないようにするためです。プロバイダーは ~/.codex/config.toml に書いておきましょう。
優先順位
OpenAI の Config basics によると、優先度の高い順に次のとおりです。
- CLI フラグと
-c key=valueによる上書き - プロジェクトの
.codex/config.toml(作業ディレクトリに近いものが優先) -
--profileで選んだファイル ~/.codex/config.toml/etc/codex/config.toml- 組み込みのデフォルト
プロジェクトのファイルはプロファイルより優先されます。ユーザー設定、プロファイル、信頼済みプロジェクトにそれぞれ別の model を書いたテストでは、codex exec --profile fast はプロジェクトのモデルで動き、プロファイルからは推論の強さだけが反映されました。-m を付けると、どちらよりも優先されました。
サンドボックスと承認
| キー | 値 |
|---|---|
| sandbox_mode | read-only、workspace-write、danger-full-access |
| approval_policy | on-request、never、または granular テーブル |
workspace-write では、作業ディレクトリ、/tmp、$TMPDIR に書き込めます。ネットワークは、[sandbox_workspace_write] に network_access = true を設定するまで使えません。never は確認を出さなくするだけで、サンドボックスを広げるわけではありません。
プロキシ
export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1
export CODEX_CA_CERTIFICATE=/path/to/corp-root-ca.pem # TLS を検査するプロキシの場合のみ
OpenAI の 環境変数リファレンス には CODEX_CA_CERTIFICATE の説明はありますが、プロキシ用の変数は載っていません。Codex 0.162.1 で試したところ、カスタムプロバイダーへのリクエストは HTTPS_PROXY、小文字の https_proxy、ALL_PROXY を経由し、NO_PROXY に書いたホストはプロキシを通りませんでした。
/model にカスタムモデルを出す
トップレベルの model_catalog_json でカタログファイルを指定しない限り、/model には OpenAI のモデルしか表示されません。カタログは組み込みの一覧を置き換え、各エントリには内部で使われるフィールドがすべて必要です。そのため、手で書くより生成するのがおすすめです。AIHubMix の Codex CLI ガイド に、組み込みのエントリを複製して AIHubMix の上位30モデル分のカタログを作るスクリプトがあります。結果は codex debug models で確認できます。
ハマりどころ
起動時に「legacy profile = "..." config is no longer supported」と出る
config.toml に profile = "..." の行が残っています。プロファイルを専用のファイルに移し、この行を削除してください。[profiles.x] テーブルが残ったまま --profile x を付けると、--profile x cannot be used while ... contains legacy ... config というエラーになります。フラグを付けなければ、テーブルはエラーも出さずに無視されます。
起動時に「wire_api = "chat" is no longer supported」と出る
responses に変更してください。Chat Completions にしか対応していないプロバイダーは、変換用のプロキシを挟む必要があります。
起動時に「model_providers contains reserved built-in provider IDs」と出る
openai、ollama、lmstudio という名前のプロバイダーを別の名前に変えてください。組み込みの OpenAI プロバイダーの送り先を変えたいだけなら、トップレベルの openai_base_url を使います。
起動時に「approval_policy = "untrusted" is no longer supported」と出る
この行を削除するか、on-request にしてください。on-failure は非推奨ですが、まだ受け付けられます。
「Missing environment variable: AIHUBMIX_API_KEY」と出る
env_key で指定した変数が、Codex を起動した環境にありません。新しいターミナルを開くか、source ~/.zshrc を実行してください。
「Reconnecting...」の後に 401 Unauthorized になる
リクエストにキーが付いていません。env_key を確認してください。auth.json はカスタムプロバイダーには使われません。
「Model metadata for ... not found. Defaulting to fallback metadata」と出る
Codex のカタログにないモデルを使うと出る警告で、OpenAI 以外のモデルでは普通に出ます。リクエストはそのまま動きます。カタログを用意すれば消えます。
「Ignored unsupported project-local config keys」と出る
プロジェクトのファイルに、ユーザー設定でしか使えないキー(たいていは model_provider)が書かれています。~/.codex/config.toml に移してください。
カタログが「missing field base_instructions」で読み込まれない
カタログのエントリが不完全なため、ファイル全体が拒否されています。手で直すのではなく、カタログを生成し直してください。
検証していないこと
- PAC ファイル:Codex に設定項目はありません。第三者の記事に書かれている動作は試していません。
- デスクトップアプリのモデル選択画面:カタログのモデルが表示されない場合があります(openai/codex#19694)。確認したのは CLI だけです。
- エラーのテストでは実際のリクエストは送っていません。どれも使い捨ての
CODEX_HOMEと、つながらない base URL で行いました。
まとめ
-
config.tomlは起動時にしか読まれないので、編集したら Codex を再起動する - カスタムプロバイダーは
base_url、wire_api = "responses"、env_keyの3つで動く - プロファイルは
~/.codex/<名前>.config.tomlに分け、[profiles.x]とprofile = ...は削除する - プロバイダーはユーザー設定に書く。プロジェクトのファイルからは設定できない
- 設定が効いているかは、
codex execのヘッダーとcodex doctorで確認する
OpenAI、Anthropic、Google、DeepSeek などのモデルを1つのキーで Codex から使いたい場合、AIHubMix は Responses API でそれらを提供しています。上の設定をそのまま使えば、すぐに試せます。
参考
- Config basics(OpenAI)
- Advanced configuration(OpenAI)
- Configuration reference(OpenAI)
- Codex CLI × AIHubMix 連携チュートリアル(AIHubMix)
- Codex CLI proxy configuration: SOCKS, HTTP, and corporate networks(Daniel Vaughan)