sipeed/picoclaw · error
active model %q does not support image input; configure agen
Error message
active model %q does not support image input; configure agents.defaults.image_model with a multimodal model
What it means
Raised via visionUnsupportedModelError when an image-bearing request failed with a vision-unsupported provider error, no image_model override is configured, and the active (main) model's name is known. The message names the active model and recommends configuring agents.defaults.image_model with a multimodal model so images can be routed elsewhere.
Source
Thrown at pkg/agent/llm_media.go:88
return false
}
func visionUnsupportedModelError(modelName string, imageModelConfigured bool) error {
modelName = strings.TrimSpace(modelName)
if imageModelConfigured {
if modelName != "" {
return fmt.Errorf(
"selected vision model %q does not support image input; update agents.defaults.image_model to a multimodal model",
modelName,
)
}
return fmt.Errorf(
"selected vision model does not support image input; update agents.defaults.image_model to a multimodal model",
)
}
if modelName != "" {
return fmt.Errorf(
"active model %q does not support image input; configure agents.defaults.image_model with a multimodal model",
modelName,
)
}
return fmt.Errorf(
"the active model does not support image input; configure agents.defaults.image_model with a multimodal model",
)
}
func sameCandidateSet(a, b []providers.FallbackCandidate) bool {
if len(a) != len(b) {
return false
}
for i := range a {
if a[i].StableKey() != b[i].StableKey() {
return false
}
}View on GitHub (pinned to 49183d7e8d)
Solutions
- Configure agents.defaults.image_model with a multimodal model so image traffic is routed there
- Or switch the main model to a multimodal one
- Or remove/suppress the image content (the pipeline's stripMessageMedia path) if it's not needed
Example fix
# before
agents:
defaults:
model: deepseek-chat
# no image_model configured
# after
agents:
defaults:
model: deepseek-chat
image_model: gpt-4o Defensive patterns
Strategy: fallback
Try / catch
resp, err := stream(ctx, req)
if err != nil {
if isVisionUnsupported(err) && messagesContainMedia(req.Messages) {
// no image_model configured: drop media and retry on the text model
req.Messages = stripMessageMedia(req.Messages)
resp, err = stream(ctx, req)
}
if err != nil { return resp, err }
} Prevention
- Whenever the main model is text-only, configure agents.defaults.image_model
- Test the agent once with an image after any model switch
- Gate image-producing tools on the presence of a multimodal route
When it happens
Trigger: Running a text-only main model (e.g. deepseek-chat, llama-3 text) and attaching an image to a message: messagesContainMedia is true, the provider rejects the image_url content, and no agents.defaults.image_model exists to fall back to.
Common situations: Users switch the default agent to a cheaper text-only model and forget images need routing; screenshots pasted into a CLI backed by a text model; a tool returning image output into a text-model session.
Related errors
- selected vision model %q does not support image input; updat
- selected vision model does not support image input; update a
- the active model does not support image input; configure age
- fallback model %q has no active provider
- context window still exceeded after retry compaction; refusi
AI-assisted analysis of sipeed/picoclaw@49183d7e8d (2026-08-15).
Data as JSON: /api/errors/fa2b39874af4bace.
Report an issue: GitHub.