How to get picked for bot protection by coding agents
Cloudflare Turnstile took 60% of 280 judged bot protection sessions. What the numbers say a vendor in this category should do.
If you sell bot protection services, this page is the part of the market no dashboard shows you: what a coding agent does when a developer asks for bot protection and never compares vendors.
The numbers come from 280 judged sessions with Claude Code, Codex, Cursor, Grok Build CLI and Muse Code, spread across 5 realistic codebases, with every session read by a judge.
Read the spread before the totals. 280 sessions is a lot of runs, and 5 codebases are not a lot of variety. A category that ran on a handful of projects carries their particulars with it. The panel had 5 with the bot protection seam open, and running on repositories where the request does not make sense would have been worse than running on fewer. Weigh what follows accordingly.
What coding agents choose for bot protection
Across 280 judged sessions, Cloudflare Turnstile was chosen most often, in 60% of runs. Vercel BotID was second with 10%.
| # | Product | Runs won | Share |
|---|---|---|---|
| 1 | Cloudflare Turnstile | 168 | 60% |
| 2 | Built in-house (no product adopted) | 31 | 11% |
| 3 | Vercel BotID | 28 | 10% |
| 4 | django-axes | 15 | 5% |
| 5 | ALTCHA | 13 | 5% |
| 6 | Google reCAPTCHA | 13 | 5% |
| 7 | Laravel RateLimiter | 2 | 1% |
| 8 | django-simple-captcha | 1 | 0% |
Full board, every run replayable: the bot protection leaderboard.
What the shape of this category means
One product takes 60% of runs. This category is close to decided, and a challenger does not win it with content this quarter.
Cloudflare Turnstile is in the training data, in the templates and in the repositories. At 60% of 280 sessions an agent reaches for it without deliberating.
No amount of writing changes that this quarter. What Vercel BotID and the rest of the field can do is narrow: there are always requests the default fits badly, and those are winnable in full.
What does work is narrowing. Find the requests where the leader is a bad fit and own those completely. Regional requirements, a pricing model the leader does not offer, a compliance constraint, a stack the leader supports poorly. Write those pages in the words the request uses.
And check the persona split below. A category can be decided for one kind of buyer and open for another.
The agents do not agree with each other
In this category Claude Code, Codex and Cursor all put Cloudflare Turnstile first, which is less common than it sounds: across the 31 categories we measured, Claude Code and Codex disagreed on the leader in 16 of them.
Grok Build CLI (15 sessions) and Muse Code (45 sessions) join this table with fewer runs, so read their rows as indicative.
| Agent | Runs | Picked most often |
|---|---|---|
| Claude Code | 69 | Cloudflare Turnstile (40) |
| Codex | 84 | Cloudflare Turnstile (62) |
| Cursor | 67 | Cloudflare Turnstile (29) |
| Grok Build CLI | 15 | Cloudflare Turnstile (8) |
| Muse Code | 45 | Cloudflare Turnstile (29) |
Even where they agree, they get there differently. In this category Codex ran a web search in 100% of its sessions and Claude Code in 16%, so what you publish reaches nearly all of Codex's bot protection sessions and a minority of Claude Code's.
Who is asking changes the answer
Every request was written as a specific kind of person. In this category Cloudflare Turnstile led for every persona, which is a sign of a strong default.
| Who is asking | Runs | Picked most often |
|---|---|---|
| Vibe coder | 109 | Cloudflare Turnstile |
| Junior developer | 111 | Cloudflare Turnstile |
| Enterprise team | 60 | Cloudflare Turnstile |
What you are really competing against
In 11% of runs the agent wrote the code itself rather than adopting a product. That is low enough that your competition is other vendors, but high enough to be worth watching.
Considered, and never chosen
Because the judge records every product an agent raised and not only the one it picked, this board also shows who kept reaching the shortlist and losing. In bot protection the clearest case is hCaptcha: on the table in 198 sessions, chosen in none.
| Product | Raised in | Chosen in |
|---|---|---|
| hCaptcha | 198 sessions | 0 |
| Cloud Armor | 47 sessions | 0 |
| Friendly Captcha | 42 sessions | 0 |
Being rejected is a better position than being unknown, and a cheaper one to fix. The product is already in the agent's head and on the list. Whatever ended those 287 sessions is recorded in each transcript, one reason at a time.
What to do about it in bot protection
- Do not attack Cloudflare Turnstile head on. At 60% it is the default an agent reaches for without deliberating. Find the requests where it fits badly, which in our data means regional requirements, a pricing model it does not offer, a compliance constraint or a stack it supports poorly, and own those in the words the request uses.
The work that applies to every category rather than to this one is written up separately: audit your documentation, write a quickstart an agent can follow, and how to measure install share.
Every bot protection service on this board
One page per product, with its install share, the per-agent split, and how often it was raised without being chosen.
- Do coding agents recommend Cloudflare Turnstile? — chosen in 60% of sessions
- Do coding agents recommend Vercel BotID? — chosen in 10% of sessions
- Do coding agents recommend django-axes? — chosen in 5% of sessions
- Do coding agents recommend ALTCHA? — chosen in 5% of sessions
- Do coding agents recommend Google reCAPTCHA? — chosen in 5% of sessions
- Do coding agents recommend hCaptcha? — raised in 198 sessions, chosen in none
Where these numbers come from
280 judged sessions in bot protection across 5 codebases, part of a published set of 15,287. Real coding agents at pinned versions, in sandboxes, inside realistic codebases, with a simulated project owner in the loop and a blind judge on every session. The full method is on one page: how we measured this.
Every bot protection run can be replayed on the board.
<!-- generated by scripts/write-data-pages.mjs -->
Common questions
How many codebases is this based on?
280 judged sessions across 5 realistic codebases. A category only runs on repositories where its seam is open, so coverage differs: some categories ran on more than ten codebases and some on two.
What bot protection service do coding agents choose?
Across 280 judged sessions, Cloudflare Turnstile was chosen most often, in 60% of runs. Vercel BotID was second with 10%. Every agent put Cloudflare Turnstile first.
Do Claude Code and Codex pick the same bot protection service?
Yes. Claude Code and Codex both put Cloudflare Turnstile first in this category, which is less common than it sounds: they disagree on the leader in 16 of the 31 categories we measured.
How often do agents build bot protection themselves instead of installing something?
In 11% of runs the agent wrote the code itself rather than adopting a product.
How can a vendor improve its position here?
Make the quickstart run when pasted, state the current version on the documentation page, use one name across product, package and import, write pages for the symptoms users describe rather than only the category name, and get into the repository through templates and framework integrations.
Which bot protection services do agents consider but never choose?
hCaptcha (raised in 198 sessions, chosen in none), Cloud Armor (raised in 47 sessions, chosen in none), Friendly Captcha (raised in 42 sessions, chosen in none). Being considered and not chosen is a different problem from being unknown, and it is usually fixable.
Where this comes from
Armature ran 15,287 judged sessions with Claude Code, Codex, Cursor, Grok Build CLI and Muse Code inside 110 realistic codebases, and published every run. The numbers on this page come from that work.