Skip to content

[Bug]: Custom model rows drop provider reasoning metadata from the Codex catalog #962

Description

@MarcTCruz

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

  1. Configure a static local provider model and a custom row for the same provider/model ID using the redacted shape below.
  2. Run ocx sync.
  3. Inspect ollama/qwen-coder-3b in the generated Codex catalog.
  4. Observe that supported_reasoning_levels contains the generic low through ultra ladder and default_reasoning_level is medium.
  5. Start a fresh Codex process through the OpenCodex loopback proxy and request an ephemeral subagent using ollama/qwen-coder-3b with no reasoning.
  6. 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

  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entries

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions