Summary
OpenCodex successfully injects 13 routed models into the Codex catalog, and the Codex CLI/app-server can read all of them, but Codex Desktop does not show any routed model in its model picker.
The desktop picker only shows the current native models:
- 5.6 Sol
- 5.6 Terra
- 5.6 Luna
- 5.5
- 5.4
- 5.4 Mini
Expected: routed entries such as input/glm-5.2, input/grok-4.5, and input/kimi-k2.7-code should also appear, as described in the OpenCodex “Codex App model picker” documentation.
This does not appear to be a stale catalog, failed injection, or stopped proxy:
- OpenCodex is healthy and running.
model_catalog_json and openai_base_url are present as root settings.
opencodex-catalog.json contains all 13 routed entries with visibility: "list".
- The Codex Desktop bundled CLI's
codex debug models reads all 13 routed entries.
- A direct
model/list request to the bundled Codex app-server also returns all routed entries.
- Fully quitting and reopening Codex Desktop does not change the picker.
Reproduction
-
Configure a custom OpenAI Responses-compatible provider:
{
"defaultProvider": "openai",
"providers": {
"openai": {
"adapter": "openai-responses",
"baseUrl": "https://chatgpt.com/backend-api/codex",
"authMode": "forward"
},
"input": {
"adapter": "openai-responses",
"baseUrl": "https://example.invalid",
"authMode": "key"
}
}
}
-
Run ocx start.
-
Confirm that ~/.codex/config.toml contains:
model_catalog_json = "/Users/example/.codex/opencodex-catalog.json"
openai_base_url = "http://127.0.0.1:10100/v1"
-
Confirm that the generated catalog contains routed models with visibility: "list".
-
Run the Codex binary bundled with the desktop app:
/Applications/ChatGPT.app/Contents/Resources/codex debug models
Observe that the returned model list includes all routed input/... entries.
-
Fully quit and reopen Codex Desktop.
-
Open the model picker.
-
Observe that only native OpenAI models are displayed; none of the routed input/... models appear.
Logs and screenshots
$ ocx status
Proxy: running
Health: http://127.0.0.1:10100/healthz ok v2.7.31
$ /Applications/ChatGPT.app/Contents/Resources/codex --version
codex-cli 0.145.0-alpha.27
$ jq -r '.models[] | select(.slug | startswith("input/")) | [.slug, .visibility] | @tsv' ~/.codex/opencodex-catalog.json
input/grok-4.5 list
input/gpt-5.6-sol list
input/glm-5.2 list
input/codex-auto-review list
input/gemma-4 list
input/glm-4.7-flash list
input/gpt-5.3-codex-spark list
input/gpt-5.4 list
input/gpt-5.4-mini list
input/gpt-5.5 list
input/gpt-5.6-luna list
input/gpt-5.6-terra list
input/kimi-k2.7-code list
Additional diagnostic evidence:
- The bundled Codex app-server returns 20 models from
model/list, including all 13 routed entries.
- The routed entries are returned as visible/non-hidden.
- Inspection of the current Desktop frontend bundle shows that the picker can switch from catalog visibility to an
available_models allowlist when the remote use_hidden_models setting is active. In this environment, that allowlist appears to contain only native model ids. This would explain why the app-server sees the routed entries while the picker drops them.
Screenshot available if needed: the picker contains only 5.6 Sol, 5.6 Terra, 5.6 Luna, 5.5, 5.4, and 5.4 Mini.
Area
Other
Version
OpenCodex 2.7.31
Codex Desktop 26.715.70719 (build 5650)
Bundled codex-cli 0.145.0-alpha.27
OS
macOS 27.0 (build 26A5378n), Apple Silicon
Config shape
{
"defaultProvider": "openai",
"providers": {
"openai": {
"adapter": "openai-responses",
"baseUrl": "https://chatgpt.com/backend-api/codex",
"authMode": "forward"
},
"input": {
"adapter": "openai-responses",
"baseUrl": "<redacted relay URL>",
"authMode": "key"
}
}
}
Checks
Summary
OpenCodex successfully injects 13 routed models into the Codex catalog, and the Codex CLI/app-server can read all of them, but Codex Desktop does not show any routed model in its model picker.
The desktop picker only shows the current native models:
Expected: routed entries such as
input/glm-5.2,input/grok-4.5, andinput/kimi-k2.7-codeshould also appear, as described in the OpenCodex “Codex App model picker” documentation.This does not appear to be a stale catalog, failed injection, or stopped proxy:
model_catalog_jsonandopenai_base_urlare present as root settings.opencodex-catalog.jsoncontains all 13 routed entries withvisibility: "list".codex debug modelsreads all 13 routed entries.model/listrequest to the bundled Codex app-server also returns all routed entries.Reproduction
Configure a custom OpenAI Responses-compatible provider:
{ "defaultProvider": "openai", "providers": { "openai": { "adapter": "openai-responses", "baseUrl": "https://chatgpt.com/backend-api/codex", "authMode": "forward" }, "input": { "adapter": "openai-responses", "baseUrl": "https://example.invalid", "authMode": "key" } } }Run
ocx start.Confirm that
~/.codex/config.tomlcontains:Confirm that the generated catalog contains routed models with
visibility: "list".Run the Codex binary bundled with the desktop app:
Observe that the returned model list includes all routed
input/...entries.Fully quit and reopen Codex Desktop.
Open the model picker.
Observe that only native OpenAI models are displayed; none of the routed
input/...models appear.Logs and screenshots
Additional diagnostic evidence:
model/list, including all 13 routed entries.available_modelsallowlist when the remoteuse_hidden_modelssetting is active. In this environment, that allowlist appears to contain only native model ids. This would explain why the app-server sees the routed entries while the picker drops them.Screenshot available if needed: the picker contains only 5.6 Sol, 5.6 Terra, 5.6 Luna, 5.5, 5.4, and 5.4 Mini.
Area
Other
Version
OpenCodex 2.7.31
Codex Desktop 26.715.70719 (build 5650)
Bundled codex-cli 0.145.0-alpha.27
OS
macOS 27.0 (build 26A5378n), Apple Silicon
Config shape
{ "defaultProvider": "openai", "providers": { "openai": { "adapter": "openai-responses", "baseUrl": "https://chatgpt.com/backend-api/codex", "authMode": "forward" }, "input": { "adapter": "openai-responses", "baseUrl": "<redacted relay URL>", "authMode": "key" } } }Checks