Skip to content

[Bug]: Catalog advertises image input for text-only models when visionSidecar.enabled=false (2.84.0) #7086

Closed

Description

@tone-leh

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 returns undefined when visionSidecar.enabled === false. The function documentation specifies stripping raw images when no plan is available.
  • src/codex/catalog/gather-capture.ts:567: gatherFlightKey does 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

  1. added
    bugSomething isn't working
    catalogModel catalog, slugs, visibility, routed entries
    on Oct 14, 2026
  2. Ingwannu commented on Oct 16, 2026

    @Ingwannu
    Owner

    #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.

  3. Ingwannu commented on Oct 16, 2026

    @Ingwannu
    Owner

    The previously pending integration is now on dev: #7220, merge commit f6e6f1bbd480bbe876fb408a5825459f6b8dac5e. I verified ancestry against dev@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.

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

    bugSomething isn't workingcatalogModel catalog, slugs, visibility, routed entries

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions