Client or integration
Direct HTTP/API client
Area
Catalog / models
Summary
ocx provider edit … --model <id> --text-only writes modelCapabilities[id].inputModalities = ["text"], and the inbound consumer path (isModelTextOnly) honors it, but the describer-selection path does not: modelAcceptsImageInputWithCache (src/vision/eligibility.ts:159 at eb81eaa) calls isModelVisionSidecarConsumer with an object literal that omits modelCapabilities, then falls through to nativeInputModalities(id) ?? true. A native/OpenAI-catalog model the operator declared blind can still be selected as the vision-sidecar describer while inbound requests to it are correctly diverted.
Reproduction
- Declare a native model text-only:
ocx provider edit openai --model <native-slug> --text-only
- Trigger a request that needs a vision sidecar describer.
- Observe the declared-blind native model remains eligible as describer (returns
advertisesImageInput(nativeInputModalities(id)) ?? true), contradicting the explicit declaration.
Found by the 2.53.0 release regression audit (lane03, commit d5d03f8). Synthesis disposition: follow-up issue — 2.52.0 had no modelCapabilities overlay and noVisionModels still disqualifies, so this is not a release blocker. Workaround: use noVisionModels.
Version
dev @ eb81eaa (post-2.52.0, pre-2.53.0)
Operating system
macOS (any; codepath is platform-independent)
Provider and model
any native/OpenAI-catalog model declared text-only
Logs or error output
N/A
Screenshots and supporting files
N/A — evidence is source-level, cited inline.
Redacted configuration
providers.
.modelCapabilities..inputModalities = ["text"]
Checks
Client or integration
Direct HTTP/API client
Area
Catalog / models
Summary
ocx provider edit … --model <id> --text-onlywritesmodelCapabilities[id].inputModalities = ["text"], and the inbound consumer path (isModelTextOnly) honors it, but the describer-selection path does not:modelAcceptsImageInputWithCache(src/vision/eligibility.ts:159 at eb81eaa) callsisModelVisionSidecarConsumerwith an object literal that omitsmodelCapabilities, then falls through tonativeInputModalities(id) ?? true. A native/OpenAI-catalog model the operator declared blind can still be selected as the vision-sidecar describer while inbound requests to it are correctly diverted.Reproduction
ocx provider edit openai --model <native-slug> --text-onlyadvertisesImageInput(nativeInputModalities(id)) ?? true), contradicting the explicit declaration.Found by the 2.53.0 release regression audit (lane03, commit d5d03f8). Synthesis disposition: follow-up issue — 2.52.0 had no modelCapabilities overlay and
noVisionModelsstill disqualifies, so this is not a release blocker. Workaround: usenoVisionModels.Version
dev @ eb81eaa (post-2.52.0, pre-2.53.0)
Operating system
macOS (any; codepath is platform-independent)
Provider and model
any native/OpenAI-catalog model declared text-only
Logs or error output
N/A
Screenshots and supporting files
N/A — evidence is source-level, cited inline.
Redacted configuration
providers.
.modelCapabilities..inputModalities = ["text"]
Checks