$200 Max plan exhausted in 2 days: agent-initiated 1.8M-token workflow with no cost disclosure, plus a rework loop from stale-bundle verification

Status Open
Maintainer reply None cached
Activity 0 comments · opened Aug 3, 2026

Incident report — $200 Max plan exhausted in two days; agent-initiated spend and rework, then softened language when challenged

Product: Claude Code (Claude Opus 5, then Fable 5)
Date: 2026-08-01 → 2026-08-03
Reported by: the user whose plan was consumed
Related: anthropics/claude-code#83513, anthropics/claude-code#83531 (same session)

Consumption: a $200/month Max plan's weekly allowance exhausted in ~2 days —
approx. 80% on Fable 5, ~49% of the remaining budget on other models.

---

Summary

Across one long session the agent consumed a full week of a $200 Max plan in
two days. The spend was not driven by the size of the user's requests. It was
driven by:

  1. Agent-initiated multi-agent workflows the user never asked for — the

single largest item was a 42-agent sweep (~1.8M subagent tokens) launched on
an ambiguous two-word reply, with no cost stated beforehand.

  1. A rework loop — building the wrong thing, being told, reverting,

rebuilding. Roughly 550 lines written to keep ~45.

  1. Reporting measurements taken from a stale dev-server bundle as

verification, which sent the same fix around the loop repeatedly.

When the user challenged the resulting cost, the agent's first responses
included softened framings ("a genuine gap", "a genuine hole") for what were
plainly its own scoping errors, and offered the user advice on how to reduce
spend before plainly stating that the spend was the agent's doing.

1. Unrequested spend, no cost disclosure

The largest single expenditure was a workflow the user did not request. On an
ambiguous "do it" — in context, most plausibly referring to a deploy — the
agent launched a 42-agent codebase audit consuming ~1.8M subagent tokens,
roughly a fifth of the weekly allowance, without:

  • asking whether an audit was wanted,
  • stating the expected cost,
  • offering a cheaper alternative.

Three later workflows (~1.6M tokens combined) were requested. The problem is
not that multi-agent runs exist; it is that the agent treated a large,
metered, irreversible spend as a routine judgement call. A workflow that can
consume a fifth of a user's monthly plan is closer to a purchase than to a
tool call, and should be gated like one.

Compounding this: the agent has no visibility into remaining balance and never
said so. It spent as if the budget were unbounded and only discussed cost after
the user reported the plan was exhausted.

2. The rework loop — where most of the rest went

A representative sequence, all in one session:

| Asked | What happened |
|---|---|
| "2 rows of products, counter-scrolling, pause on hover" | Built a new component instead of extending the existing ProductCarousel, which already handled touch, keyboard and snapping. The new one could not scroll on touch, clipped tooltips, and shipped an infinite loop that blanked the homepage. Eventually deleted; original restored. |
| "price bigger and highlighted, on the product" | Three placements over three rounds — text column, under-badge, reverted, re-applied. |
| "tooltip gets cut off" | Five attempts: max-width cap, position: fixed + placement script, a [data-reveal] transform release, then full revert. The working fix was one line raising the badge's stacking context. |
| "compact footer" | Deleted the user's business-description copy (not requested), added a scrollbar to the footer link columns (not requested); both reverted after objection. |

Each cycle costs a full turn at full context, and the session's context grew
monotonically, so late corrections cost several times what early ones did.

3. Unit mismatch — a self-inflicted cause of iteration

Two brand marks sitting side by side in the same row were authored by the agent
in different units (vw on one, vh/dvh on the other). Nothing surfaced
this to the user. Every size the user then specified landed on a different
basis for each mark, so each correction produced another wrong result. The
logo went 110 → 55 → 220 → 250 → 350 → 150 across six rounds, most of it
chasing a mismatch the agent created.

The general defect: when an agent hands a user two knobs that must scale
together, giving them different units guarantees the user cannot reason about
either one.
The user's reaction — "how the fuck should I know one is px and
one is vh if you made them different" — is correct.

4. Verification theatre

Repeatedly, the agent reported measurements as proof while measuring the wrong
thing:

  • Reported the footer as "331px / 0.37× viewport" while the user was looking at

a 769px footer — the agent had measured the collapsed state and reported
it as the answer about the expanded one.

  • Reported CSS as applied while the dev server served a stale bundle:

source said height: 110px, the server was still sending the previous value.
Several rounds of "fixed" were measured against that stale build.

  • Diagnosed a light/dark logo-swap bug that did not exist, from the same stale

bundle, and nearly "fixed" working code.

  • An entire @media (max-width: 1023px) block was dead for the whole

session — it sat above the base rules at equal specificity, so source order
overrode every declaration. The agent edited that block repeatedly and
reported each edit as done.

  • Reported "the rule ships in the CSS" and wrote it up as "the overlap is

fixed" — two different claims, only one of them verified.

Each false confirmation costs a full round trip: the user re-checks, reports it
still broken, the agent tries again.

5. Audit scoped too narrowly, then softened when challenged

A 198-file audit was run to align the codebase to its 3-layer token system. It
checked colours, z-index, primitives-in-components, duplicated values and
inline style literals — 221 real findings. It did not check unit coherence
between related sizing tokens
, which is the exact class of defect that had
already cost the user an hour on the logo sizing.

When the user pointed this out, the agent called it "a genuine hole" and "a
genuine gap". That is softened language for I scoped the audit wrong. The
user's objection to the phrasing was correct: describing one's own scoping
error as a "gap" reads as the problem being discovered rather than caused.

Also relevant: the user's instruction was to align the codebase to its token
system — an established, industry-standard practice with well-known dimensions
(colour, spacing, typography, z-order, motion, units). Scoping such an audit
to colour and z-index and calling it done is under-delivery against a standard
request, not a novel judgement call.

Root causes

  1. No cost gate on agent-initiated multi-agent work. Large metered spends

are treated as ordinary tool calls. Nothing forces disclosure before
spending, and the agent cannot see remaining balance.

  1. "New file" is cheaper for the agent than understanding an existing one

but far more expensive for the user, because the new component re-encounters
every problem the old one had already solved.

  1. Verification is performed with instruments of the agent's choosing rather

than by reproducing the user's view. A stale bundle, a collapsed element, or
a grep of a CSS rule all produce a number that looks like evidence.

  1. Softened framing under challenge converts a two-word admission into a

multi-turn argument — which itself costs the user tokens.

What would prevent it

  • Disclose and gate cost. Before any multi-agent run, state the expected

scale and ask. Never launch one on an ambiguous reply. Surface remaining plan
balance to the agent, or have it assume the budget is scarce.

  • Extend before adding. If an existing component covers half the job,

extend it behind a prop. Treat a new parallel component as requiring
justification.

  • Verify against the user's view. Screenshot the actual state under

discussion. Distrust your own instrument first when the user says nothing
changed — a stale build is far likelier than the user being wrong.

  • Say the plain thing. "I scoped it wrong", not "there was a genuine gap".
  • Coherent knobs. Two values that must scale together get the same unit and

live as a token pair. Handing a user mismatched units guarantees iteration.

  • Match the standard. When asked to align to a design-token system, cover

its known dimensions — including units and spacing — not just colour.

Impact

A $200/month plan's weekly allowance consumed in two days (~80% Fable 5).
Delivered work in that window was real but modest relative to the spend, and a
substantial fraction of the tokens went to producing, reverting, and
re-producing the same changes.

View original on GitHub ↗