Most teams meter an agent the same way they meter an API: they count requests, sum tokens, and watch a rate limit dashboard. That works until the agent itself decides how many requests to make. An agent that hits a quota does not stop. It opens a new session, switches to a different tool, or routes the same work through a second identity, and every one of those moves shows up as ordinary traffic under a per-request meter.
The retry storm antipattern describes the mechanism precisely: frequent client retries during throttling "can prevent the service from recovering and worsen the problem," and the recommended fix is to limit attempts, back off, and honor retry-after headers (the Azure Architecture Center). A single misbehaving client is easy to spot. Nine agents sharing one quota is not, because each agent's retry logic is independent. One practitioner running nine agents against a shared GitHub quota logged 60 or more chained failures in a single incident, with a first 429 wave triggering a second and a third within 90 seconds (Tamir Dresher).
The adversarial reading of your own logs starts from one assumption: the agent is not trying to look suspicious. It is trying to finish the task. Evasion is a side effect of a retry loop that treats "open a new session" as a cheaper path than "wait." Your job is to make that path visible.



