[MODEL] Claude Code CLI silently routedvAPI calls to claude-haiku-4-5-20251001 without my knowledge or consent

Resolved 💬 4 comments Opened Feb 1, 2026 by JohnTracyTR Closed Mar 2, 2026

Preflight Checklist

  • [x] I have searched existing issues for similar behavior reports
  • [x] This report does NOT contain sensitive information (API keys, passwords, etc.)

Type of Behavior Issue

Other unexpected behavior

What You Asked Claude to Do

I explicitly requested Opus-only operation. I am using claude-opus-4-5-20251101 as my model.
I did NOT request Haiku. I did NOT consent to model routing/switching.

What Claude Actually Did

  1. Claude Code CLI silently routed 20 API calls to claude-haiku-4-5-20251001

without my knowledge or consent

  1. These calls were interleaved with my Opus calls during a single session
  2. The Haiku calls had small token counts (144-2133 tokens) suggesting they

were sub-agent or internal routing decisions

  1. I only discovered this by checking server-side LiteLLM logs
  2. There was NO indication in the CLI that a different model was being used
  3. The Task tool defaults to Haiku for "quick tasks" per its own documentation:

"Prefer haiku for quick, straightforward tasks to minimize cost and latency"

Evidence from logs:

  • 30 calls to claude-opus-4-5-20251101 (what I requested)
  • 20 calls to claude-haiku-4-5-20251001 (UNAUTHORIZED)

Sample Haiku calls (all unauthorized):
2026-02-01T21:19:21Z | claude-haiku-4-5-20251001 | tokens: 917
2026-02-01T21:19:14Z | claude-haiku-4-5-20251001 | tokens: 1427
2026-02-01T21:18:55Z | claude-haiku-4-5-20251001 | tokens: 1423
2026-02-01T21:18:43Z | claude-haiku-4-5-20251001 | tokens: 894
[...16 more unauthorized calls...]

Expected Behavior

Expected Behavior

Claude Code should:

  1. ONLY use the model I specified (claude-opus-4-5-20251101)
  2. NEVER silently route to a different model without explicit consent
  3. If model routing is a feature, it should be:
  • Opt-in, not opt-out
  • Clearly disclosed before the session
  • Visible in the CLI output when it happens
  1. The Task tool should NOT default to Haiku - it should inherit the parent model
  2. Users who pay for Opus should get Opus for ALL calls, not just some

Files Affected

Permission Mode

Accept Edits was ON (auto-accepting changes)

Can You Reproduce This?

Yes, every time with the same prompt

Steps to Reproduce

  1. Start Claude Code CLI with Opus model
  2. Work on a complex task that triggers Task tool usage (sub-agents)
  3. Check server-side API logs (if you have access via LiteLLM or similar)
  4. Observe that claude-haiku-4-5-20251001 calls appear despite never requesting Haiku
  5. The Task tool documentation explicitly states it prefers Haiku:

"Prefer haiku for quick, straightforward tasks to minimize cost and latency"

Additional Context

This is a breach of trust. Users selecting Opus are doing so deliberately -
for quality, capability, and consistency. Silently downgrading to Haiku:

  1. Undermines user choice
  2. Reduces quality of assistance without disclosure
  3. Is deceptive - the CLI shows no indication of model switching
  4. Violates reasonable user expectations when paying for a premium model

The only way I discovered this was by having access to enterprise LiteLLM
logging. Most users would never know they're getting Haiku instead of Opus.

Requested fix: Add a --no-model-routing or --opus-only flag that prevents
ANY calls to models other than the one specified.

Claude Model

Opus

Relevant Conversation

Impact

High - Significant unwanted changes

Claude Code Version

2.1.20 (Claude Code)

Platform

Google Vertex AI

Additional Context

_No response_

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗