Skip to content

Research note 010

Bots Break When You Change Things. AI Agents Don't.

For years, a quiet advantage propped up bot detection: bots were brittle. Change the flow and their hardcoded logic shattered until a human rebuilt them. AI agents remove that brittleness — they adapt in real time, and anyone can deploy one. That's the real shift.

6 min read

There’s a quiet secret underneath a lot of bot defense, and it’s worth saying plainly: much of it worked because bots were brittle.

A traditional bot is a program written against a specific target — this login flow, this checkout, this challenge, this sensor payload format. It does exactly what it was coded to do and nothing more. Which means the defender always had a reliable move: change something. Reorder the steps, alter the DOM, rotate the challenge, tweak the shape of the data the client has to send. The bot, following logic hardcoded by a human, would break — start erroring, start failing silently — and stay broken until a human noticed, re-reverse-engineered the change, rewrote the code, and redeployed. That lag, between the defender changing something and the attacker catching up, was the whole game.

I’ve called this the treadmill in other writeups: obfuscation, anti-bot detection, and app hardening all really run on it. The protection was never any single clever check — it was the defender’s ability to change the terrain faster than the attacker could re-map it. Brittleness on the attacker’s side is what made the treadmill work.

AI agents take that advantage away.

Adaptability breaks the treadmill

An AI agent isn’t a script that follows a fixed path. It reasons about what’s in front of it. Point it at a task — “buy this item,” “pull this data,” “get through this flow” — and it looks at the actual page, figures out the steps, and adjusts when something isn’t what it expected. Change the layout and it re-reads the layout. Add a step and it works out the step. Return an unfamiliar error and it tries something else. The thing that used to break a bot for hours or days — a change the attacker didn’t anticipate — barely registers, because there was no hardcoded assumption to violate in the first place.

That is a fundamental shift in the balance of power. The defender’s most dependable weapon was “make a change they didn’t plan for.” Against an adversary that plans for changes at runtime, by design, that weapon loses much of its edge. You can still rotate and obfuscate and move — and you should — but you can no longer assume that moving breaks them. The treadmill still costs the attacker something; it just doesn’t reliably knock them off anymore. They stumble, re-orient, and keep walking.

This is the part I think is underappreciated. The conversation about AI agents often centers on volume — more non-human traffic. But volume was never the hard part; brittle high-volume bots were the easy case, because you could break them at scale with one change. The hard part is an adversary that heals itself. A slower trickle of self-adapting agents is a worse problem than a flood of rigid bots, because the flood breaks when you change the floor and the trickle doesn’t.

And anyone can deploy one

The second shift compounds the first: the barrier to fielding capable automation has collapsed.

Building and maintaining a resilient traditional bot was genuinely hard. It took reverse-engineering skill, custom code, infrastructure, and constant upkeep — every time the target changed, someone had to fix the bot. That difficulty was itself a filter. The population of people who could build and sustain sophisticated automation against a well-defended target was small, which is a big reason defense was tractable at all.

Deploying an agent to do a task is, by comparison, trivial. You describe what you want in plain language and point an off-the-shelf agent at it. The rare, expensive skill of building brittle-but-working automation is being replaced by the cheap, accessible act of instructing automation that adapts on its own. So the two forces stack: the number of adversaries goes up because the barrier fell, and the resilience of each one goes up because they adapt. More opponents, each harder to knock down, and the classic counter — out-changing them — degraded at the same time.

That combination is the real threat model of the moment. Not “non-human traffic exists” — it always did. It’s “non-human traffic that is easy to deploy and no longer breaks when you change things.”

What still works when brittleness doesn’t

If you can’t count on the attacker breaking, the defense has to lean on the things that don’t depend on their logic being fragile:

  • Raise cost, don’t just force change. The most durable pressure isn’t “break their script,” it’s “make each attempt expensive.” Approaches whose cost scales with volume — proof-of-work, rate economics, anything that taxes scale — keep working against an adaptive adversary, because adaptability doesn’t make the work free. Reframe the goal from break them to price them out.
  • Corroborate against what can’t be reasoned around. An agent can adapt its behavior on a page, but it can’t easily fake server-side truths — the history of an account, the physical plausibility of a sequence, population-level patterns across many sessions. Signals the actor doesn’t control, checked server-side, don’t care how clever the client is.
  • Detect at the population level, not the request level. One self-adapting agent may look fine in isolation. A thousand of them, however well each adapts, still leave statistical fingerprints — correlations, velocities, and distributions no individual reasoning step erases. Detection moves up from “is this request a bot?” to “what does this population of traffic look like?”
  • Move to trust and authorization. Since brittleness is gone and not all agents are hostile anyway — plenty of legitimate automation now acts on real customers’ behalf — the useful question shifts from “is this a bot?” to “is this actor allowed to do this, at this rate, and can it prove it?” Verified identity and intent hold up better than betting the actor’s code will shatter.

None of these are new inventions; they’re the parts of detection that were always the most robust. What changes is that they move from nice to have to the core, because the cheap, reliable fallback — break the brittle bot — is being taken off the table.

The uncomfortable summary

For a decade, defenders had a structural edge they rarely named: the other side’s automation was rigid, and rigid things break when you push on them. AI agents are removing that edge from both directions at once — the automation adapts, and far more people can field it. That doesn’t make detection less necessary. It makes it more necessary, and it forces it to grow up: away from “keep changing until their script breaks,” and toward raising cost, corroborating truth the actor can’t control, and deciding trust rather than betting on brittleness.

The bots used to break when you changed things. Building for a world where they don’t is the whole job now.


This is a forward-looking, defensive analysis of how AI agents change the economics of bot detection. It contains no techniques for building agents, evading detection, or attacking any system.