Skip to content

[Bug]: Vision model not available in model picker even when provider exposes one #4166

Description

@krixx646

Summary

This is not working / wrong:

When a connected provider (e.g. DeepSeek) exposes a vision-capable model on its /models endpoint, OpenWork's model picker does not list it. In our case the DeepSeek provider serves deepseek-v4-flash, deepseek-v4-pro, and deepseek-v4-flash-vision-exp, but only flash and pro appeared in the picker — the vision model was missing entirely.

Additionally, even after manually registering the vision model in opencode.jsonc, the engine refuses to read images with the error "This model does not support image input" unless the model entry also declares modalities.input containing "image". Just naming a model "vision" is not enough, because the bundled model registry doesn't include it and the app has no UI path to add a model to an existing provider.

To Reproduce

  1. Connect DeepSeek as a provider via Settings → AI Providers with a valid API key.
  2. Confirm the API serves a vision model: curl https://api.deepseek.com/v1/models → returns deepseek-v4-flash-vision-exp.
  3. Open the model picker for a session.
  4. Observe only deepseek-v4-flash and deepseek-v4-pro are listed — the vision model is absent.
  5. Workaround: manually add the vision model to the deepseek provider in opencode.jsonc.
  6. Attach an image and ask the agent to view it → error: "This model does not support image input".
  7. Only after adding "modalities": { "input": ["text", "image"] } to the model entry and reloading the engine does image input actually work.

Expected behavior

  • The model picker lists every model the connected provider exposes, including vision-capable models.
  • A vision-capable model is recognized automatically (or enabled via an obvious UI control) without manual config edits.

Actual behavior

  • The model picker is limited to a curated model registry compiled into the engine; models the provider serves but that aren't in that registry are hidden, with no UI way to add them.
  • Image input is gated on a modalities flag that must be set manually in config; without it, even a fundamentally vision-capable model is rejected with "This model does not support image input".

Environment

  • OpenWork Desktop (bundled opencode engine)
  • Provider: DeepSeek (OpenAI-compatible), API key stored by the app via auth.json.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions