A refusal looks like a cheap event: no tokens generated, no answer to store. The bill says otherwise. Every refusal is a billed call that returned without doing work, it holds a worker slot that other subtasks were queued behind, and it adds latency to the caller that waited on it. In orchestrator-worker designs one orchestrator fans work out to specialist workers and waits for results, so a single slow worker sets the pace of the whole step (Arize on orchestrator-worker).
The compounding gets worse when retries replay context. A per-step failure rate that sounds tolerable turns into a much larger token multiple, because a retry resends the conversation so far rather than just the failed step; published analysis of agent retry budgets puts a 3-step loop with a 20% per-step retry rate at roughly 1.7 to 1.9 times baseline tokens, and a 5-step loop at 2.2 to 2.5 times (retry budgets for LLM agents). Retries at more than one layer multiply: three attempts across three layers is 27 calls to the bottom of the stack if nothing breaks the chain (backoff and jitter explained).
Anthropic's engineering team measured that agents typically use about 4 times as many tokens as chat interactions, and its multi-agent research system about 15 times, with token usage alone explaining most of the performance variance it observed (Augment's summary of the measurement). That is the budget your refusals are eating into.
The practical consequence: a retry is a decision to spend a call, a slot and caller latency on the hope that the same request behaves differently. That hope is only reasonable for some reasons.



