Skip to content

bug: Anthropic image input capabilities missing from integration configurations #4667

Description

@TykanN

Client or integration

Other

Area

Catalog / models

Summary

This is a cross-integration capability-metadata defect, not an Aside/Pi/GJC-only bug. The built-in anthropic and anthropic-apikey providers omit modelInputModalities for their static Claude model catalog. All integration configuration paths consuming that metadata need auditing for omitted image-input declarations or their schema-equivalent capability fields.

Aside, Pi and GJC (internal client id gajae) were the initial reproduction examples, not the scope boundary. The audit covers all 15 registered config exporters plus Codex and Claude integration surfaces.

Two independent exporter gaps also need fixing: OpenClaw drops even declared input modalities (its omitted input defaults to ["text"]); Kimi CLI drops the documented capabilities: ["image_in"] flag. These two fixes must apply to all catalog-backed image models, not only Anthropic.

I observed that adding "image" to the input arrays for Fable, Opus, Sonnet and Haiku in my Aside configuration enabled image attachments in Aside chat. This manual observation is separate from the deterministic configuration-generation reproduction below; Pi/GJC live image requests have not been tested here.

Expected: every integration that declares model input capabilities must advertise image support for the known image-capable Claude models, using "input": ["text", "image"] or the integration's supported equivalent (such as modalities.input or a vision boolean), without manual client-file edits. Configurations with no per-model capability field must not receive invented unsupported fields. Unknown models should retain the existing conservative fallback, and explicit operator overrides should remain authoritative.

Reproduction

  1. Use a bare built-in Anthropic provider config, with liveModels: false to reproduce offline:
    const config = {
      port: 10100, hostname: "127.0.0.1", defaultProvider: "anthropic",
      providers: {
        anthropic: {
          adapter: "anthropic", baseUrl: "https://api.anthropic.com",
          authMode: "oauth", liveModels: false,
        },
      },
    };
  2. Call the production loadExportModels(config) from src/server/management/model-rows.ts, then buildClientConfig(client, { config, models, baseUrl: "http://127.0.0.1:10100/v1" }) for each of aside, pi, gajae.
  3. Inspect document.providers.opencodex.models: Claude entries have input: ["text"] instead of ["text", "image"].

A regression added beside the existing bare-Anthropic reasoning test in tests/server/management-client-config-route.test.ts fails for all three clients. A registry-level test also fails because providerConfigSeed(entry).modelInputModalities?.[model] is undefined.

Version

Reproduced on upstream dev commit aa91958e3b050084e1edc07dcd66b05ef6eac604. Release main examined at 1cc89cf88c39160e4bb1ee21f0fd37404dd6930b (2.55.0). The installed version used for my manual Aside observation was not recorded.

Operating system

macOS / Darwin 25.6.0; Bun 1.4.2 (automated reproduction).

Provider and model

Built-in anthropic (OAuth) and anthropic-apikey (API key); Claude Fable 5.1/5, Sonnet 5/4.6, Opus 5/4.8/4.7/4.6, Haiku 4.5 static catalog.

Logs or error output

bun test tests/server/management-client-config-route.test.ts --test-name-pattern 'native Anthropic image input'
3 fail: aside, pi, gajae
Expected input: ["text", "image"]
Received input: ["text"]

bun test tests/providers/provider-registry-parity.test.ts --test-name-pattern 'Anthropic providers seed image'
1 fail
Expected: ["text", "image"]
Received: undefined

Screenshots and supporting files

Audit matrix (capability declarations, not a claim of live image-request testing in every application):

Integration Image-input declaration / finding
Pi, Aside, Prime, omo, OMP, GJC, DSH input arrays; consume shared catalog metadata
OpenCode V1 and V2, ZCode modalities.input; OpenCode also attachment
Cline modalities.input and supportsVision
Hermes supports_vision
Raycast abilities.vision.supported
OpenClaw Additional missing field: model input; defaults to text-only when omitted
Kimi CLI Additional missing field: model capabilities: ["image_in"]
Codex injected model catalog input_modalities
Claude model discovery capabilities.image_input.supported
Claude gateway cache / Desktop static config / MMX launcher No image capability field in these connection/cache shapes; do not invent one
MiniMax Code Current exporter has no image declaration; upstream support for such a field could not be established, so this remains an explicit evidence gap

Redacted configuration

{"id":"anthropic/claude-fable-5-1","input":["text"]}

Proposed fix: declare image input for the existing shared Anthropic model seed on both auth variants, audit every integration configuration writer, fix any remaining dropped image declaration, and cover every supported output shape through the registry-to-client-document chain. No blanket image claim for unknown models, and no unsupported fields added to client schemas.

Checks

  • I searched existing issues and documentation.
  • I removed secrets, tokens, account details, request credentials, and personal data.

Activity

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

    account-poolOAuth, credentials, Codex pool, quota, failover, plansbugSomething 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