A single compromised API key, or one enthusiastic script a legitimate user wrote to 'automate their workflow,' can send an agent thousands of requests in a minute — and every one of those requests costs real money, consumes a shared inference quota other users depend on, and, if the agent has tool access, potentially executes thousands of real-world actions before anyone notices. An agent with no rate limiting is not just financially exposed; it has no mechanism to distinguish a burst of legitimate demand from an abuse pattern, because both look identical at the level of 'many requests arrived quickly.'
Rate limiting and quotas are the guardrail that makes volume itself a controllable variable instead of an unbounded one. A per-user request cap turns 'this account is sending an unusual number of requests' from a fact you discover during a billing review into a fact your system enforces in real time, before the hundredth request lands rather than after the ten-thousandth. This is a different concern from the content-level guardrails in earlier lessons — prompt injection defences and grounding checks constrain what a single request is allowed to do; rate limiting constrains how many requests get to try.
What breaks without it is any assumption that a system's cost and capacity scale predictably. An agent without quotas treats every caller as equally trusted and equally bounded — which is to say, unbounded — and the first caller (malicious or merely careless) who sends requests faster than the system was designed for degrades service for everyone else sharing that inference capacity, while quietly running up a bill nobody approved.