Skip to content

CommandCode image capabilities are missing from model metadata, disabling multimodal input in Codex App #2406

Description

@ardjo-s

Client or integration

Codex App

Provider or upstream service

CommandCode (command-code)

OpenCodex version

2.31.0

Endpoint or capability

/v1/models, generated Codex model catalog, and /v1/responses image input

Current behaviour

OpenCodex's built-in CommandCode model registry does not declare image input for several models whose upstream route accepts images. Consequently, the generated Codex model catalog exposes those targets as text-only. In Codex App, Image / multimodal becomes unavailable when one of these targets participates in a combo, even when every selected route has been verified to accept image input.

End-to-end image probes succeeded for these CommandCode routes:

  • gpt-5.6-luna
  • gpt-5.6-sol
  • MiniMaxAI/MiniMax-M3
  • moonshotai/Kimi-K3
  • meta/muse-spark-1.2
  • meta/muse-spark-1.2-contributor
  • openai/ox-alpha
  • deepseek/deepseek-v4-flash-vision-exp

The issue is not only cosmetic: capability intersection in combo models treats an absent/unknown image declaration as text-only, so one incomplete target disables image input for the whole combo.

Separate real-request probes did not deliver the image for deepseek/deepseek-v4-flash, deepseek/deepseek-v4-pro, zai-org/GLM-5.2, zai-org/GLM-5.3, and xai/grok-4.6. Those routes should not be marked image-capable without upstream fixes and verification.

Expected behaviour

OpenCodex should declare input_modalities: ["text", "image"] for CommandCode models that demonstrably accept image input, and preserve that capability when generating the Codex catalog and combo intersections.

Unknown models should remain conservative. Image capability should not be inferred merely from a family name or marketing profile; it should be backed by provider metadata or an end-to-end request test.

Minimal redacted request or reproduction

# 1. Start OpenCodex 2.31.0 and inspect model metadata.
curl -s http://127.0.0.1:10100/v1/models \
  -H "Authorization: Bearer REDACTED" \
  | jq '.data[] | select(.id | contains("gpt-5.6-luna"))'

# 2. Select a combo containing command-code/gpt-5.6-luna in Codex App.
# Observe that Image / multimodal is disabled because the CommandCode target
# is projected as text-only/unknown.

# 3. Send the same small image directly through /v1/responses to that target.
# The model correctly identifies unique content from the image, proving that
# the route accepts image input.

Actual response or error

Codex App capability UI:
Image / multimodal
Unavailable until every selected target supports image input.

No provider request error is required to trigger the bug: incomplete model metadata disables the client capability before the request can be made.

Upstream documentation

CommandCode model profiles are available through the CommandCode service/dashboard. I could not find a stable public specification that provides machine-readable input modalities for every route; therefore the capability list above is based on redacted end-to-end image probes.

Suggested mapping or implementation notes

Add explicit image modalities to the built-in CommandCode registry for the verified routes above, or ingest authoritative capabilities from CommandCode if an endpoint is available.

Please keep image capability and reasoning-effort metadata as independent fields when merging custom/provider rows. A custom image override should fill only the modality gap and must not erase inherited reasoning levels.

A regression test could assert:

  1. verified image-capable CommandCode models retain image through /v1/models and generated Codex catalog projection;
  2. combo image capability is enabled only when every target declares image support;
  3. unknown or experimentally failing routes remain text-only;
  4. custom modality overrides preserve reasoning metadata.

Additional context

Observed on macOS with Codex App and OpenCodex proxy on 127.0.0.1:10100. Local registry patching confirms that adding explicit modalities restores the Codex App image toggle, while direct provider probes distinguish working routes from models that merely advertise vision elsewhere.

  • I searched existing issues before filing.
  • Secrets and provider credentials are redacted.
  • The problem reproduces on OpenCodex 2.31.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    catalogModel catalog, slugs, visibility, routed entrieslanded-via-maintainerOriginal PR closed after landing via a maintainer merge trainproviderProvider adapters, OpenAI-compat presets, upstream API quirksprovider-compatibilityProvider compatibility reports

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions