Repository navigation
CommandCode image capabilities are missing from model metadata, disabling multimodal input in Codex App #2406
Description
Activity
- addedprovider-compatibilityProvider compatibility reportsProvider compatibility reportscatalogModel catalog, slugs, visibility, routed entriesModel catalog, slugs, visibility, routed entriesproviderProvider adapters, OpenAI-compat presets, upstream API quirksProvider adapters, OpenAI-compat presets, upstream API quirks
on Aug 22, 2026 리뷰 · 우선순위 50 / 80
설명: 이 이슈는 커맨드코드 모델이 이미지를 받는데도, 목록이 글자만 받는다고 적어서 콤보의 이미지 버튼이 꺼진다고 한다. 지금 CURRENT
devHEAD 는4f41a8e93이다. 이번 시간에 origin/dev 는 46d4150 에서 한 커밋이 와서 여기까지 왔다. 착지는 2396 사용량 CLI 오늘 비용이다. package.json 은 2.27.0 이다. src/config.ts 는 3975줄이다. src/runtime 폴더는 지금 HEAD 에 없다. 지금 HEAD 의 src/providers/registry.ts 1124줄 command-code 는 liveModels 이고 정적 모델 목록이 없다. 1152줄 modelInputModalities 는 stealth/ox-alpha 와 deepseek/deepseek-v4-flash-vision-exp 두 줄만 이미지다. gpt-5.6-luna, gpt-5.6-sol, MiniMaxAI/MiniMax-M3, moonshotai/Kimi-K3, meta/muse-spark-1.2 는 없다. 1091줄 주석은 deriveComboCatalogModel 이 비어 있는 멤버를 글자만으로 둔다고 적는다. 그래서 한 목표만 비어도 콤보 전체가 이미지를 끈다. 작성자가 직접 보낸 이미지 시험은 위에 적은 길이 된다고 했고, deepseek-v4-flash, deepseek-v4-pro, GLM-5.2, GLM-5.3, grok-4.6 은 이미지가 안 갔다고 했다. 그 실패 길은 이미지라고 적으면 안 된다. 작성자 버전은 2.31.0 이다. 지금 origin/dev 패키지는 2.27.0 이다. 1152줄 표는 지금 HEAD 에도 두 줄뿐이다. PR 이 아직 없다. provider-compatibility, provider, catalog 라벨이 있다. 2410 은 같은 표 구멍의 노력 칸이다. 이 이슈는 이미지 칸이다. 사용자 길이로는 이미지가 되는 길을 콤보가 꺼 버리는 목록 구멍이라서 50. 카탈로그 팁은 Ox Alpha x-preview-f-free + deepseek-v4-flash-vision-exp. Cursor 정적 카탈로그는 opus-4-8-fast / opus-5-fast. 2334 CursorCredentialRouter 는 여전히 src/providers/cursor-pool.ts 모듈+테스트만 있고 어댑터에 연결되지 않았다. 2332 H2 는 discovery 전용. 2320 overflow + 2342 는 이미 dev. 2188 사이드카는 이미 dev. 2382 데스크톱 앱 재시작은 이미 dev. 2292 는 아직 연다.src/providers/registry.ts 라인 1152 - 지금 HEAD 의 command-code modelInputModalities 는 ox-alpha 와 deepseek-v4-flash-vision-exp 두 줄만 이미지다
src/providers/registry.ts 라인 1124 - command-code 는 liveModels 이고 정적 모델 목록이 없다. 능력 표만 손대면 된다
src/providers/registry.ts 라인 1091 - 콤보는 비어 있는 멤버를 글자만으로 둔다. 한 목표가 비면 이미지 버튼이 꺼진다
src/providers/command-code-efforts.ts - 노력 표와 이미지 표는 다른 칸이다. 이미지를 채울 때 노력 칸을 지우면 안 된다
이슈 본문 실패 길 - deepseek-v4-flash, deepseek-v4-pro, GLM-5.2, GLM-5.3, grok-4.6 은 작성자가 이미지가 안 갔다고 했다. 그 길은 이미지라고 적지 말 것메인테이너의 판단이 필요한 지점
- 작성자가 통과했다고 한 길만 이미지로 넣을지. 가족 이름으로 추측하면 실패 길까지 켜진다
- 커맨드코드가 능력 목록을 내려 주면 그 목록을 읽을지. 지금은 공식 기계 목록이 없다고 적혀 있다
- 2410 노력 칸과 한 PR 로 묶을지. 칸은 다르고 제공자도 다르다
너의 추천
통과한 길만 modelInputModalities 에 text, image 를 넣는 작은 PR 을 받는다. 실패한 다섯 길은 글자로 둔다. 노력 칸은 건드리지 말 것. 이슈는 열어 둔다. 라벨은 그대로 둔다. 프리뷰 배포가 아니다.이 댓글은 grok-bot이 작성했습니다
- added a commit that references this issue
on Aug 26, 2026 Shipped on
devase821f95f0(#2659).The verified-positive routes from your probe list now declare
["text", "image"]in a singleCOMMAND_CODE_MODEL_INPUT_MODALITIESmap referenced by both the OAuth and API-key presets, so the two cannot drift apart. A parity assertion pins that.Your negative list is doing real work here and was honoured exactly:
deepseek/deepseek-v4-flash,deepseek/deepseek-v4-pro,zai-org/GLM-5.2,zai-org/GLM-5.3andxai/grok-4.6stay text-only, asserted by full upstream id. A route that accepts the request and silently drops the image is worse than one that declines it — the model answers about an image it never received and nothing surfaces an error.Thank you for probing both directions rather than only the successes. That is what made this safe to ship as static metadata.
- addedlanded-via-maintainerOriginal PR closed after landing via a maintainer merge trainOriginal PR closed after landing via a maintainer merge train
on Aug 26, 2026 - added a commit that references this issue
on Sep 14, 2026 - added a commit that references this issue
on Sep 17, 2026
Client or integration
Codex App
Provider or upstream service
CommandCode (
command-code)OpenCodex version
2.31.0Endpoint or capability
/v1/models, generated Codex model catalog, and/v1/responsesimage inputCurrent behaviour
OpenCodex's built-in CommandCode model registry does not declare
imageinput 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-lunagpt-5.6-solMiniMaxAI/MiniMax-M3moonshotai/Kimi-K3meta/muse-spark-1.2meta/muse-spark-1.2-contributoropenai/ox-alphadeepseek/deepseek-v4-flash-vision-expThe 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, andxai/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
Actual response or error
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:
imagethrough/v1/modelsand generated Codex catalog projection;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.