Skip to content

Combo models expose owned_by combo which breaks clients routing by owned_by #2400

Closed as not planned

Description

@ncepuee

@### Summary

Combo (failover-group) models returned by OpenCodex's GET /v1/models carry "owned_by": "combo". The string "combo" is not a real provider, which breaks downstream clients that select their dispatch adapter by the owned_by field (e.g. DeepSeek Harness crashes with registration.adapter.prepareCall is not a function).

Environment

  • OpenCodex 2.31.0 (GUI bundle), gateway at 127.0.0.1:10100
  • Affected: any client that routes by owned_by (observed: @deepseek-ai/dsh@0.1.1-rc.2)

What happens

Combos configured in the dashboard (#models/combos) such as combo/fallback-free, combo/fallback-think, combo/image are listed by GET /v1/models with:

{ "id": "combo/fallback-free", "owned_by": "combo", ... }

Clients trust owned_by as the provider identity. Because "combo" is unknown, adapter lookup fails.

Important: failover itself is fine

The chat path is correct — POST /v1/chat/completions with model: combo/fallback-free reaches the gateway, which resolves the failover group server-side. Only the metadata (owned_by) is the problem; the actual routing/failover works. The combo works in OpenAI Codex desktop and via direct calls.

Suggested fix

One or more of:

  1. Set owned_by for combo models to a neutral/standard value (e.g. "opencodex") or to the actual underlying provider of the combo's primary target, instead of the literal string "combo".
  2. Add an explicit capability flag, e.g. "is_combo": true, and document that owned_by for combos is non-standard so clients route by the configured connection, not by owned_by.

This would let OpenAI-compatible clients that key off owned_by interoperate with combos without crashing.

Related

Companion issue filed on the DeepSeek Harness side requesting a fallback to the configured route's provider when owned_by is unrecognized.

Activity

  1. github-actions commented on Aug 22, 2026

    @github-actions
    Contributor

    Issue closed: use an issue template

    Thanks for taking the time to submit this issue. It was closed automatically because it was not opened with a recognized issue template (Bug report, Feature request, Documentation, or Provider compatibility). Freeform and API-opened issues cannot skip this check.

    • This issue does not use a recognized issue template.

    Please edit the issue to add:

    • Open a new issue with the Bug report, Feature request, Documentation, or Provider compatibility template.
    • Or edit this issue so the body uses the template section headings for the kind of report you are filing.

    See the Contributing guide for details.

    Once the report passes the automated checks, it will be reopened automatically unless a maintainer has changed its state.

  2. ncepuee commented on Aug 22, 2026

    @ncepuee
    Author

    Duplicate of #2401 (kept open with the proper Bug report template). Closing this copy to avoid splitting discussion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions