まとめ
- Codex CLIは
model_providersでカスタムプロバイダーを定義でき、OpenCode Zenも利用可能 OPENAI_BASE_URLの上書きではなく、model_providers+profilesの組み合わせが正解codex exec -p <profile>で起動する(ルートレベルのcodex -p <profile> execはプロファイルが伝播されないバグがある)- OpenCode Zenの
/modelsエンドポイントはCodex CLI独自フォーマットと異なるためエラーログが出るが、動作に支障はない
問題
OpenCode ZenはOpenAI互換のAPIゲートウェイで、GPT・Claude・Gemini等のモデルに統一的にアクセスできる。Codex CLIのバックエンドとして使いたいが、単純なOPENAI_BASE_URLの上書きでは動かない。
# これは動かない
env OPENAI_BASE_URL="https://opencode.ai/zen/v1" \
OPENAI_API_KEY="$OPENCODE_ZEN_KEY" \
codex --model gpt-5.2-codex "hi"
解決方法
1. config.tomlにプロバイダーとプロファイルを追加
~/.codex/config.tomlに以下を追加:
[model_providers.opencode]
name = "OpenCode Zen"
base_url = "https://opencode.ai/zen/v1"
env_key = "OPENCODE_ZEN_KEY"
wire_api = "responses"
[profiles.zen]
model = "gpt-5.2-codex"
model_provider = "opencode"
model_reasoning_effort = "xhigh"
2. 環境変数を設定
export OPENCODE_ZEN_KEY="your-api-key-here"
APIキーは https://opencode.ai/auth で取得できる。
3. 起動
codex exec -p zen "hi"
対話モードも同様:
codex exec -p zen
シェル関数にしておくと便利:
zcodex() {
: "${OPENCODE_ZEN_KEY:?export OPENCODE_ZEN_KEY=...}"
codex exec -p zen "$@"
}
ハマりどころ
-pフラグの配置
codex -p zen exec "hi" は動かない。-pがTUI側のCLI定義に吸われ、execサブコマンドに伝播されない。必ずcodex exec -p zenの順序で指定する。
/modelsエンドポイントのエラーログ
起動時に以下のようなエラーが出るが、無視してよい:
ERROR codex_core::models_manager::manager: failed to refresh available models:
failed to decode models response: missing field `models`
Codex CLIは/modelsに独自スキーマ({"models": [...]})を期待するが、OpenCode Zenは標準OpenAI形式({"data": [...]})を返す。ビルトインのモデル定義にフォールバックするため、実際の動作に影響はない。
利用可能なモデル
OpenCode Zenで使えるモデルは以下で確認できる:
curl -s -H "Authorization: Bearer $OPENCODE_ZEN_KEY" \
https://opencode.ai/zen/v1/models | jq '.data[].id'
Codex CLIで使う場合はwire_api = "responses"に対応したモデル(GPT系)を選ぶ。