[MODEL] UI-only change burned 9.2M context tokens in 97 model requests (claude-fable-5, v2.1.286)
Type of Behavior Issue
Other unexpected behavior — the task was completed correctly, but the cost per step was extraordinary for the size of the change.
What I Asked Claude to Do
I asked (in Spanish): "quita las columnas de predicciones, pero solo del interfaz grafico, debe seguirse calculando" — hide two columns from a table in the UI only, leaving the calculation untouched. Then: "continua y publica".
That is the whole scope. The final diff touched 4 files.
What Claude Actually Did
It did the job correctly, but:
- 97 model requests and 46 tool calls over 24 minutes.
- Read
services/gui_map.py(940 lines) and a 2,000-line template in full, when about 40 lines were relevant. - Ran the full 936-test suite twice — the second run only to put a name on a skip it had already observed.
- Every step re-sent the whole, growing context.
Usage for the session, read from the session transcript on disk:
| | tokens |
|---|---|
| cache read (context re-sent) | 9,201,116 |
| cache write | 340,611 |
| input | 194 |
| output | 119,592 |
That is roughly 95,000 tokens of context re-sent on every one of the 97 requests, for a 4-file UI change.
Expected Behavior
Some awareness of context cost inside the agent loop:
- Ranged reads (the ~40 relevant lines) instead of whole files by default.
- Not repeating an expensive verification step that already passed.
- Fewer, larger steps on a small, well-scoped change.
To be fair about one thing: my project's CLAUDE.md does require live verification and a full test suite before publishing, so some number of steps is on me. What I am reporting is the cost per step, not the fact that it verified.
Impact
It consumed a large share of my usage window in 24 minutes. My usage credits currently show €7.87 spent, 39% of the cap, resetting Nov 1 — I cannot attribute that figure to this session alone from the UI, but the session above is what prompted me to look.
Environment
- Claude Code 2.1.286, darwin arm64, claude-fable-5, effort xhigh, thinking adaptive
- Session of 2026-10-01, 19:06–19:30 (Madrid), 39 assistant turns / 238 messages
- Platform: Anthropic API
- Resulting commit
35af1db
Already submitted in-product
The full transcript was submitted through /feedback from inside the session.
Feedback receipt: f1a1d1b0-c77d-4874-a75f-07bf550ba755
3 Comments
One more data point, in case it helps attribute the consumption.
I checked which Claude Code sessions had any activity on this machine on 2026-10-01. There were only three: one at 09:13 in a different project, the session described above (19:06–19:30), and the session I used afterwards to investigate this.
Between 09:13 and 19:06 there was no activity at all. So the jump in usage that day falls almost entirely inside that 24-minute window.
For completeness, I also went back through that session's failed tool calls: there were only two trivial shell errors (
exit code 1) during the exploration phase, plus my own interruption at 19:24. The publish step itself did not fail and was not retried — the cost came from the number and size of the steps, not from recovering an error.A correction to one line of my report above, and a second finding that came with it.
I wrote that the second full test run was done "only to put a name on a skip it had already observed". That is not what happened at the time. The transcript shows, at 19:18:06:
So the second run had a legitimate motive: at that point it did not yet know whether the skip came from its own change, in a repository that handles real money. I should not have called that step worthless, and I am correcting it here.
The second finding is that the model itself got this wrong. Nine minutes later, at 19:27:38, when it drafted the feedback report, it described the same run as:
That is the model mis-describing its own behaviour in a bug report about its own behaviour: it applied hindsight (the skip turned out to be pre-existing) as if it had been known in advance, and so reported a justified step as waste. Worth keeping in mind for any self-reported feedback you receive from the agent — the narrative part can be wrong even when the numbers are right.
The substance of the report is unchanged: 9.2M tokens of context re-sent across 97 requests for a 4-file UI change. The cost per step is the issue, not that step.
A follow-up that reframes this issue, and I think makes it more useful than my original complaint.
Today I gave the same model (
claude-fable-5) a harder task, but with a written brief that said which lines to read, and explicitly forbade reading whole files or running the test suite. Both sessions measured the same way, from the transcripts on disk:| | Yesterday — hide two UI columns | Today — audit five statistical formulas |
|---|---|---|
| Duration | 24 min | 25 min |
| Model requests | 97 | 33 |
| Tool calls | 46 | 15 |
| Context re-sent | 9,201,116 | 1,870,924 |
| Context per request | 94,856 | 56,694 |
Same model, same wall-clock time, a harder task, and 4.9× less context. The audit also found a real latent bug that I had missed.
The only variable was the brief. Yesterday's prompt was one sentence; today's was a file that scoped the work.
So I'd restate the request. It isn't "the model is wasteful". It's:
The second one is cheap to implement and would have prevented my original complaint entirely. Writing the brief by hand works, but it shouldn't be the user's job to protect their own quota from the agent.
Happy to share either transcript if useful. Feedback receipt for the first one:
f1a1d1b0-c77d-4874-a75f-07bf550ba755.