The session that read 190 million tokens
One orchestration session that week ran 644 prompts and pulled 190,414,059 tokens off cache before it closed. Output alone was 800,620 tokens. That was the normal shape of a hub session, the top-level process that reads a ticket, decides what work it needs, and dispatches subagents to do it: codex exec for a code review, claude -p for a test run, manus for a second opinion. The hub decides how much work gets done.
The subagents are cheap to reason about individually. Each dispatch shows up in the log with its own tier and its own cost: codex exec (medium, 14003t, 78.38s), manus standard (40cr, 250.16s), claude -p (sonnet/medium, 5429t, 81.97s). So when the token bill started climbing, that’s where we went looking, at the dispatch sites, one call at a time.
Where we went first, and why it didn’t work
We spent an evening going through the review dispatch call sites, the ones wired to a single ticket’s codex review and its manus review, and pinning each one to a cheaper tier. Codex reviews that had been running at high got capped to medium. Manus calls got pinned to standard instead of whatever tier a session felt like reaching for.
It didn’t hold. The next hub session that spun up, running on fable/high for its own reasoning, opened a new ticket, decided it needed a fresh round of review, and dispatched a new batch of subagents through a call site we hadn’t touched yet. Our caps only applied to the sites we’d already visited. The hub did not pick a model per dispatch and stay inside some budget. Every time, it decided fresh how much reasoning the problem in front of it deserved, and an opus or fable hub tends to decide that expensive reasoning is warranted more often than a sonnet hub does. Patching call sites was chasing a number that could always open a new site we hadn’t found yet.
Four independent answers, same night
At 11:00 PM on the 17th we ran the same question past four different agents in parallel, not sequentially, so none of them saw the others’ output: fable, codex, opus, and manus, each asked what the single highest-leverage change to token spend would be.
Fable (1,779 tokens, 30 seconds): “cap the hub session’s model, not the subagents’.”
Opus (2,674 tokens, 43 seconds): “stop letting Opus/Fable drive sessions.”
Codex (16,036 tokens, 38 seconds): enforce a “Sonnet root, bounded escalation” policy, on the grounds that the largest avoidable bucket was expensive top-level work, not the leaves.
Manus went straight to the base rate: 2,415 subagent dispatches logged, and the lever was that the hub’s model choice set how many of those dispatches got made and at what tier, times 2,415.
Four agents, four different vendors, none of them coordinating, and they converged on the same root cause in the same minute. That’s not proof by itself, but it’s a strong tiebreaker against the approach we’d already spent an evening on.
Capping the root instead of the leaves
The fix that came out of that session was structural: default the hub session itself to sonnet. Opus or fable at the root now requires an explicit choice, not a default a session falls into because a ticket looked hard. The subagents keep their own per-dispatch tiers exactly as before, codex exec at medium for routine review, manus standard for a second read, nothing there changes.
What changes is who’s allowed to decide, by default, that a problem deserves the expensive path. Every dispatch traces back through a hub decision: how many subagents to spawn, whether to escalate a review, whether to retry. Constrain the model making that decision once, at the root, and every downstream decision it makes is constrained with it. Guarding 2,415 individual dispatch points means the 2,416th one, at some call site we haven’t written yet, is uncapped by default. Guarding the one session that decides to make all 2,415 calls means it isn’t.
The diagnosis held: the token counts were real and the spend was real. The mistake was where we aimed the fix: at every place cost showed up, instead of at the one place it originated.
Takeaway
When AI spend climbs, ask which model drives the top-level session and what its default is, before auditing individual calls. Setting the default at the root, with expensive models requiring an explicit choice, limits every downstream decision that session makes. Capping each call site one by one leaves any site not yet reviewed uncapped.