Hidden Layer/Research/robots.txt in the AI era: what it controls, and what it only asks

Bot Policy

robots.txt in the AI era: what it controls, and what it only asks

The Robots Exclusion Protocol became an IETF standard in 2022, and that standard says its rules are not access authorization. Two major AI operators document fetchers that ignore robots.txt by design. Here is what the file still does, and what has to sit behind it.

Which requests robots.txt actually governs
ROBOTS.TXTasksEDGE RULErefusesSCHEDULED CRAWLGPTBot · ClaudeBot · PerplexityBotHonouredEnforcedEither gate stops itA PERSON ASKED FOR ITChatGPT-User · Perplexity-UserBypassedEnforcedOnly the edge does
Lane membership and both verdicts are the operators’ own documentation, not inference. [2][3][4] The edge is the only gate here that can refuse a request. [6][9]

Martijn Koster proposed the Robots Exclusion Protocol in 1994 as a way for a site owner to tell a search crawler which paths to skip. For most of the next thirty years it governed a handful of well-behaved crawlers, and almost nobody had to think about what would happen if one of them declined. In September 2022 the IETF published it as RFC 9309, a Standards Track document, which is the moment it stopped being a convention and became a specification. 1

That specification is unusually candid about its own limits. It says in plain terms that the rules "are not a form of access authorization", and it describes crawlers as being requested to honour them. The protocol that the entire AI-crawler debate runs on documents, in its own text, that it cannot compel anyone. 1

Which AI crawlers say they obey robots.txt, and which say they do not?

This is answerable without a single log file, because the operators publish it. The answer redraws the map. The usual split people reach for is training crawlers versus search crawlers, on the theory that training is the invasive one. That is not the line the operators themselves draw. The line is whether a request was generated by a schedule or by a person.

Read as of 18 August 2026, and read narrowly. What follows is three operators and eight crawlers, chosen because each publishes a per-crawler policy precise enough to quote. It is not a census: Google, Meta, Apple, Cohere, Mistral and ByteDance all run crawlers with their own tokens and their own terms, and a few of them say considerably less about compliance than the three below. Bot documentation also changes without announcement, which is why this page carries a review date rather than a claim to be current forever.

OperatorCrawlerWhat it is forHonours robots.txt?
OpenAIGPTBotTraining foundation modelsYes 2
OpenAIOAI-SearchBotChatGPT search resultsYes 2
OpenAIChatGPT-UserA user asked ChatGPT to open this pageMay not apply, per OpenAI 2
AnthropicClaudeBotModel utility and safetyYes 4
AnthropicClaude-SearchBotSearch result qualityYes 4
AnthropicClaude-UserA user’s question needs this pageYes 4
PerplexityPerplexityBotPerplexity resultsYes 3
PerplexityPerplexity-UserA user’s question needs this pageGenerally ignored, per Perplexity 3

Two of the three operators here document a fetcher that steps outside the file, and both give the same reason: a person asked for that specific page, so the fetch is treated as browsing rather than crawling. Anthropic documents no such exception and states that all three of its bots honour the directives. That difference is a genuine policy divergence between operators, published by them, and it is worth more to a reader than any aggregate.

A disallow rule reliably stops the crawlers that came to index you. It does not reliably stop the ones that came because somebody asked about you.

VERIFIED 3SUPPORTED 1

RFC 9309, the IETF Standards Track specification of the Robots Exclusion Protocol, states that its rules are not a form of access authorization and that crawlers are requested to honour them. 1

VERIFIED0.95authority T11 source

The specification itself. There is no higher authority on what the protocol claims to do.

Perplexity and OpenAI each document a user-initiated fetcher to which robots.txt does not reliably apply: Perplexity-User "generally ignores robots.txt rules", and OpenAI states robots.txt rules may not apply to ChatGPT-User. Anthropic documents no equivalent exception. 234

VERIFIED0.90authority T13 sources

Dissent: This is what the operators publish about themselves, which is authoritative for intent and unverified as behaviour. Documented policy and observed traffic are separate questions, and the next row is the other one.

Independent server-log analysis by Oncrawl found AI crawlers fetching URLs explicitly disallowed in robots.txt and receiving 200 and 304 responses, at volumes from roughly 500 to over a million requests a month on a single site. 7

SUPPORTED0.80authority T11 source

Dissent: One analyst’s estate, not a census, and user-agent strings are trivially spoofable, so some share of any such traffic is not the named operator at all. The direction is well evidenced; the magnitude is one sample.

Automated traffic reached 53% of web traffic in 2025, up from 51% in 2024, on Imperva/Thales measurement. The population robots.txt addresses is now the majority of the web’s visitors. 8

VERIFIED0.90authority T11 source

Counted across the estate Imperva monitors. Cited here for scale, not as a measure of AI crawlers specifically — most automated traffic is not an AI crawler.

If it is only a request, why publish the file at all?

Because the crawlers that honour it are, for most brands, the ones that matter commercially. A training crawler you would rather not feed is the one you can actually turn away. A search crawler that sends an assistant’s user to your page is the one you want, and the file is the only standard place to say so per crawler. Silence is not neutrality: an absent rule falls through to the wildcard group, which on most sites is a blanket allow, and on Cloudflare-fronted domains onboarding after September 15, 2026 falls the other way. 9

It is also the file every audit, every vendor dashboard and every compliance reviewer reads first. Whatever it can and cannot enforce, it is the public record of what you asked for, and there is no second place to put that.

How should the file be written?

One group per crawler, named. Most AI crawlers look for their own user-agent token and fall back to the wildcard group only when they do not find one, so an unnamed crawler inherits whatever you wrote for everything else. Split by what the crawler is for rather than by which company sent it, because the trade is different in each direction: training is content absorbed permanently into weights, search and retrieval is distribution back to you.

DIRECTIVE
# Training crawlers — a policy decision, not a default.
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

# Search and retrieval — this is AI-era distribution. Keep it open.
User-agent: OAI-SearchBot
Allow: /

User-agent: Claude-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

Note what this file does not do. It says nothing to ChatGPT-User or Perplexity-User, and adding groups for them would not change what those fetchers do, because both operators have published that a user-initiated fetch is treated differently. If you need those requests stopped, robots.txt is the wrong instrument and the next section is about the right one. 23

What is Content-Signal, and does it change anything?

Cloudflare published the Content Signals Policy on 24 September 2025. It adds a directive inside a robots.txt group that separates what a crawler may DO with content from whether it may fetch it: search, ai-input and ai-train, each set to yes or no. Allow and Disallow govern access; Content-Signal governs use. 5

DIRECTIVE
User-agent: *
Content-Signal: search=yes, ai-train=no
Allow: /

It is a real directive line inside a group, not a comment, and omitting a signal grants and forbids nothing for that use. On enforcement Cloudflare is explicit and worth quoting: content signals "express preferences; they are not technical countermeasures", and its own guidance is to pair them with WAF rules and bot management if you want them to bind. A stated preference is still worth stating, because it is evidence of intent that a court or a counterparty can read. It is not a control. 5

So what actually enforces a crawler policy?

Something that can refuse the request. robots.txt is read by the crawler and obeyed at its discretion; an edge rule is applied before the request reaches your origin, and the crawler’s discretion never enters into it. That is the difference between a sign on the door and a lock, and it is why the September 15 Cloudflare default change matters more than any robots.txt edit you have ever made. We covered that change and the per-category decision behind it in Cloudflare Flips the Default. 9

Identity is the other half, and it is the part most teams skip. A user-agent string is a claim, not a credential: anything can send "GPTBot". Cloudflare’s verified-bot programme exists to close that gap, and its criteria are worth reading as a definition of good behaviour rather than as a vendor feature. A bot qualifies by identifying itself honestly, through cryptographic signatures, published IP ranges with stable user-agents, or reverse DNS, and by behaving non-abusively, which explicitly includes respecting robots.txt. Verification is how "this request says it is GPTBot" becomes "this request is GPTBot". 6

There is a failure mode in the other direction, and it is the one we see most often. Edge bot-blocking that is tuned to stop non-browser traffic will also stop the crawlers you wanted. When a crawler requests robots.txt and receives a 403, it cannot distinguish a missing file from a hostile CDN, and the practical result is a blanket disallow you never wrote. The fix is not to loosen the rules but to allow verified bots, then check the result from outside rather than in the dashboard. 6

DIRECTIVE
# What a crawler actually receives. Run it from OUTSIDE your network.
for ua in GPTBot ClaudeBot PerplexityBot OAI-SearchBot Claude-SearchBot; do
  printf '%-20s %s\n' "$ua" \
    "$(curl -sS -o /dev/null -w '%{http_code}' -A "$ua" https://example.com/robots.txt)"
done

# 200 = reachable. 403 = your edge is answering for you, and every rule
# in the file below is moot for that crawler.

A 403 there is the answer to a question most teams never ask, and it outranks everything else on this page: a crawler that cannot read the file cannot obey it. Check the same way after any WAF or bot-management change, because that is when this breaks and nothing alerts you.

What should you actually do?

  1. Write the file per crawler, named, split by purpose rather than by vendor. Training is a policy decision; search and retrieval are distribution. An unnamed crawler inherits your wildcard group, so silence is a decision you did not know you made. 1
  2. Add Content-Signal to the wildcard group if you want your intent on the record, with the correct syntax and inside the group rather than as a trailing comment. It states a preference; it does not enforce one. 5
  3. Accept that user-initiated fetchers are outside the file. Two of the three major operators document it. If those requests genuinely need stopping, that decision belongs at the edge, not in robots.txt. 23
  4. Verify from the outside, with the loop above, then check your server logs for disallowed paths returning 200. The settings you believe you published and the responses bots actually receive routinely differ — run a Hidden Layer audit to check live responses for 12 AI crawler user-agents in one pass. 7
  5. Put enforcement where refusal is possible. Allow verified bots at the edge so honest crawlers are not caught by bot-fight rules, and treat the per-category controls as the real policy surface. 69

The honest summary is that robots.txt is necessary, insufficient, and still worth doing well. It is the public record of your intent, it reliably governs the automated crawlers that make up most of the volume, and it is read by every auditor who looks at you. What it is not is a boundary. Treat it as the statement of policy and put the enforcement somewhere a request can be refused, and you have the arrangement the specification actually describes rather than the one most teams assume they have. 1

Put this into practiceAudit and publish robots.txt for AI crawlersPhase 1
robots.txtAI BotsBot PolicyStandards

Footnotes9

  1. IETF — RFC 9309: Robots Exclusion Protocol (Standards Track, September 2022). States that the rules "are not a form of access authorization" and that crawlers are requested to honour them.
  2. OpenAI — Bots documentation (accessed Aug 18, 2026). GPTBot, OAI-SearchBot and OAI-AdsBot honour robots.txt; for the user-initiated ChatGPT-User, OpenAI states robots.txt rules may not apply.
  3. Perplexity — Bots documentation (accessed Aug 18, 2026). PerplexityBot honours robots.txt; of Perplexity-User it states "Since a user requested the fetch, this fetcher generally ignores robots.txt rules."
  4. Anthropic — Does Anthropic crawl data from the web, and how can site owners block the crawler? (accessed Aug 18, 2026). ClaudeBot, Claude-SearchBot and Claude-User are all stated to honour robots.txt directives.
  5. Cloudflare — Giving users choice with Cloudflare’s Content Signals Policy (Sep 24, 2025). Defines the search, ai-input and ai-train signals, and states that content signals "express preferences; they are not technical countermeasures".
  6. Cloudflare — Verified bots (developer documentation, accessed Aug 18, 2026). Verification requires a bot to identify itself honestly and to behave non-abusively, including respecting robots.txt.
  7. Oncrawl — What AI bots are really doing on your site (accessed Aug 17, 2026). Independent server-log analysis: AI crawlers fetching URLs explicitly disallowed in robots.txt and receiving 200/304 responses, at roughly 500 to over 1,000,000 requests per month on a single site.
  8. Imperva / Thales — 2026 Bad Bot Report: Bad Bots in the Agentic Age (Apr 29, 2026). Automated traffic reached 53% of web traffic in 2025, up from 51% in 2024.
  9. Cloudflare — Your site, your rules: new AI traffic options for all customers (Jul 1, 2026). The Search / Agent / Training categories and the September 15, 2026 default change.
ShareLinkedInXEmail

Cite this article

Full
Harshak Patel. “robots.txt in the AI era: what it controls, and what it only asks.” Hidden Layer, 18 August 2026. https://hidden-layer-blogs.pages.dev/post/robots-ai-bots
In line
Hidden Layer (2026)

Reuse

Republish, translate, excerpt or adapt the article text and the figures Hidden Layer drew under Creative Commons Attribution 4.0 International (CC BY 4.0), provided you credit Hidden Layer and link to the original. Read the CC BY 4.0 terms.

The grant covers our own words and charts only. It does not extend to data and figures quoted from other organisations, which stay with their owners; to trademarks and logos, ours and everyone else’s; or to audit reports and customer data produced by the product.

Author

HP
Harshak PatelFounder & Head of Research, Hidden Layer
Harshak Patel runs Hidden Layer, where the work is auditing how AI systems surface — or refuse to surface — brands and products. Background in enterprise product data and catalogue intelligence. The publishing rule here is simple: every article ships with its sources, its per-fact confidence, and the claims that were cut. The methodology is public and reproducible, and that, not the byline, is the credential.

Next

See how your domain scores against these checks.

Run a free audit

GEO Week — every Friday

Weekly brief on AI discoverability, agent readiness, and what shipped in the GEO space. No fluff.

We'll never spam you. Unsubscribe anytime. GDPR-compliant double opt-in.