Skip to content

anthropic (api_key) provider: Claude Haiku 4.5 missing from static model catalog → "Unknown model" (model_not_found) #90088

@maaron34

Description

@maaron34

Summary

On the anthropic (api_key) provider, no Claude Haiku 4.5 model id resolves. Both the rolling alias anthropic/claude-haiku-4-5 and the dated anthropic/claude-haiku-4-5-20251001 fail at model resolution with Unknown model ... (model_not_found). Opus 4.6/4.7/4.8 and Sonnet 4.6 resolve fine on the same provider/auth.

Environment

  • openclaw 2026.6.1 (also reproduced on 2026.5.28)
  • macOS, Node 25.x
  • Auth: single profile anthropic:default, mode api_key

Repro

openclaw agent --agent main --model anthropic/claude-haiku-4-5 --message "hi"
# GatewayClientRequestError: FailoverError: Unknown model: anthropic/claude-haiku-4-5 (model_not_found)

openclaw agent --agent main --model anthropic/claude-haiku-4-5-20251001 --message "hi"
# FailoverError: Unknown model: anthropic/claude-haiku-4-5-20251001 (model_not_found)

Same failure when a cron job's payload.model is set to either id (openclaw cron run <id>lastErrorReason: model_not_found). A job with a fallback chain shows: All models failed (2): anthropic/claude-haiku-4-5-20251001: Unknown model ... | anthropic/claude-haiku-4-5: Unknown model ....

Root cause

dist/extensions/anthropic/openclaw.plugin.jsonmodelCatalog.providers.anthropic.models lists only claude-opus-4-8, claude-opus-4-7, claude-opus-4-6, claude-sonnet-4-6. There is no Haiku entry. And modelCatalog.discovery.anthropic = "static", so there's no runtime discovery to fill the gap.

DEFAULT_CLAUDE_MODEL_BY_FAMILY.haiku = "claude-haiku-4-5" exists in claude-model-refs, and #78000 added claude-haiku-4-5 to the api_key allowlist defaults — but neither makes the model resolvable, because the resolver requires the id to be present in the provider's static catalog.

Expected

anthropic/claude-haiku-4-5 (and/or the dated claude-haiku-4-5-20251001) resolves on the api_key provider, the same way Sonnet/Opus do.

Suggested fix

Add a Haiku 4.5 entry to modelCatalog.providers.anthropic.models, mirroring the claude-sonnet-4-6 entry:

{
  "id": "claude-haiku-4-5-20251001",
  "name": "Claude Haiku 4.5",
  "reasoning": true,
  "input": ["text", "image"],
  "contextWindow": 200000,
  "maxTokens": 64000
}

(The dated Anthropic model id is claude-haiku-4-5-20251001; claude-haiku-4-5 is the rolling alias.)

Impact

Anyone wanting Haiku 4.5 on the api_key provider — e.g. as a cheaper tier for cron/heartbeat jobs — can't select it; those jobs fail with model_not_found until switched to Sonnet (~3x the per-token cost).

Non-working workaround

Declaring a custom Haiku entry under providers.anthropic.models in agents/<id>/agent/models.json is stripped on gateway restart, so that isn't a viable workaround. Current workaround is to use anthropic/claude-sonnet-4-6.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.clawsweeper:queueable-fixClawSweeper marked this issue as an existing queue_fix_pr work candidate.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions