sipeed/picoclaw · error
the active model does not support image input; configure age
Error message
the active model does not support image input; configure agents.defaults.image_model with a multimodal model
What it means
The anonymous variant of error 275: an image-bearing request hit a vision-unsupported provider error, no image_model is configured, and the active model's name could not be resolved. The advice is the same — set agents.defaults.image_model to a multimodal model — but no model can be named in the message.
Source
Thrown at pkg/agent/llm_media.go:93
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
}
}
return true
}
func messagesContainCurrentTurnMediaTurn(messages []providers.Message) bool {
for _, msg := range messages {View on GitHub (pinned to 49183d7e8d)
Solutions
- Set an explicit main model and an explicit multimodal agents.defaults.image_model in config
- Log/inspect the effective model configuration to find why the active model name is empty
- Avoid enqueueing images before the model configuration is fully resolved
Example fix
# before
agents:
defaults: {}
# after
agents:
defaults:
model: gpt-4o-mini
image_model: gpt-4o Defensive patterns
Strategy: fallback
Try / catch
resp, err := stream(ctx, req)
if err != nil {
if isVisionUnsupported(err) && messagesContainMedia(req.Messages) {
req.Messages = stripMessageMedia(req.Messages)
resp, err = stream(ctx, req)
}
if err != nil { return resp, err }
} Prevention
- Pin both model and image_model explicitly in config instead of relying on defaults
- Log the resolved model at request time so unnamed-model failures are traceable
- Validate that model resolution yields a non-empty id before the first LLM call
When it happens
Trigger: No image_model configured, the active model name resolves to empty at the failure site (unnamed/default provider resolution), and the message set contains media that the provider rejected with a recognized vision-unsupported error string.
Common situations: Default provider setup where the model id never got set explicitly; config layers (defaults + overrides) cancelling out to an empty model; early startup before model resolution completes when media is already queued.
Related errors
- selected vision model %q does not support image input; updat
- selected vision model does not support image input; update a
- active model %q does not support image input; configure agen
- 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/57764433497bfe26.
Report an issue: GitHub.