sipeed/picoclaw · error
selected vision model does not support image input; update a
Error message
selected vision model does not support image input; update agents.defaults.image_model to a multimodal model
What it means
Same vision-unsupported condition as error 273, but the configured image model's name could not be determined (empty/blank after trim), so the error cannot name it. It still confirms an image_model was explicitly configured under agents.defaults.image_model and that model rejected image input.
Source
Thrown at pkg/agent/llm_media.go:83
// JSON schema level with an "unknown variant" error rather than a semantic
// "not supported" message.
if strings.Contains(msg, "unknown variant") && strings.Contains(msg, "image_url") {
return true
}
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
}View on GitHub (pinned to 49183d7e8d)
Solutions
- Inspect the loaded config (print the effective agents.defaults.image_model) to see why the name is empty
- Set image_model to an explicit multimodal model id
- Fix the config templating/env var that yields a blank value
Example fix
# before
agents:
defaults:
image_model: "${VISION_MODEL}" # env var unset → empty
# after
agents:
defaults:
image_model: gpt-4o Defensive patterns
Strategy: validation
Validate before calling
func effectiveImageModel(cfg *config.Config) string {
return strings.TrimSpace(cfg.Agents.Defaults.ImageModel)
}
// fail fast at startup if the field is configured but resolves empty
if cfg.Agents.Defaults.ImageModelKeySet && effectiveImageModel(cfg) == "" {
return errors.New("agents.defaults.image_model is set but resolves to an empty model name")
} Try / catch
resp, err := stream(ctx, req)
if err != nil && strings.Contains(err.Error(), "does not support image input") {
return resp, fmt.Errorf("vision routing broken: %w", err)
} Prevention
- Assert non-empty image_model after config templating/env interpolation
- Add startup validation that rejects blank model names in defaults
- Log the effective model names once at boot for diagnosability
When it happens
Trigger: agents.defaults.image_model configured but resolving to an empty/whitespace model name at failure time — misparsed config, an empty-string override, or a lookup that produced no name — combined with an image-bearing request whose provider error matched isVisionUnsupportedError.
Common situations: Template/env interpolation producing an empty model name in generated config; config key typo causing the value to be read from elsewhere; a stale config where the image model field is blank.
Related errors
- selected vision model %q does not support image input; updat
- active model %q does not support image input; configure agen
- 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/f628ae43558d37fb.
Report an issue: GitHub.