[Bug] Model routing mismatch: Receiving Sonnet 3.5 instead of Opus 4.1 on 20x Max plan
TLDR: from time to time, I would notice performance would randomly significantly drop. I have reproduced several times, that every time sonnet 3.5 would sneak in as main agent orchestrator instead of opus 4.1 . see in see screenshots
Bug Description
Subject: Critical Service Delivery Issue - Sometimes randomly receiving Sonnet 3.5 Instead of Opus 4.1 Despite 20x Max Plan and Available Quota
Date: October 27, 2025
Account Type: 20x Max Plan (highest tier)
Issue Type: Model Mismatch / Service Delivery Failure
Executive Summary
I am paying for the 20x Max plan which should provide access to Opus 4.1, but Claude Code is often serving Sonnet 3.5 instead, despite having 51% of my Opus weekly quota remaining. This represents a significant service delivery failure.
Issue Details
Expected Behavior:
20x Max plan includes priority access to Opus 4.1
System message states: “You are powered by the model named Opus 4.1. The exact model ID is claude-opus-4-1-20250805”
CLAUDE.md protocol is designed for Opus-level deliberation and compliance
Actual Behavior:
Receiving Sonnet 3.5 (claude-3.5-sonnet-20241022)
Model self-identifies as Sonnet when questioned
Exhibits Sonnet behavior patterns: action-oriented, poor protocol compliance, reflexive rather than deliberative
Current Usage (as of October 27, 2025):
Current session: 1% used
Current week (all models): 47% used
Current week (Opus): 51% used (49% AVAILABLE)
Impact on Work
Protocol Violations: Sonnet 3.5 repeatedly violates engineering protocols designed for Opus:
Ignores delegation requirements (performs work directly instead of using subagents)
Skips research-first requirements (assumes knowledge instead of requesting verification)
Makes direct file edits without proper review process
Wastes main session tokens on implementation work
Quality Issues:
Lower quality architectural decisions
More rework required due to hasty implementations
Increased error rate from “jump to solution” behavior
Time wasted correcting protocol violations
Financial Impact:
Paying premium price for Opus 4.1 quality
Receiving Sonnet 3.5 quality (lower tier)
Time cost of managing inferior model behavior
Token waste from protocol violations
Evidence
Model self-reports as Sonnet 3.5 when directly asked
Behavior patterns match Sonnet (speed-oriented) not Opus (deliberation-oriented)
Protocol compliance issues consistent with wrong model tier
Despite 51% Opus quota remaining, not receiving Opus
Expected Resolution
Immediate: Restore Opus 4.1 access for 20x Max plan subscribers
Compensation: Service credit for period of degraded service
Transparency: Explanation of why model routing failed despite available quota
Prevention: Ensure model routing respects plan tier and available quotas
Technical Details
Environment: Claude Code (Anthropic’s official CLI)
Session Context: Engineering/DevOps work requiring high-quality deliberation
Protocol: CLAUDE.md designed specifically for Opus-level reasoning
Impact Duration: Multiple sessions over past days
Reproduction Steps
Start new Claude Code session with 20x Max plan
Check weekly Opus usage (should be <100%)
Ask model to identify itself
Observe Sonnet 3.5 response despite Opus quota availability
Environment Info
- Platform: linux
- Terminal: tmux
- Version: 2.0.27
- Feedback ID: 818721b2-b2ae-44ca-9b38-363b38541658
<img width="1928" height="540" alt="Image" src="https://github.com/user-attachments/assets/333dcd0a-555a-4860-bb6d-715beb4c4ab2" />
<img width="1874" height="1296" alt="Image" src="https://github.com/user-attachments/assets/87a5e01a-f48b-41f7-b701-f680b2cdfd45" />
<img width="1018" height="1283" alt="Image" src="https://github.com/user-attachments/assets/6952f778-6ffa-456b-90c3-39e7a5155c7a" />
<img width="1444" height="193" alt="Image" src="https://github.com/user-attachments/assets/85ea7284-9756-415e-aece-7f9a779fe807" />
<img width="670" height="352" alt="Image" src="https://github.com/user-attachments/assets/0d96db07-c7c0-40a0-b103-d33fcc75908e" />
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗