Client or integration
Codex CLI
Area
Catalog / models
Summary
When a provider model also has a dashboard-created customModels row, gatherRoutedModels() lets the custom row replace the provider-derived row without retaining provider capability metadata. For a local Ollama model marked with noReasoningModels and an empty modelReasoningEfforts list, the generated Codex catalog consequently advertises the generic reasoning ladder. Codex then rejects an ephemeral spawn_agent call during client-side preflight, before OpenCodex can route the child request.
The custom row should retain its explicit display name, context window, and input modalities while inheriting provider capability metadata. The generated catalog should expose no reasoning levels and no default reasoning level for this model.
Reproduction
- Configure a static local provider model and a custom row for the same provider/model ID using the redacted shape below.
- Run
ocx sync.
- Inspect
ollama/qwen-coder-3b in the generated Codex catalog.
- Observe that
supported_reasoning_levels contains the generic low through ultra ladder and default_reasoning_level is medium.
- Start a fresh Codex process through the OpenCodex loopback proxy and request an ephemeral subagent using
ollama/qwen-coder-3b with no reasoning.
- Codex rejects the child before creation because
none is not among the advertised supported efforts.
A source-level reproduction through the public boundaries is also deterministic: gatherRoutedModels() returns one custom row with reasoningEfforts missing, and buildCatalogEntries() therefore synthesizes the generic ladder.
Version
Installed package: @bitkyc08/opencodex 2.10.0. The defect is also present at current dev commit 1d1c8038447c9cbd3825842a0ac9fb9db8d79ca1.
Operating system
Ubuntu 24.04 (aarch64)
Provider and model
Ollama / qwen-coder-3b
Logs or error output
Reasoning effort 'none' is not supported for model 'ollama/qwen-coder-3b'. Supported reasoning efforts: low, medium, high, xhigh, max, ultra
Redacted configuration
{
"providers": {
"ollama": {
"adapter": "openai-chat",
"baseUrl": "http://localhost:11434/v1",
"liveModels": false,
"models": ["qwen-coder-3b"],
"selectedModels": ["qwen-coder-3b"],
"noReasoningModels": ["qwen-coder-3b"],
"modelReasoningEfforts": {
"qwen-coder-3b": []
}
}
},
"customModels": [
{
"id": "redacted-uuid",
"provider": "ollama",
"modelId": "qwen-coder-3b",
"displayName": "Qwen Coder 3B (local)",
"contextWindow": 32768,
"inputModalities": ["text"]
}
]
}
Checks
Client or integration
Codex CLI
Area
Catalog / models
Summary
When a provider model also has a dashboard-created
customModelsrow,gatherRoutedModels()lets the custom row replace the provider-derived row without retaining provider capability metadata. For a local Ollama model marked withnoReasoningModelsand an emptymodelReasoningEffortslist, the generated Codex catalog consequently advertises the generic reasoning ladder. Codex then rejects an ephemeralspawn_agentcall during client-side preflight, before OpenCodex can route the child request.The custom row should retain its explicit display name, context window, and input modalities while inheriting provider capability metadata. The generated catalog should expose no reasoning levels and no default reasoning level for this model.
Reproduction
ocx sync.ollama/qwen-coder-3bin the generated Codex catalog.supported_reasoning_levelscontains the genericlowthroughultraladder anddefault_reasoning_levelismedium.ollama/qwen-coder-3bwith no reasoning.noneis not among the advertised supported efforts.A source-level reproduction through the public boundaries is also deterministic:
gatherRoutedModels()returns one custom row withreasoningEffortsmissing, andbuildCatalogEntries()therefore synthesizes the generic ladder.Version
Installed package:
@bitkyc08/opencodex2.10.0. The defect is also present at currentdevcommit1d1c8038447c9cbd3825842a0ac9fb9db8d79ca1.Operating system
Ubuntu 24.04 (aarch64)
Provider and model
Ollama /
qwen-coder-3bLogs or error output
Redacted configuration
{ "providers": { "ollama": { "adapter": "openai-chat", "baseUrl": "http://localhost:11434/v1", "liveModels": false, "models": ["qwen-coder-3b"], "selectedModels": ["qwen-coder-3b"], "noReasoningModels": ["qwen-coder-3b"], "modelReasoningEfforts": { "qwen-coder-3b": [] } } }, "customModels": [ { "id": "redacted-uuid", "provider": "ollama", "modelId": "qwen-coder-3b", "displayName": "Qwen Coder 3B (local)", "contextWindow": 32768, "inputModalities": ["text"] } ] }Checks