Codex model_catalog_json 設定ガイド
2026-10-08 時点で、model_catalog_json は Codex の config.toml にある任意のキーで、値は JSON モデルカタログファイルのパスです。Codex は起動時にだけこれを読み込みます。Codex のオープンソースコードのソースコメントには、設定するとそのプロセスの内蔵カタログを置き換え、/model ピッカーの候補も有効なカタログから作られると書かれています。プロファイルファイルでも上書きでき、両方で設定した場合はプロファイルが優先です。本ページでは公式の設定リファレンス、変更履歴、Codex のオープンソースコードの原文に沿って、形式、上書きルール、0.160.0 の変更、/model にモデルが出ない主な原因を整理します。
更新日 2026-10-08
4 つの要点
いつ反映されるか
公式設定リファレンス:起動時に読み込む JSON モデルカタログのパス。Codex のオープンソースコードにある設定スキーマによると、セッション内の config 上書きは受け付けても再適用はされないため、ファイルを変えたら Codex を再起動します。
内蔵カタログとの関係
Codex のオープンソースコードのソースコメントでは、設定するとそのプロセスの内蔵カタログを置き換えます。/model の候補は有効なカタログから作られ、priority 順に並び、認証方式と visibility で絞り込まれます。
両方で設定した場合
公式の高度な設定:プロファイルファイルでも model_catalog_json を上書きでき、両方のファイルで設定するとプロファイルの値が使われます。
明示的なプロバイダーカタログ
2026-10-01 リリースの Codex CLI 0.160.0:明示的なプロバイダーのモデルカタログに、未対応の内蔵モデルが混ざらなくなり、更新失敗後に古い項目を使い回すこともなくなりました。
model_catalog_json の役割
2026-10-08 時点で、model_catalog_json は Codex に独自のモデルカタログを渡すためのキーです。公式設定リファレンスの原文は「Optional path to a JSON model catalog loaded on startup」で、型は string (path)。公式サンプル設定では model_catalog_json = "/absolute/path/to/models.json" と書かれ、起動時専用のカタログ上書きと注記されています。Codex のオープンソースコードのソースコメントはさらに、設定するとこのカタログがそのプロセスの内蔵カタログを置き換え、/model ピッカーの候補も有効なカタログから作られると述べています。/model に自分で選んだモデルだけを並べたい、表示名や並び順を変えたいときに編集するのはこのファイルです。制約も 2 つあります。設定リファレンスは Work Cloud でのローカルコンピューターアクセスの互換性表で、マネージドなクラウド上書きとしては非対応とし、ローカルのモデルカタログは引き継がれないと書いています。また管理者は requirements.toml で、Codex が起動時に使う JSON モデルカタログを強制できます。
バージョンごとの変更(0.156.0 から 0.161.0)
Codex CLI 0.156.0(2026-09-22)の全変更一覧には #46561「Support explicit provider model catalog URLs」があり、PR にはプロバイダー設定へ model_catalog_url を追加したこと、独自の base_url で API キーによるカタログ取得を行うには明示的なカタログ URL が必要なことが書かれています。0.160.0(2026-10-01)のリリースノートは「Explicit provider model catalogs no longer include unsupported bundled models or reuse stale entries after refresh failures」です。PR #49135 によると、以前は model_catalog_url を持つプロバイダーが自前のカタログにない内蔵モデルを表示することがありました。変更後はカタログの slug が一意かつ空でないことが必須になり、メタデータは正確なモデル ID で照合され、起動時に使えるモデルがなければ設定エラーになります。ただし model を明示していれば起動できます。0.161.0(2026-10-07)では GPT-6.1 Sol が内蔵カタログと Amazon Bedrock カタログの既定モデルになりました。
モデルカタログ関連の年表
Codex CLI 0.156.0 リリース。全変更一覧に #46561 があり、プロバイダー設定に model_catalog_url が加わりました。
Codex CLI 0.160.0 リリース。明示的なプロバイダーカタログに未対応の内蔵モデルが混ざらなくなり、更新失敗前の古い項目も使われなくなりました。
Codex CLI 0.161.0 リリース。GPT-6.1 Sol が内蔵カタログと Amazon Bedrock カタログの既定モデルに。本ページは 2026-10-08 に公式ページと照合しました。
確認済み vs 公式に記載なし
確認済み(公式ドキュメントとオープンソースコードで原文照合可)
以下は Codex の公式ドキュメント、変更履歴、Codex のオープンソースコード(設定スキーマ、ソース、PR の説明)で原文どおり確認できます。model_catalog_json は起動時に読み込む JSON モデルカタログのパスであること。セッション内の config 上書きでは再適用されないこと。設定するとそのプロセスの内蔵カタログを置き換えること。/model の候補は priority 順で、認証方式と visibility で絞り込まれること。プロファイルファイルで上書きでき、両方で設定するとプロファイルの値が使われること。0.134.0 以降、--profile は config.toml の [profiles.profile-name] テーブルを読まないこと。Work Cloud ではマネージドなクラウド上書きに非対応であること。JSON の解析失敗と空のカタログにはそれぞれ起動時エラーがあること。0.160.0 以降、明示的なプロバイダーカタログに未対応の内蔵モデルが混ざらないこと。0.161.0 以降、GPT-6.1 Sol が内蔵カタログの既定モデルであること。
公式に記載がなく、本ページで結論を出さない点
次の 3 点は公式に説明がなく、本ページでも補いません。1 つ目、カタログ項目のどのフィールドが必須か、各フィールドがどんな値を取るか。公式ドキュメントにフィールド表はなく、参考にできるのは Codex のオープンソースコードに同梱の models.json です。2 つ目、相対パスの解決方法。設定リファレンスは string (path) とだけ書き、サンプル設定の本文は絶対パス、プロファイル例には ./models.json もあるため、絶対パスで書くのが無難です。3 つ目、0.160.0 の明示的なプロバイダーカタログの変更で PR が名指ししているのは model_catalog_url で、ローカルの model_catalog_json に同じルールが及ぶかは明記されていません。なお 2026-10-08 時点で model_catalog_url は Codex のオープンソースコードの設定スキーマと PR の説明で確認できますが、developers.openai.com の設定リファレンスには載っていません。
model_catalog_json と model_catalog_url の使い分け
model_catalog_json(ローカルファイル)
config.toml かプロファイルファイルの最上位に書き、値はローカルの JSON ファイルパス。起動時にだけ読まれ、設定すると内蔵カタログを置き換えます。/model の一覧を固定したい、プロファイルごとに別のカタログを使いたい個人やチーム向けです。Work Cloud ではマネージドなクラウド上書きには使えません。
model_catalog_url(プロバイダー単位)
各プロバイダーの設定の中に書きます。Codex のオープンソースコードにある設定スキーマの説明は「Optional full URL for a Codex-native model catalog」で、PR の説明では Codex がそのプロバイダーの認証情報でカタログを取得します。ゲートウェイ側がカタログを管理する場合向けで、0.160.0 以降はこの明示的なカタログが正とされ、カタログ外の内蔵モデルは混ざりません。
設定手順
① まずプロバイダーを接続します。QCode のドキュメントを例にすると(プロバイダー名は自由で、ドキュメントの例は crs。環境変数名も自由で、例は CRS_OAI_KEY)、~/.codex/config.toml に model_provider = "crs"、model = "gpt-6-sol"、model_reasoning_effort = "high"、preferred_auth_method = "apikey" を書き、[model_providers.crs] テーブルに name = "crs"、base_url = "https://api.qcode.cc/openai"、wire_api = "responses"、requires_openai_auth = true、env_key = "CRS_OAI_KEY" を加えます。② カタログファイルを用意します。Codex のオープンソースコードにある codex-rs/models-manager/models.json を見本にし、最上位は "models" 配列、各項目には slug、display_name、priority、visibility、context_window などのフィールドがあります。必要な項目だけ残し、slug には正確なモデル ID(例:gpt-6.1-sol、gpt-6-sol、gpt-5.6-sol)を書き、見本にないフィールドは作らないでください。③ config.toml の最上位に model_catalog_json = "/absolute/path/to/models.json" を追加します。④ 用途ごとにカタログを切り替えるなら、~/.codex/profile-name.config.toml の最上位に model_catalog_json を書き、codex --profile profile-name で起動します。[profiles.profile-name] テーブルには書きません。⑤ Codex を再起動し、セッションで /model と入力して一覧を確かめます。
QCode では
QCode への Codex の接続は docs.qcode.cc の Codex ページどおりです。base_url は https://api.qcode.cc/openai、wire_api は responses、キーは cr_ で始まる QCode の API キーを使います。この接続は GPT 系専用で、Claude と中国系モデルはここを通りません。QCode ドキュメントの Codex 設定には model_catalog_json の項目はなく、ドキュメントどおりの設定でそのまま使えます。gpt-6.1-sol、gpt-6-sol、gpt-5.6-sol は QCode で呼び出せ、この 3 つの ID は Codex のオープンソースコードにある内蔵カタログ(models.json)にも入っています。1 回だけモデルを替えるなら codex -m gpt-6-sol が使えます。課金はトークン単位で、各モデルの単価は /models をご覧ください。
よくある質問
model_catalog_json は何をするキーですか?
Codex に JSON モデルカタログを指定するキーです。公式設定リファレンスでは起動時に読み込むカタログファイルのパスとされ、Codex のオープンソースコードのソースコメントでは設定するとそのプロセスの内蔵カタログを置き換えるため、/model の候補もこのファイルから来ます。値がパス文字列の任意キーです。
自分で追加したモデルが /model に出ないのはなぜですか?
多いのは、カタログにその項目がないか、表示される形で書かれていないケースです。Codex のオープンソースコードのソースコメントによると /model の候補は priority 順で、認証方式と visibility で絞り込まれます。オープンソースコードにある内蔵カタログにも visibility が "hide" の項目があります。次に多いのはファイルを変えたあと再起動していないケースで、このキーは起動時にしか反映されません。model_catalog_url を持つプロバイダーを使っている場合、0.160.0 以降はカタログ外の内蔵モデルも混ざらなくなりました。
カタログファイルの形式は?
最上位は "models" 配列です。Codex のオープンソースコードはファイルを読むときにこの models の一覧を確認しており、同梱の models.json も同じ構造です。配列には少なくとも 1 項目が必要で、空だと起動時に model_catalog_json path ... must contain at least one model、JSON が不正だと failed to parse model_catalog_json path ... as JSON というエラーになります。公式ドキュメントにフィールド表はないので、内蔵ファイルから項目をコピーし、slug、display_name、priority を書き換えるのが確実です。
プロファイルと config.toml の両方で設定したらどちらが使われますか?
プロファイルです。公式の高度な設定には、プロファイルファイルでも model_catalog_json を上書きでき、両方で設定するとプロファイルの値が使われると書かれています。~/.codex/profile-name.config.toml の最上位に書いてください。0.134.0 以降、--profile は config.toml の [profiles.profile-name] テーブルを読みません。
0.160.0 でモデルカタログの何が変わりましたか?
明示的なプロバイダーのモデルカタログが正とされるようになりました。2026-10-01 のリリースノートによると、未対応の内蔵モデルが混ざらず、更新失敗後に古い項目を使い回すこともありません。PR #49135 の補足では、カタログの slug は一意かつ空でないことが必須で、メタデータは正確なモデル ID で照合されます。起動時に使えるモデルが 1 つもなければ設定エラーになりますが、model を明示していれば起動できます。
QCode で使うとき model_catalog_json は必要ですか?
必須ではありません。QCode ドキュメントの Codex 設定にはこの項目がなく、ドキュメントどおり base_url を https://api.qcode.cc/openai、wire_api を "responses" にすれば gpt-6.1-sol、gpt-6-sol、gpt-5.6-sol を呼び出せます。この 3 つの ID は Codex のオープンソースコードにある内蔵カタログにも入っています。/model に選んだモデルだけを並べたい、表示名や並び順を変えたいときにだけ、独自カタログを作ってください。
情報源
キーの定義、プロファイルの上書きルール、マネージド環境での制約:OpenAI の Codex 設定リファレンス、高度な設定、サンプル設定、モデルページ(developers.openai.com、2026-10-08 取得)。バージョンごとの変更:Codex 公式の変更履歴と GitHub Releases の 0.156.0、0.160.0、0.161.0 の説明(同日取得)。カタログの形式、置き換えのルール、エラーメッセージ、/model の絞り込み:Codex のオープンソースコード openai/codex の main ブランチにある設定スキーマ、内蔵カタログ models.json、ソースコメント、および PR #46561 と #49135 の説明(同日取得)。QCode での接続:QCode ドキュメントの Codex ページ(2026-09-30 更新、同日取得)。
関連記事
Codex CLI のサードパーティ API 設定:config.toml・base_url・エラー
config.toml、base_url、wire_api の書き方と、接続時によくあるエラー。
Codex の GPT-5.5:10/14 終了、API は継続
Codex での GPT-5.5 の提供終了日と、API 側で引き続き使える状況。
Codex 401 の対処:ログインと env_key
401 Unauthorized をサインイン方法、API キー、env_key の順に切り分けます。
本ページの設定の書き方と引用は 2026-10-08 に照合したもので、OpenAI Codex の公式ドキュメント、変更履歴、Codex のオープンソースコードに準拠しています。上流の変更は予告なく行われることがあります。ソースコメントと内蔵カタログはバージョンで変わるため、お手元の Codex のバージョンを優先してください。モデルの提供状況は /models が優先です。