Repository navigation
[Bug]: Catalog advertises image input for text-only models when visionSidecar.enabled=false (2.84.0) #7086
Description
Problem
On 2.84.0, the exported Codex catalog advertises text,image for a provider-configured text-only model even when the global vision sidecar is explicitly disabled. The corresponding request-time planner returns no sidecar plan. This makes the client attachment affordance inconsistent with the effective configuration.
This is a static-source report plus a read of an existing locally exported catalog, not a newly executed model request or isolated runtime reproduction. The installation has other local patches, but all five source files cited below are byte-for-byte identical to the pristine 2.84.0 npm package.
Minimal relevant configuration
{
"visionSidecar": { "enabled": false },
"providers": {
"deepseek": {
"noVisionModels": ["deepseek-v4-pro"],
"modelInputModalities": { "deepseek-v4-pro": ["text"] }
}
}
}The provider block is an excerpt, not a standalone complete configuration. No credentials or endpoints are needed to describe the mismatch. The existing exported entry for deepseek/deepseek-v4-pro has input_modalities: ["text", "image"].
Source evidence in published 2.84.0
src/codex/catalog/model-hints.ts:296:sidecarCovered = isModelVisionSidecarConsumer(prov, model.id)widens the model to image input.src/codex/catalog/routed-gather.ts:747: the custom-row path uses the same predicate and widens to image input.src/vision/eligibility.ts:136: this predicate only receives provider capability declarations and a model id. It cannot see the global disabled setting.src/vision/plan.ts:222: the actual planner returnsundefinedwhenvisionSidecar.enabled === false. The function documentation specifies stripping raw images when no plan is available.src/codex/catalog/gather-capture.ts:567:gatherFlightKeydoes not include the global sidecar-enabled setting, so a fix should also consider sharing/caching across configuration snapshots.
Expected behavior / scope
When the vision sidecar is explicitly disabled, do not add synthetic image capability to otherwise text-only rows. Preserve native image capability and explicit supported overrides, and preserve sidecar-backed image advertisement when enabled. I am not asking to enable a sidecar automatically or send images to a text-only upstream.
Related history: #349 and #3105 deliberately enabled attachment delivery for sidecar-backed models. This report concerns the explicitly disabled-sidecar case. If advertising attachments while stripping them with no plan is intentional, please clarify the intended contract and whether a supported setting can advertise effective text-only capability without disabling a model.
No proxy/client restart, live model request, authentication changes, or TLS changes were made to investigate this report.
Activity
Ingwannu commentedon Oct 16, 2026
#7126 addresses the disabled-vision-sidecar catalog mismatch and is being carried into #7220. This is still an open integration PR at the inspected snapshot, so the issue remains open.
The acceptance boundary is the published catalog capability when the sidecar is disabled, together with the enabled case and any per-target Combo capability. No live catalog or customer configuration was changed here.
Ingwannu commentedon Oct 16, 2026
The previously pending integration is now on
dev: #7220, merge commitf6e6f1bbd480bbe876fb408a5825459f6b8dac5e. I verified ancestry againstdev@c03eafd46b; the carry contains the fix linked in the earlier triage comment.Closing as completed on dev. The bundle contains its own verification and documented limits; I did not rerun those runtime tests or confirm the reporter's live client. This does not assert release/package availability.