Fix a model that does not support image in DeepSeek Harness

Configuration & UsagePublished 2026-08-26Author: DSH Plugin Hub
DeepSeek HarnessDSH pluginmultimodalimage errormodel config
"The current model does not support image" means a hand-entered model is text-only by default and rejects images before sending. Add input: [text, image] in settings.yaml; old builds also failed on large images — fixed in v0.1.0-rc.8.

When DSH reports "the current model do not support image", a hand-entered model is treated as text-only by default — the image is refused before it is sent, naming the model. Fix it by adding input: [text, image] to that model in settings.yaml. Separately, older builds (before rc.8) also failed outright on oversized images or a high cumulative image load; the official v0.1.0-rc.8 release fixed this, so updating resolves it.

What the error means: why a model "does not support image"

Nothing can ask an endpoint which modalities it accepts, so manually entered models default to text-only — images are refused before they are sent. The official docs put it plainly: a model you enter by hand is treated as text-only until declared, and attaching an image to such a model is refused before sending, naming the model (source).

Three points:

  1. The refusal happens before sending — dsh intercepts it, the endpoint never sees the image.
  2. The error names the model, telling you exactly which one lacks image capability.
  3. "By hand" means models whose id you typed in; catalog models carry their modality from the installed catalog (source).

Enabling image input, step by step

Declaring image modality is one line: add input: [text, image] in settings.yaml. Configure it in 4 steps:

  1. Open the config file: $DSH_HOME/settings.yaml (create it if missing; it is dsh's global settings file).
  2. Declare image support for one model: add input to that model under the provider's models:
    yaml
    llm-pi-ai:
      providers:
        my-gateway:
          apiKeyEnv: GATEWAY_API_KEY
          api: openai-completions
          baseURL: https://gateway.example/v1
          models:
            - id: vision-preview
              input: [text, image]   # declare this model supports images
    
  3. When every model on a route takes images, set the route fallback once: write defaultInput at the route:
    yaml
    defaultInput: [text, image]   # route-level fallback, default is [text]
    
    defaultInput is a fallback, not an override: catalog models keep their own modalities, and the fallback only answers for models the catalog does not describe (source).
  4. Override catalog models with modelOverrides: catalog providers have no models list to write into; use modelOverrides keyed by model id:
    yaml
    llm-pi-ai:
      providers:
        anthropic:
          modelOverrides:
            claude-sonnet-4-5:
              input: [text]   # override the modality by model id
    
    Changes take effect on the next request — no restart needed (source).

The version story: old builds failed on images, updating fixes it

If you already declared input: [text, image] and images still fail, check the version — a known old-build bug is exactly this. The official v0.1.0-rc.8 release notes list two relevant fixes: oversized images or a high cumulative load of historical images causing model request failures, and some custom OpenAI-compatible gateways failing because of request-shape differences (source).

This explains two common symptoms:

  1. Small images work, large images fail: old builds had a payload ceiling that large images blew past — fixed in rc.8, just update.
  2. Requests fail after images were attached in earlier turns: the cumulative load of historical images in the same session crossed the ceiling — also within rc.8's fix scope.

Update steps:

  1. Check the current and latest versions: npm view @deepseek-ai/dsh version.
  2. Update to the latest (one-off npx @deepseek-ai/dsh web pulls the latest; globally installed users run npm update -g @deepseek-ai/dsh).
  3. After updating, restart the Web UI, start a new session, and send an image again.

Notes

  1. Hand-entered models are text-only by default; "does not support image" means input was not declared, not that the model is broken.
  2. Declare modalities with input, but never declare a modality the endpoint does not actually provide — the provider rejects the request (source).
  3. defaultInput is a fallback, not an override; catalog models follow their own records.
  4. On old builds, image failures are a version bug — update first (fixed in rc.8) before editing config.
  5. Rejected images stay in the session log; start a new session after changing config.
  6. DeepSeek's official chat-completions route is text-only — image capability needs a vision-serving endpoint; model-management plugins can be found in the model category of DSH Plugin Hub.
dsh-plugin-hub · Plugin Center
DSH Plugin Hub plugin market: find model-management plugins in the model category

Source: Configure models (official docs), v0.1.0-rc.8 Release Notes

FAQ

What does "the current model do not support image" mean in DSH?

A model you enter by hand is treated as text-only by default — nothing can ask an endpoint which modalities it accepts, so attaching an image is refused before it is sent, naming the model (official wording). Declare input: [text, image] for that model.

How do I make a model accept images in DSH?

Open $DSH_HOME/settings.yaml and add input: [text, image] to that model. If every hand-entered model on a route takes images, set defaultInput: [text, image] once on the route as a fallback (the default is [text]). Catalog providers have no models list, so write under modelOverrides keyed by model id.

An image request fails after sending. Is it config or a version problem?

It depends. Before v0.1.0-rc.8, oversized images or a high cumulative load of historical images made model requests fail outright — a known bug listed in the official fix records, solved by updating. On a new version, check the input declaration and whether the endpoint really serves images.

My custom gateway rejects image requests. What now?

You declared an image capability the endpoint does not actually provide: remove image from wherever granted it — the model's input or the route's defaultInput — then start a new session (attached images stay in the session log, so an old session repeats the same request). v0.1.0-rc.8 also fixed some OpenAI-compatible gateways failing due to request-shape differences — update first.

Do DeepSeek's official models support images?

DeepSeek's official chat-completions route is text-only; declaring input does not make it accept images — the provider rejects the request (official wording). For image capability, connect a model endpoint that really serves vision.

Sources