All posts
Blue and cyan icons showing arrow, monitor with upward trend chart, bar graph, and connected circles representing data flow

Agentic Traffic Is Quietly Breaking Your Autoscaler — Here's Why

TL;DR: Autoscaling was built around human-shaped traffic — predictable, request-response, bounded. Agentic workloads are bursty, long-running, and self-amplifying, and they break every generation of autoscaling we've relied on. If you run production services, you need to rethink capacity as a function of agent behavior, not request count.

The story everyone should be reading

Of all this week's headlines — Gemini 3.7 Flash, Opus 5, robotics reasoning models — the one that made me stop and reread was the Towards Data Science piece on how agentic traffic breaks autoscaling. It's not flashy. There's no demo video. But it points directly at a load-bearing assumption in nearly every production system I've helped ship, and that assumption is about to fail quietly and expensively.

A quick history of autoscaling

To understand why this matters, you need the arc. Autoscaling has gone through roughly three generations, and each one baked in an assumption about who — or what — was generating load.

Generation 1: Threshold-based

The oldest model. CPU crosses 70%, add a node. Memory drops, remove one. Simple, reactive, and completely dependent on the idea that traffic changes gradually enough that lagging indicators like CPU are good enough proxies. It works when load ramps like a hill, not a cliff.

Generation 2: Metric- and queue-aware

We got smarter. Scale on request rate, queue depth, p99 latency. Kubernetes HPA, custom metrics, predictive pre-warming based on historical patterns. This generation assumes that traffic is statistically stationary — that yesterday's Tuesday looks like next Tuesday, and that a request is a short, bounded unit of work.

Generation 3: Predictive and ML-driven

The current frontier. Forecast demand, pre-scale ahead of known spikes, use ML to model seasonality. Netflix, big cloud shops, anyone with a real SRE org runs some version of this. It's genuinely good — as long as the underlying distribution of traffic holds.

Why agents break all three

Here's the crux. Every generation above assumes traffic is generated by humans, and human traffic has properties we quietly depend on:

  • Requests are short. A human clicks, gets a response, thinks, clicks again. Work units are seconds, not minutes.
  • Load is bounded by human attention. There are only so many humans, and they sleep.
  • Traffic is roughly stationary. Patterns repeat, so prediction works.

Agentic traffic violates every one of these.

An autonomous agent doesn't send one request — it sends a chain of them, often dozens, each dependent on the last, over minutes. It doesn't wait or think between calls; it fires as fast as your API responds. And critically, agents are self-amplifying: one user task can spawn a planning agent that spawns sub-agents that each call your service in parallel. Your traffic is now a function of an LLM's reasoning tree, not a human's clickstream.

The unit of load is no longer a request. It's a goal — and a single goal can generate wildly unpredictable, long-tailed resource consumption.

This wrecks threshold scaling (the cliff comes faster than CPU metrics can react), queue-aware scaling (long-running agent sessions clog queues in ways request-rate never modeled), and predictive scaling (there's no stationary distribution to learn — agent behavior shifts the moment someone deploys a new prompt or model version).

A story from the trenches

Years back, on a mobile product I was PM'ing, we shipped a feature that let the client prefetch content aggressively to feel snappy. In testing it was beautiful. In production, on real networks with real retry logic, the clients started hammering our backend in synchronized bursts every time connectivity flickered. Our autoscaler — a solid Gen-2 setup — kept reacting after the burst had already caused timeouts, which triggered client retries, which caused more bursts. We'd accidentally built a feedback loop.

That was a dumb prefetch heuristic doing it. Now imagine that behavior driven by an LLM that's trying to be thorough — retrying, decomposing, parallelizing to accomplish a goal. Agents are that prefetch bug with intent. I've seen enough self-inflicted traffic storms to know: the moment your callers get smarter and more autonomous, your capacity model needs to get humbler.

What This Means for Your Team

Three concrete takeaways I'd act on now:

  • 1. Model load per-goal, not per-request. Instrument agent sessions end to end. Track how many downstream calls a single high-level task generates, and the distribution of that fan-out. That distribution — not your RPS graph — is your new capacity signal.
  • 2. Push back-pressure to the edge and make it agent-aware. Rate limits designed for humans (X requests/minute) are meaningless to an agent that'll happily burn its budget in two seconds and retry. You need concurrency limits, session-level budgets, and 429s that agents can actually parse and back off on gracefully. Design your error responses assuming a machine reads them.
  • 3. Decouple long-running agent work from your synchronous request path. Agentic workloads are long-horizon. Treat them like batch or streaming jobs, not web requests. Queue them, give them their own scaling domain, and stop letting a 4-minute agent task hold a connection slot meant for a 200ms human request.
TPM tip: Before your team ships anything that exposes an API to agents (internal or external), ask one question in design review: "What happens if the caller is 100x more persistent and never gets tired?" If nobody has an answer, you're not done designing.

The bigger pattern

This connects to a theme running through half of this week's news — Gemini Robotics ER 2 orchestrating multiple robots, agents completing week-long programming tasks, self-replicating AI harnesses. The common thread is autonomy at scale. We're moving from AI-as-feature to AI-as-caller. Your infrastructure spent 20 years being optimized for the assumption that a human sits at the other end of the wire. That assumption is expiring, and it's expiring on your production dashboards whether or not you've planned for it.

Related: see The Autonomy Trap: Why AI Agents Going 'Auto Mode' Should Terrify (and Excite) Every TPM and Ford Rehired the Gray Beards. That's the AI Story of 2026..

What I'm doing about this

Concretely, right now:

  • I'm adding fan-out instrumentation to a service that's starting to see internal agent traffic — measuring downstream calls per originating task so we have a real distribution before we get surprised by one.
  • I'm running a small chaos exercise with an agent-shaped load generator: bursty, long-running, retry-aggressive. Our current autoscaler passed the human-shaped load test months ago. I want to watch it fail the agent-shaped one in staging, on my schedule, not in prod on the model's.
  • I'm pushing the team to treat agent sessions as first-class citizens in our capacity model — a separate scaling domain with its own budgets, so a runaway agent can't starve human-facing traffic.

None of this is exotic. It's the same discipline we've always needed — measure the real workload, plan for the pathological case, isolate blast radius. The only thing that's changed is that the pathological case now shows up by default, because the caller is trying to be helpful. Plan accordingly.

Reactions

Keep reading

AI & TechnologyThe Real AI Bottleneck Isn't the Agents — It's the Wiring Between Them · 6 min AI & TechnologyThe Autonomy Trap: Why AI Agents Going 'Auto Mode' Should Terrify (and Excite) Every TPM · 6 min AI & TechnologyMirrorCode and the Long-Horizon Problem: Why Week-Long Coding Tasks Are the Real AI Benchmark · 6 min

All posts