Cloudflare blocking AI crawlers? How to let ChatGPT in

Cloudflare blocking AI crawlers like ChatGPT? Allow OAI-SearchBot and ChatGPT-User at the edge and in robots.txt, then test it, step by step.

Mohit Goyal11 min read
Cloudflare blocking AI crawlers? How to let ChatGPT in

If Cloudflare is blocking ChatGPT, go to Cloudflare's security settings and set the Search and Agent AI policies to Allow. Then remove any AI Crawl Control block, old WAF custom rule or Bot Fight Mode action that still stops OpenAI's OAI-SearchBot and ChatGPT-User, check that robots.txt allows both, and test from outside your network. You can keep GPTBot, OpenAI's training crawler, blocked if you like. ChatGPT search doesn't use it.

Why is Cloudflare blocking AI crawlers like ChatGPT?

Because at some point someone on the account chose to block them, maybe last month, maybe years ago. That block can sit in any of five places: AI access policies, AI Crawl Control, WAF custom rules, Bot Fight Mode or the managed robots.txt. Fix one and leave another, and the bot still gets turned away.

Cloudflare added a one-click option to block AI crawlers in September 2024, and more than one million customers turned it on. On 1 July 2025 it went further. Every new domain is now asked up front whether to allow AI crawlers, and the press called it "block by default".

The settings have moved around a few times since, so a lot of older guides point at toggles that aren't there any more. Here's where a block can live today:

  • AI Crawler and Agent access policies: three policies (Search, Agent, Training) under Security settings.
  • AI Crawl Control: a per-crawler Allow or Block list. A block here creates or updates a WAF custom rule on your zone.
  • Your own WAF custom rules: an old "block all bots" rule can quietly override everything else.
  • Bot Fight Mode: the free-plan bot protection, which runs outside the normal rules engine.
  • Managed robots.txt: Cloudflare can add Disallow lines above your own rules.

According to a recent write-up by NotHuman, some newer domains now get Search set to Allow by default. So if you're blocked now, it's almost always an old choice or an old rule still hanging around, not a new default.

Which OpenAI bots need access for ChatGPT to see your site?

Two of them: OAI-SearchBot for ChatGPT search results and ChatGPT-User for pages a user asks about. GPTBot only collects training data. OpenAI splits these jobs across separate bots, and you control each one on its own (OpenAI's crawler documentation). That split is what lets you say yes to search and no to training.

BotWhat it doesCloudflare policyAllow it?
OAI-SearchBotFinds and indexes pages for ChatGPT search resultsSearchYes, if you want to be cited
ChatGPT-UserFetches a page when a user asks ChatGPT about itAgentYes
GPTBotCollects content that may be used to train modelsTrainingYour choice
Claude-SearchBot, Claude-UserAnthropic's search and user fetchersSearch, AgentYes, for Claude answers
ClaudeBotAnthropic's training crawlerTrainingYour choice
PerplexityBot, Perplexity-UserPerplexity search and user fetchesNot a verified bot on CloudflareNeeds an IP-based rule

The policy mapping comes from the NotHuman guide. Perplexity is the awkward one. Cloudflare delisted it as a verified bot in August 2025, so a "known bots" exception won't cover it.

How do you let ChatGPT in on Cloudflare, step by step?

Go through five places in Cloudflare, in this order: the AI access policies, the AI Crawl Control list, your WAF custom rules, Bot Fight Mode and the robots.txt Cloudflare actually serves. Then test from outside your network.

  1. 1

    Set the AI policies

    Security settings, filter by Bot traffic, open AI Crawler and Agent access policies. Set Search and Agent to Allow, and Training to Disallow or Allow.

  2. 2

    Check AI Crawl Control

    In AI Crawl Control, open the Security tab and set OAI-SearchBot and ChatGPT-User to Allow.

  3. 3

    Audit WAF custom rules

    Look for old rules that block or challenge bots, AI crawlers or empty user agents, and add a Skip rule for verified AI search bots.

  4. 4

    Check Bot Fight Mode

    Look in Security events for blocks where the service is Bot Fight Mode. It cannot be bypassed with a WAF rule.

  5. 5

    Fix robots.txt

    Open yourdomain.com/robots.txt in a browser and make sure nothing above your own rules disallows OpenAI's search bots.

  6. 6

    Test from outside

    Run the AI Crawler Checker and look at the AI Crawl Control Crawlers tab over the next few days.

1. Set the AI Crawler and Agent access policies

In the Cloudflare dashboard, go to Security settings, filter by Bot traffic and open AI Crawler and Agent access policies. Set Search to Allow and Agent to Allow. For Training, pick Disallow if you don't want your content used to train models, or Allow if you're fine with it.

Cloudflare's robots.txt documentation says that with Bot Preference Sync on, Training set to Disallow adds the robots.txt lines and also blocks training crawlers at the edge, while mixed-use crawlers are left out of that block. I'd stick with Disallow unless you have a specific reason.

2. Check the AI Crawl Control list

Go to AI Crawl Control and open the Security tab. You'll see every AI crawler that has visited, each with an action. Set OAI-SearchBot and ChatGPT-User to Allow. Don't skip this one. Each Block here becomes a WAF rule, and those rules stay put even after you change the policies in step 1.

On the free plan, AI Crawl Control identifies crawlers by user agent string.

3. Audit your WAF custom rules

Go to Security rules and read every custom rule. You're looking for anything with cf.client.bot, a verified bot category, "AI", or a broad user agent match set to Block or Managed Challenge. Delete or tighten anything you don't need any more.

If you want a belt-and-braces exception, add a custom rule with the Skip action and put it where it runs before your blocking rules:

text
cf.client.bot and (
  http.user_agent contains "OAI-SearchBot" or
  http.user_agent contains "ChatGPT-User" or
  http.user_agent contains "Claude-SearchBot" or
  http.user_agent contains "Claude-User"
)

cf.client.bot only matches bots Cloudflare has verified, so a scraper that copies the user agent name won't slip through. Don't use cf.client.bot by itself, though. GPTBot and ClaudeBot are verified too, so a broad skip lets the training bots past your block as well.

4. Check Bot Fight Mode

This is the one that catches people out. Cloudflare's docs say you cannot bypass Bot Fight Mode with WAF custom rules or Page Rules. It runs in a separate pipeline where Skip, Bypass and Allow simply do nothing.

A Skip rule won't fix Bot Fight Mode

If Security events show Bot Fight Mode acting on OpenAI's bots, your options are to turn it off, add IP Access rules that match first, or move to a paid plan with Super Bot Fight Mode, which supports Skip rules.

Open Security events, filter by the user agent and look at the Service field. If it says Bot Fight Mode, you've found your blocker.

5. Check what robots.txt actually serves

Open https://yourdomain.com/robots.txt in a browser. If there's a block starting # BEGIN Cloudflare Managed content, Cloudflare is adding its own directives above your file. That block only shows up when Bot Preference Sync is on and at least one policy is restrictive. Set every policy to Allow and your file is served as you wrote it. If you keep Training on Disallow, the managed block stays and already disallows the training bots, so you can drop GPTBot, ClaudeBot and CCBot from your own file to avoid duplicate groups.

What should robots.txt say for each AI bot?

Allow the AI search and user-fetch bots (OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User). Disallow the training bots (GPTBot, ClaudeBot, CCBot) only if you want out of training. This is the starting point I'd use. It does exactly that and lets everything else crawl as normal:

text
# AI search and user-triggered fetches: allowed
User-agent: OAI-SearchBot
User-agent: ChatGPT-User
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
User-agent: Perplexity-User
Allow: /

# AI training crawlers: opted out
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
Disallow: /

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://yourdomain.com/sitemap.xml

If you're happy for your content to be used in training, move GPTBot into the allowed group. The User-agent: * lines are for WordPress, so change them to suit your platform.

Two things to watch. First, don't write an Allow for a bot that Cloudflare's managed block also names. Crawlers merge duplicate groups in different ways, so you can't predict what happens. Change the policy in Cloudflare so the managed block disappears, instead of trying to override it. If you keep Training on Disallow in Cloudflare, the managed block stays and already disallows the training bots, so drop the GPTBot, ClaudeBot and CCBot group from your own file to avoid duplicate groups. Second, robots.txt is a request, not a lock. Cloudflare's own docs say compliance is voluntary, and an Allow line is no use if the Cloudflare edge is still returning 403.

Sometimes the managed block sticks around after you've changed the settings. There's a Cloudflare Community thread about exactly that. While you're at it, check whether an SEO plugin, your host or a physical robots.txt file on the server is serving rules you thought you'd removed.

Do you need llms.txt as well?

Not for access. llms.txt doesn't allow or block anything. It's a plain Markdown file at /llms.txt that gives AI tools a short, clean summary of your site with links to your key pages. robots.txt decides whether a bot may fetch a page; llms.txt helps it make sense of what it fetched. Cloudflare publishes one for its own docs, and I keep one on mohitgoyal.in so AI assistants can answer questions about my work without running JavaScript.

Once access is sorted, add one. I've written up the format and setup in what llms.txt is and how to add one.

How do you check that ChatGPT can reach your site?

Test in four places: a robots.txt checker, a curl request with the OAI-SearchBot user agent, the AI Crawl Control Crawlers view and Cloudflare's Security events. A request has to get past every layer, so one passing test doesn't prove much on its own.

Rendering diagram…
  1. Run the AI Crawler Checker. I built it to read your live robots.txt and tell you whether 14 AI crawlers, including OpenAI's, Anthropic's, Perplexity's and Google's, may fetch your home page, and which rule decides it. It also checks your llms.txt and lists the sitemaps your robots.txt declares. It's free and uses no AI.
  2. Fetch the page with a bot user agent. In a terminal, run curl -I -A "OAI-SearchBot" https://yourdomain.com/. A 403 or a challenge page means something at the Cloudflare edge is blocking by user agent. A 200 is a good sign but not proof, because your curl request isn't a verified bot.
  3. Watch AI Crawl Control. The Crawlers view shows allowed and unsuccessful requests for each crawler. After the fix, you should see OAI-SearchBot and ChatGPT-User requests start getting through.
  4. Read Security events. Filter by user agent and see which rule or service acted on any blocked request.

Should you allow GPTBot too?

GPTBot makes no difference to ChatGPT search citations either way (OpenAI's crawler documentation). It only decides whether OpenAI may use your content to train models. So this is a business decision, not a visibility fix.

ChoiceAllow GPTBotBlock GPTBot
ChatGPT search citationsNot affectedNot affected
Content used for model trainingPossibleOpted out
Best forBrands that want maximum AI exposurePublishers protecting paid or original content

For most of the business sites I work on (service pages, case studies, product catalogues), being seen is worth more than keeping content out of training. A publisher might reasonably decide the other way. The part that matters is letting the search and agent bots in, because they're the ones that put your pages into ChatGPT answers. Access alone won't get you cited, though. I go through structure, schema and content in how to get cited in AI Overviews and ChatGPT.

What if you can't find the setting that's blocking it?

If nothing in Cloudflare explains it, look at the origin server. Security plugins, host-level firewalls and old .htaccess rules can all send 403s to bot user agents. Server-level rules are easy to forget because they sit outside Cloudflare's dashboard.

If you've just moved the site onto Cloudflare, or someone else set the account up years ago, audit the whole zone in one pass: DNS, SSL mode, WAF rules, bot settings and caching. I do that as part of hosting migrations and maintenance.

Start by running your domain through the AI Crawler Checker. If OpenAI's bots still can't get in, or you'd rather have robots.txt, llms.txt, schema and Cloudflare set up properly in one go, take a look at my technical SEO service or book a 20-minute call and send me the domain.

Frequently asked

Does Cloudflare block ChatGPT by default?+

More than one million Cloudflare customers turned on its one-click AI crawler block after it launched in September 2024, and since 1 July 2025 Cloudflare has asked every new domain whether to allow AI crawlers. Some newer domains now have the Search policy set to Allow by default, so most blocks today come from older settings or custom WAF rules.

If I block GPTBot, will my site still appear in ChatGPT search?+

Yes. ChatGPT search uses OAI-SearchBot and user-triggered fetches use ChatGPT-User. GPTBot is OpenAI's training crawler and is controlled separately, so blocking it doesn't affect ChatGPT search citations.

Why does my robots.txt show Cloudflare Managed content I didn't write?+

Cloudflare adds managed directives to the top of robots.txt when Bot Preference Sync is on and at least one AI policy is set to block or disallow. Set the policies you want to Allow and Cloudflare stops adding the managed lines for those bots.

Can a Cloudflare WAF Skip rule get AI bots past Bot Fight Mode?+

No. Cloudflare's documentation says Bot Fight Mode runs outside the rules engine, so Skip, Bypass and Allow actions do nothing to it. Turn Bot Fight Mode off, use IP Access rules or upgrade to Super Bot Fight Mode on a paid plan.

Does adding llms.txt let AI crawlers into my site?+

No. llms.txt is a Markdown summary at /llms.txt that helps AI tools understand a site. Whether a bot can fetch pages is decided by Cloudflare's settings and robots.txt.

How can I check if ChatGPT can crawl my website?+

Run your domain through my free [AI Crawler Checker](/tools/ai-crawler-checker), fetch a page with curl using the OAI-SearchBot user agent, and check Cloudflare's Security events and AI Crawl Control for blocked requests.

Mohit Goyal

Written by Mohit Goyal

Senior Web Developer in Gurugram, India. 100+ fast, SEO-friendly sites shipped in 4+ years with Next.js, React and WordPress, including the procol.ai rebuild. Send me your next project.

Keep reading

Lovable app not showing on Google? How to fix it

Lovable app not showing on Google or ChatGPT? Check robots.txt, patch with prerendering, then move to server rendering for good.

11 min read

Bricks Builder site slow? How to fix Core Web Vitals

Bricks Builder site slow? Bricks is rarely the cause. Here's the order I fix LCP, CLS and INP, from Bricks settings to scripts and hosting.

11 min read

Let's build

Have a site that needs to be fast, rank and convert?

Open to Work. Usually replies within a day.