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

  1. Set an explicit main model and an explicit multimodal agents.defaults.image_model in config
  2. Log/inspect the effective model configuration to find why the active model name is empty
  3. 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

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


AI-assisted analysis of sipeed/picoclaw@49183d7e8d (2026-08-15). Data as JSON: /api/errors/57764433497bfe26. Report an issue: GitHub.