Skip to content

[BUG] Silent billing change in v2.1.51: 1M context moved to extra-usage-only without notice — JSONL data proves identical workload billed differently #28927

@paulseongminpark

Description

@paulseongminpark

Summary

After updating Claude Code from v2.1.50 to v2.1.51, all 1M context model usage began consuming Extra Usage instead of the Max plan subscription allocation. This change was not documented in the changelog, no in-app notification was provided, and the Extra Usage charges were not reflected in real-time — only appearing a day later.

Environment

  • Plan: Max ($100/month)
  • Platform: Windows (MSYS2/bash)
  • Versions affected: v2.1.51, v2.1.52, v2.1.53
  • Version before (working): v2.1.50

Evidence: Same workload, different billing

I extracted token-level usage from my JSONL session transcripts:

Date CC Version Opus 1M API Calls Cache Read Tokens Extra Usage Impact
Feb 23 v2.1.50 644 85,100,082 None
Feb 25 v2.1.51+ 392 80,173,520 +17% ($48.79 total)

Feb 23 had MORE usage than Feb 25, yet Extra Usage was unaffected. The only variable that changed was the Claude Code version.

Timeline

  1. Feb 23 (v2.1.50): Used Opus 1M heavily (644 API calls, 85M cache_read tokens). Current Session usage increased normally. Extra Usage: unchanged.
  2. Feb 25 ~05:00 KST: Auto-updated to v2.1.51/52/53.
  3. Feb 25 all day: Used Opus 1M normally. Unknown to me, ALL sessions were now consuming Extra Usage.
  4. Feb 25 evening: Checked Extra Usage — it had NOT increased yet (delayed billing).
  5. Feb 26: Extra Usage jumped from ~80% to 97%. $48.79 charged.

Three distinct problems

1. Silent billing change (no notification)

The v2.1.51 changelog says:

"Model picker improvements: now shows human-readable labels with upgrade hints"

What it actually did: Added "Billed as extra usage" labels to 1M models AND changed the billing behavior. The changelog does not mention any billing change.

v2.1.50 prepared for this silently:

  • Added CLAUDE_CODE_DISABLE_1M_CONTEXT env var (why disable something that's free?)
  • Added /extra-usage command (why monitor something that wasn't being charged?)

2. No real-time billing feedback

Extra Usage charges from Feb 25 sessions were NOT reflected on Feb 25. They only appeared on Feb 26. Users cannot monitor or control spending if charges are delayed by 24+ hours.

3. Contradictory documentation

  • Model picker UI: "Billed as extra usage" (no threshold mentioned — implies ALL tokens)
  • Official docs (code.claude.com): "Standard rates until 200K, extra usage after 200K"

Which is correct? Users cannot make informed decisions with conflicting information.

Impact

  • Max plan ($100/month) subscribers lose access to 1M context without additional payment
  • The feature that was previously included is now paywalled
  • No migration path or notice was provided
  • Disabling Extra Usage to prevent charges also disables 1M models entirely

Request

  1. Acknowledge that 1M billing changed in v2.1.51 and was not documented
  2. Credit Extra Usage charges incurred between v2.1.50 → v2.1.51 transition (users had no way to know)
  3. Fix real-time billing feedback — charges must be reflected immediately, not 24h later
  4. Clarify the documentation: is it ALL tokens or only >200K that count as extra usage?
  5. Add opt-in consent before switching to extra usage billing (similar to what the model picker now shows, but as an explicit confirmation dialog)

Related issues

Reproduction

  1. Have JSONL transcripts from v2.1.50 sessions using Opus 1M
  2. Compare Extra Usage meter before and after updating to v2.1.51+
  3. Observe that identical (or lower) usage now consumes Extra Usage

I have full JSONL session transcripts with token-level data available for investigation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    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