Skip to main content
Codex CLI は OpenAI 公式のターミナル用コーディングツールです。AIHubMix に接続すれば、1 つの API キーだけでターミナルから GLM・Claude・Gemini・DeepSeek など各社のモデルを呼び出し、自由に切り替えられます(特定ベンダーに縛られません)。本記事では 2 つの方法を扱います:基本方式(profile + 固定の単一モデル、最短で開始)と、カスタムモデル方式model_catalog_json カタログファイルで /model リストからいつでも切り替え)。

OpenAI Codex CLI 統合

AiHubMixは、OpenAI Codex CLIとのシームレスな統合を提供し、コマンドライン環境で高度なAIプログラミングアシスタントを利用できるようにします。簡単な設定手順で、ターミナルから直接自然言語を使用して、さまざまなプログラミングおよびシステム操作タスクを実行できます。 使用する前に、以下のコマンドを実行してインストールまたは更新してください。

設定手順

1. 環境変数設定

Shell設定ファイル(例:.zshrcまたは.bashrc)を開き、以下の環境変数を追加します。
ここのOPENAI_API_KEYはAiHubMixのキーを使用する必要があります。変数名がOPENAI_API_KEYのままであるのは、OpenAIネイティブクライアントとの互換性を保つためです。

2. 設定変更の適用

ターミナルで以下のコマンドを実行し、環境変数を有効にします。

3. Codex CLIの起動

プロジェクトディレクトリに移動し、codexコマンドを実行します。
ターミナルで codex コマンドを実行して起動した画面

4. 自然言語でタスクを実行

これで、自然言語でCodex CLIに指示を入力できます。例:
Codex CLI が自然言語の指示に応答している画面

高度な設定

  • デフォルトモデルはcodex-mini-latestで、これはコーディングタスク用に微調整されたo4-miniです。~/.codex/config.jsonで変更できます。
  • 現在、OpenAIのモデルのみをサポートしています。モデルリストはResponses APIドキュメントで確認できます。
  • ~/.codex/instructions.mdファイルを編集することで、システムプロンプトをカスタマイズし、AIアシスタントの動作を調整できます。

実用的なコマンドリファレンス

ヘルプコマンド

完全なコマンドオプション

Codex でカスタムモデルを使用する

Codex はデフォルトでは /model リストに OpenAI 公式モデルのみを表示します。AIHubMix 上の任意のモデル(GLM、Claude、Gemini、DeepSeek、Kimi、Qwen……)をリストから直接選びたい場合は、公式がサポートする「カスタムモデル」の仕組みを利用できます。ローカルの JSON ファイル(model_catalog_json)で選択可能なモデルを宣言し、[model_providers.aihubmix] でリクエストを AIHubMix に向けます。
公式ドキュメント:Advanced Configuration · OSS mode / local providers

2 つの接続方式

本ページ前半の「環境変数設定」は基本方式、本節はカスタムモデル方式です。違いは以下の通りなので、必要に応じて選んでください。 全体の流れはわずか 4 ステップです:カタログファイルを生成 → config.toml を変更 → 環境変数を設定 → 再起動してモデルを選択

ステップ 1:モデルカタログファイルを生成する

カタログファイルは { "models": [ ... ] } 構造で、配列の各要素が /model で選択可能なモデルを 1 つ記述します。まず固定の 1 モデルでフィールドを説明し、その後で上位 30 件を一括生成するスクリプトを示します。

1.1 まず形式を理解する:1 モデルを固定する

以下はCodex で解析できることを検証済みの最小完全カタログ(glm-5.2 という 1 モデルのみ)です。そのまま ~/.codex/model-catalogs/custom-models.json として保存すれば使えます。モデルを増やしたい場合は、models 配列に同じ構造のエントリを追加していきます。
フィールド説明(通常変更するもの):
その他のフィールドは必須で、値も固定ですbase_instructionsavailability_nuxupgradesupports_reasoning_summariessupport_verbositydefault_verbosityapply_patch_tool_typetruncation_policysupports_parallel_tool_callsexperimental_supported_tools。新しい Codex(codex-cli 0.130.0 で検証済み)は厳密に解析するため、どれか 1 つでも欠けるとカタログ全体が破棄され、内蔵カタログに戻ります。エラーは missing field base_instructions のような形で、症状としては「/model にカスタムモデルが 1 つも表示されない」となります。したがって上記の例からこれ以上フィールドを削ることはできません。
base_instructions について:これはそのモデルのシステムプロンプトです。例では一文をプレースホルダーとして使っており、モデルは正常に動作します。ネイティブの Codex に最も近いコーディング性能を得たい場合は、codex debug models --bundled 内の任意の内蔵モデルの完全な base_instructions に置き換えてください(次節の一括スクリプトはまさにこれを行っています)。
公式カタログは snake_case フィールド(display_namesupported_in_apivisibility)を使用します。次の 2 種類のエラーはいずれもカタログ全体を破棄させ、/model にモデルが表示されなくなります:必須フィールドの欠落は missing field ... を、displayNamehidden のような camelCase の旧形式や認識されない値の使用は unknown variant ... を引き起こします。本記事のフィールドセットに従えば回避できます。

1.2 上位 30 件を一括生成する

複数のエントリを手書きするとフィールドを漏らしやすいです。AIHubMix モデルリスト接口 の上位 30 件の LLM を一括でカタログに書き込むには、以下のスクリプトを使います。これは内蔵モデルをテンプレートとしてクローンするため、必須フィールド(正しい base_instructions を含む)が最初から完全に揃い、どの Codex バージョンでも欠けません。curlpython3、インストール済みの codex CLI が必要です:
スクリプトは各モデル固有のフィールド(slugdisplay_namedescriptioncontext_window など)のみを上書きし、残りの必須フィールドはすべて内蔵テンプレートからクローンされます。これはまさに 1.1 のフィールドセットで、base_instructions だけが完全な公式プロンプトになっています。
生成されるファイルは大きめです(各エントリが完全な base_instructions を含むため、約 1~2 MB)が、正常な現象です。実行後は codex debug models で正しく解析できるか検証してください(ステップ 5 を参照)。
スクリプト内の image_generation フィルター行は意図的に残しています:type=llm の返却にはごく少数ですが image_generation タグも併せ持つモデル(gpt-image-2 など)があり、対話には適さないため、スクリプトは自動的にスキップしてから上位 30 件を取得します。

ステップ 2:config.toml を変更する

~/.codex/config.toml を編集し、ルートレベルmodel_catalog_json を追加し、aihubmix provider を定義します:
wire_api = "responses" が鍵で、書き漏らしたり chat と書いたりすると接続できません。新しい Codex は OpenAI の Responses API(/v1/responses)のみを使用します。AIHubMix はすでに Responses API にネイティブ対応しているため、https://aihubmix.com/v1 を直接指定するだけでよく、自前で変換プロキシを立てる必要はありません。
ついでにデフォルトモデルデフォルト推論レベルを指定したい場合(起動時にそのまま使え、毎回手動でクリックする必要がない)は、より完全なこの設定を使えます:
設定後の config.toml はおおよそ以下のようになります(赤枠が本ステップの重要項目:ルートレベルの model / model_provider / model_catalog_json、および [model_providers.aihubmix] セクション): config.toml の model_catalog_json と aihubmix プロバイダ設定

ステップ 3:環境変数を設定する

上記 env_key で指定した環境変数を設定します(= の両側にスペースを入れないよう注意):
~/.zshrc / ~/.bashrc に書いて永続化することを推奨します。Key は AIHubMix コンソール で取得してください。

ステップ 4:再起動してモデルを選択する

Codex App / TUI を再起動してカタログファイルを有効にし、次のようにします:
/model を入力するとカタログで宣言した全モデルがリスト表示され、方向キーで選択、Enter で確定します: Codex の /model セレクターに表示された AIHubMix カスタムモデル一覧 モデルを選択すると、/model はさらに推論レベル(effort)を選ばせます。必要に応じて low / medium / high を選んでください。

ステップ 5:有効になったか検証する

  1. Codex に入って /model を入力し、カタログで宣言したモデルが表示されることを確認し、そのうちの 1 つ(glm-5.2 など)に切り替えます。
  2. 適当な質問をして経路が通っていることを検証します。注意:「あなたはどのモデルですか」では判断しないでください——base_instructions には「You are Codex… based on GPT-5」と書かれており、すべてのモデルがこれに従って自分を GPT-5 と名乗るため、聞いても実際のモデルは見分けられません。実際に呼び出されたモデルを確認するには、AIHubMix コンソール の「ログ」ページでそのリクエスト記録の model_id を見てください。これが真実です。
切り替えに成功すると上部に Model changed to ... と表示され、下部のステータスバーにも現在のモデルとコンテキストウィンドウが表示されます(下図は glm-5.2 に切り替え、ウィンドウ 258K): glm-5.2 に切り替えた後の Codex セッションとステータスバー

カスタムモデルのよくある質問

  • /model にカスタムモデルが表示されない? 順番に確認してください:
    1. まず codex debug models を実行missing field ...(最も多い、必須フィールドの欠落)や unknown variant ...(フィールド名 / 値の誤り)が出る場合、カタログ全体の解析に失敗して破棄されています——ステップ 1 の「内蔵テンプレートをクローンする」スクリプトで再生成すれば解決します。
    2. model_catalog_jsonconfig.tomlルートレベルにあり、[model_providers.*] セクション内にないことを確認;
    3. JSON が snake_case の公式フィールドを使い、visibilitylist であることを確認;
    4. codex debug models ですでに全モデルが見えているのに、**デスクトップ版(Desktop App)**では 1~2 個しか残らず、現在のモデルが「カスタム」と表示される場合——これはデスクトップ版の既知のバグです:ローカルカタログの上にさらに公式 slug ホワイトリストのフィルターをかけ、非公式モデルをセレクターから削除してしまいます(GitHub Issue #19694#15138 を参照)。この場合でもモデルは実際には config.tomlmodel = "..." に従って正常に呼び出されており(AIHubMix のログで確認可能)、名前が表示されないだけです。正しく表示させるにはターミナルの codex CLI / TUI を使ってください。デスクトップ版は config.toml に直接 model = "使いたいモデル" を固定で書くしかなく、公式の修正を待つ必要があります。
  • カタログは「マージ」ではなく「置換」です。 model_catalog_json はモデルリスト全体を置換し、追加はしません(実測:カタログにモデルを 2 つだけ入れると、codex debug models ではその 2 つしか残らず、内蔵の gpt-5.x がすべて消えます)。両方欲しい場合は、それらをまとめてカスタムカタログに書いてください。
  • リクエストでプロトコルエラー / 接続できない。 たいていは provider の base_url または wire_api が合っていません。AIHubMix では必ず wire_api = "responses" + base_url = "https://aihubmix.com/v1" にします。Chat Completions のみ対応のサードパーティに接続する場合はローカル変換プロキシが必要ですが、AIHubMix ユーザーにこのステップは不要です。
  • 頻繁な “Reconnecting” 再接続。 一部のネットワーク / プロキシ環境では WebSocket(WSS)が通らないため、provider セクションに supports_websockets = false を追加して強制的に HTTP を使わせることができます。
  • 解析で missing field ...missing field base_instructions など)が出る。 エントリに必須フィールドが欠けています。新しい Codex は厳密に解析するため、base_instructionsavailability_nuxupgradesupports_reasoning_summariessupport_verbositydefault_verbosityapply_patch_tool_typetruncation_policysupports_parallel_tool_callsexperimental_supported_tools などはすべて存在する必要があります。ステップ 1 の「内蔵テンプレートをクローンする」スクリプトで一括で補えます。
  • 解析で unknown variant が出る。 カタログ JSON に Codex が認識しないフィールド名や値があります(displayName/hidden などの camelCase 旧形式によく見られます)。本記事の snake_case フィールドセットに変更すれば解決します。

参考記事


最終更新日:2026-06-25