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
- 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,
},
},
};
- 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.
- 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
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
anthropicandanthropic-apikeyproviders omitmodelInputModalitiesfor 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
inputdefaults to["text"]); Kimi CLI drops the documentedcapabilities: ["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 asmodalities.inputor 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
liveModels: falseto reproduce offline:loadExportModels(config)fromsrc/server/management/model-rows.ts, thenbuildClientConfig(client, { config, models, baseUrl: "http://127.0.0.1:10100/v1" })for each ofaside,pi,gajae.document.providers.opencodex.models: Claude entries haveinput: ["text"]instead of["text", "image"].A regression added beside the existing bare-Anthropic reasoning test in
tests/server/management-client-config-route.test.tsfails for all three clients. A registry-level test also fails becauseproviderConfigSeed(entry).modelInputModalities?.[model]isundefined.Version
Reproduced on upstream
devcommitaa91958e3b050084e1edc07dcd66b05ef6eac604. Releasemainexamined at1cc89cf88c39160e4bb1ee21f0fd37404dd6930b(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) andanthropic-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
Screenshots and supporting files
Audit matrix (capability declarations, not a claim of live image-request testing in every application):
inputarrays; consume shared catalog metadatamodalities.input; OpenCode alsoattachmentmodalities.inputandsupportsVisionsupports_visionabilities.vision.supportedinput; defaults to text-only when omittedcapabilities: ["image_in"]input_modalitiescapabilities.image_input.supportedOpenClaw input schema, attachment gate, text-only default.
Kimi CLI capability schema and image input gate.
Official model documentation: https://platform.claude.com/docs/en/models/overview — "All current models support text and image input".
Vision API documentation: https://platform.claude.com/docs/en/build-with-claude/vision
Current registry:
src/providers/registry/entries-core.tshas context windows and reasoning efforts for both Anthropic providers, but no input modalities.src/providers/derive.tsalready fills modality declarations per model while preserving explicit overrides.src/clients/config-export/model-metadata.tsalready allows bothtextandimage; the text-only fallback for missing metadata is intentional, not an Anthropic-specific restriction.Related but different: fix(catalog,anthropic): keep Claude combo image/effort capabilities and honor provider output budget #3332 / feat(catalog,codex): carry Claude combo capabilities and give reset-credit redeems a stable identity #3474 addressed combo metadata fallback; fix(providers): advertise the reasoning-effort ladder for native Anthropic models #3454 added Anthropic reasoning metadata; fix(chat): accept Pi and Anthropic-shaped image parts on the chat wire #4497 / [agent] fix: normalize inbound Chat images before route selection and preserve an explicit reasoning disable #4534 addressed image wire conversion rather than exported capabilities. I found no exact existing report for this direct-provider export gap in all-state issue/PR searches.
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