The bots you want to block ignore robots.txt. The bots you want to keep obey it. Cloudflare's one-click answer blocks the obedient ones.
This is a first-party how-to. Our site sits behind Cloudflare, our robots.txt welcomes every crawler, and in the last thirty days of analytics about half of all users were from a single country at roughly one second of engagement, which is a datacenter rather than a person. The AI crawler log analysis published earlier in this series showed which bots read the site; this post is what we did about the ones we did not want, without touching the ones we did.
Cloudflare settings as of September 16, 2026, on the free plan first, with paid-plan variants noted. Cloudflare renames and reorganizes these controls often (AI Audit became AI Crawl Control; the Bots page moved into Security Settings), and one guide reports a further change to AI Crawl Control on September 15, 2026 that splits crawlers into Search, Agent and Training categories with different defaults; that is labeled as reported below. Menu paths may differ from what you see; the rule logic does not. Evolve Media Agency sells AI search visibility services and has an interest in your crawlers being let in; we do not sell Cloudflare configuration.
Two Problems That Look Like One
Verified bot vs unverified automation. Cloudflare verifies the identity of well-known crawlers (Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot and others) through reverse DNS, published IP ranges, ASN checks and, increasingly, cryptographic signatures, and exposes that verification as a boolean (cf.client.bot on every plan; cf.bot_management.verified_bot on Bot Management). Unverified automation is everything else that is not a browser: scrapers, vulnerability scanners, credential stuffers and the datacenter traffic that inflates analytics. The two are separable in rules, and the whole configuration rests on separating them.
The scrapers are the problem: they consume bandwidth, hit login and XML-RPC endpoints, copy content, and pollute GA4 badly enough that sitewide engagement rates are meaningless. The AI crawlers are the opportunity: they are the retrieval agents behind ChatGPT, Claude and Perplexity answers, and the visitors they send engage at organic-search rates. The should-you-block-AI-crawlers guide makes the case for letting them in; this post assumes you agree and shows how to do it without letting the scrapers in with them.
What Cloudflare Blocks By Default
| Control | Default | What It Does | Effect On AI Crawlers |
|---|---|---|---|
| Block AI bots (managed rule) | On, for zones created after July 1, 2025 | Hard-blocks a published list of AI user agents: GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, Google-Extended, CCBot, Bytespider, Amazonbot, Applebot, Meta-ExternalAgent and more, plus unverified bots with similar fingerprints | Blocks the crawlers behind AI citations. Cloudflare reported hundreds of billions of blocked AI requests in the months after launch. |
| AI Crawl Control | Per-crawler; inherits the block | Per-crawler allow or block, request counts by crawler, and (reported, from September 15, 2026) Search / Agent / Training categories with Search allowed and Agent and Training blocked on ad-bearing pages by default | The place to allow the crawlers you want, individually |
| Bot Fight Mode | Off | Challenges traffic Cloudflare's heuristics flag as automated; cannot be customized or skipped by custom rules | Verified bots are meant to be exempt, but it is a blunt instrument and its behavior cannot be tuned |
| Super Bot Fight Mode | Off; Pro plan and above | Separate handling for definitely automated, likely automated and verified bots; Optimize for WordPress; static resource protection | Configurable: verified bots allowed, automation challenged or blocked |
| WAF custom rules | None | Your own expressions and actions, evaluated in order; free plan includes a handful of rules | Whatever you write |
The first row is the one that catches people. A brand that moved to Cloudflare after July 2025, or spun up a new zone for a redesign, has the AI block on and does not know it, and the technical audit for AI crawler blockers finds this more often than any other cause of zero AI citations.
Step 1: Turn Off The AI Block, Set AI Crawl Control
The Search / Agent / Training split, if it is live on your zone, is a real improvement: it lets a publisher allow search-style crawlers while declining training, which is the compromise many ad-funded sites want. For an ecommerce brand or an agency that wants to be cited, all three categories are on, because the retrieval agents (Agent) are what fetch your page when a shopper asks an assistant a question, and blocking them means the assistant answers from memory or from a competitor. The AI crawler list has the per-crawler purposes.
Step 2: Leave Bot Fight Mode Off
Bot Fight Mode is the free plan's one-toggle bot defense, and the temptation is to turn it on and be done. Two reasons not to, from Cloudflare's own documentation: it cannot be customized, and it cannot be bypassed by WAF custom rules. So if it decides to challenge a request you wanted through, there is no rule you can write to fix it. Verified bots are supposed to be exempt, and in practice the reports of it interfering with legitimate crawlers and with monitoring services are common enough that the safer position is off, with the targeted rules below doing the work.
The exception is an active attack, where a blunt instrument is what you want for an afternoon. Turn it on, ride it out, turn it off. For steady-state protection, it is the wrong tool for a site that wants to be crawled.
Step 3: The Skip Rule For Verified Bots
Custom rules run in order, and the first one should exempt every verified bot from everything that follows, so that no rule you write later can accidentally catch Googlebot or ClaudeBot.
This rule is the reason the rest can be aggressive. Everything below applies only to traffic Cloudflare could not verify, which is exactly the population you want to be strict with.
Step 4: Block And Challenge The Junk
Order matters: 1 skip, 2 block, 3 challenge, 4 challenge. A verified crawler never reaches 2 through 4. A real customer in Singapore gets a challenge page once and then browses normally. A datacenter session that cannot solve the challenge stops existing in your analytics, which is the point of section 11.
One more note on the free plan: the number of custom rules is capped (five at the time of writing), so the four rules above plus one rate limit use most of it. If you need more, combine rules 3 and 4 into one expression with an "or" between the geo clause and the user-agent clause; the action is the same Managed Challenge, and the Skip rule still protects the crawlers.
Step 5: Rate Limits On The Paths Scrapers Hit
The rate limit is what catches the scraper that passed rule 4 by sending a real browser's user agent. A person reads a page every twenty seconds; a scraper requests three a second. The threshold in the example is generous on purpose; tighten it after a week of reading Security Events.
Paid Plans: Super Bot Fight Mode And Bot Scores
On Pro and above, Super Bot Fight Mode replaces rule 4 with something better, because it uses Cloudflare's detections rather than a user-agent list.
| Super Bot Fight Mode Setting | Set To | Why |
|---|---|---|
| Definitely automated | Block | Traffic Cloudflare is certain is a bot; minimal false-positive risk |
| Likely automated | Managed Challenge | A person passes; a headless browser does not |
| Verified bots | Allow | Googlebot, Bingbot and the verified AI crawlers pass untouched |
| Optimize for WordPress | On | Exempts WordPress loopback requests (cron, REST calls from the site to itself) that otherwise get challenged and break plugins |
| Static resource protection | Off unless image scraping is the problem | On, it can challenge hotlinked images and some CDN fetches; on for a site being image-scraped |
| JavaScript detections | On | Invisible checks that improve the automated/likely-automated split |
On Bot Management (Enterprise, or as an add-on), you get the numeric bot score and Cloudflare's own recommended rules become available as expressions: block cf.bot_management.score eq 1, challenge score between 2 and 29, both with "and not cf.bot_management.verified_bot". Cloudflare's documentation recommends exactly that pair, and it is what the free-plan rules in sections 6 and 7 approximate. The only thing the paid tiers add for this purpose is precision; the architecture is the same.
Robots.txt Still Does Its Job
Cloudflare and robots.txt are two layers, and the mistake in either direction is thinking one replaces the other.
- Robots.txt governs the polite crawlers. GPTBot, ClaudeBot, PerplexityBot, Googlebot and Bingbot read it and obey it. A Disallow in robots.txt stops them before Cloudflare ever sees a request. If you want them in, robots.txt has to say so, and ours does: a comment line welcoming AI crawlers, Allow for everything except admin, search and API paths, and a pointer to llms.txt.
- Cloudflare governs the impolite ones. Scrapers, headless browsers and datacenter fetchers do not read robots.txt. Only a rule at the edge stops them.
- Cloudflare's managed robots.txt can prepend directives to yours (it is the mechanism behind its content-signals and pay-per-crawl initiatives). If it is on, your published robots.txt is not the one you wrote; check the live file, and turn the managed option off if the prepended lines conflict with your policy.
- A robots.txt Allow with a Cloudflare block is the worst state. The crawler is invited, requests the page, and gets a 403. Some crawlers back off for weeks after that. Section 10 catches it.
The robots.txt guide for AI crawlers covers the file itself; the llms.txt guide covers the companion file the polite crawlers may also read.
Verifying You Did Not Block The Good Bots
Security > Events, last 24 hours, filtered by action. Blocks and challenges should be the geos, user agents and paths you targeted. If a verified crawler's name appears under Block or Challenge, rule 1 is not first, or its skip options are incomplete.
Per-crawler request counts and status. GPTBot, ClaudeBot, PerplexityBot and OAI-SearchBot should show requests succeeding (200s). A crawler with requests but no successes is being blocked somewhere; a crawler with zero requests is not visiting, which is a content problem rather than a configuration one.
Crawl stats should be flat through the change: same request volume, same response codes, no rise in 403s or 429s. A dip in Googlebot crawl after a Cloudflare change is a rule catching it.
From a machine outside your office, curl a page with a GPTBot user agent. You should get a challenge or a 200 depending on your rule 4 (an unverified client claiming to be GPTBot is exactly what rule 4 should challenge); the real GPTBot, verified, gets 200 per check 02. Both results are correct.
The last check confuses people, so to be explicit: a fake GPTBot from your laptop being challenged is the system working. The real one, from OpenAI's verified ranges, is what check 02 confirms is getting through.
What Changed In Our Analytics
Before: about half of GA4 users in thirty days from one country at one second of engagement; sitewide engagement rate 20.6%, 7 seconds; every channel-versus-sitewide comparison wrong by about a factor of two. After the geo challenge and the rate limit went in, the datacenter sessions could not complete a challenge, so they stopped reaching the page and stopped firing GA4. We will publish the after numbers once there is a clean month; the honest expectation from the arithmetic in the AI visitor conversion post is a sitewide engagement rate near 40%, which is roughly what organic search already showed.
What did not change: verified crawler traffic, checked in AI Crawl Control and Search Console, and the AI assistant referral channel, which continued to grow. That is the whole test of the configuration. If bot-filtered sitewide engagement rises and crawler traffic holds, you blocked the right things.
The Ecom Profit Box
Our library of ecommerce growth guides, including the AI search visibility and measurement frameworks behind this post.
Get It FreeFind Out Who Is Getting Blocked
We will check your Cloudflare zone and robots.txt for the AI-crawler blockers, read your bot traffic, and hand you the rule set for your site with the geos and paths filled in.
Book A CallThe Full Configuration
The counterweight, since we sell the visibility work that this protects: this is an hour in the Cloudflare dashboard and it is free. Nobody needs an agency to do it, and an agency that charges to "unblock AI crawlers" is charging for switching off one managed rule. What is worth paying for is the content that makes the crawlers worth letting in; the configuration above just opens the door.
Skip the verified bots first, then be as strict as you like with everything else. The order of the rules is the entire trick.
What To Remember
- Cloudflare's managed "Block AI bots" rule has been on by default for zones created after July 1, 2025 and blocks GPTBot, ClaudeBot, PerplexityBot and the other citation crawlers; turn it off and allow crawlers individually in AI Crawl Control.
- Leave Bot Fight Mode off; it cannot be customized or skipped by your own rules, and the targeted rules below do the job with control.
- The first custom rule is a Skip for verified bots (cf.client.bot, on every plan), so nothing written afterward can touch Googlebot, Bingbot or the AI crawlers; never identify good bots by user-agent string.
- Then block the attack surface, managed-challenge the datacenter-heavy geos and tool user agents, and rate-limit content paths, all scoped to non-verified clients.
- On Pro and above, Super Bot Fight Mode replaces the user-agent rule: block definitely automated, challenge likely automated, allow verified, Optimize for WordPress on.
- Robots.txt still governs the polite crawlers; a robots.txt Allow with a Cloudflare block is the worst state, and Cloudflare's managed robots.txt can rewrite your file without telling you.
- Verify in Security Events, AI Crawl Control and Search Console after setup and quarterly; success is bot-filtered engagement rising while verified crawler traffic holds.
Where This Came From
- Cloudflare Developer Docs, Challenge bad bots, for the bot-traffic settings table, the statement that verified bots bypass custom rules, and Cloudflare's recommended score-based rules (block score 1; challenge scores 2-29). Cloudflare Developer Docs (Terraform bot_management resource) for the managed robots.txt, content-bot protection and Bot Fight Mode fields.
- Adam Arant, August 2026, for the July 1, 2025 default, the managed rule's crawler list as documented in AI Crawl Control, and the skip-rule approach. MQL Magnet, September 2026, for Cloudflare's reported blocked-request volume, the per-crawler allow list and the three verification checks. CF Garage, September 2026, for cf.client.bot availability on every plan versus the Bot Management-only fields. Bitdoze, August 2026, for the reported September 15, 2026 Search / Agent / Training categories and defaults; treated as reported.
- Evolve Media Agency's own Cloudflare zone, robots.txt and GA4 property for evolveamz.com, September 2026. First-party; the geo example, the rule ordering and the analytics before-state are ours. After-state numbers will be published once a clean month exists.

