AI search news ·

Naming an AI crawler in robots.txt is not the same as blocking it — we parsed 70 rules and 34 of them were not full blocks

On 2026-07-28 we reported that our probe could tell whether a domain's robots.txt contains a `User-agent:` group for an AI crawler. We also said, in that post's own working notes, that a named group is not a block — and that until we parsed the rules inside the group we could not say what any of it meant. This run closes that gap. We re-fetched the robots.txt of the 20 most-cited domains in our production audit corpus on 2026-07-30 and parsed the `Disallow`/`Allow` lines inside every AI-agent group. 18 measured, 2 unmeasurable. 70 (domain, agent) pairs where a group exists: 36 full blocks, 27 partial, 7 explicit allows. One of the domains we previously listed as “names all eight agents” turns out to allow every one of them.

What was wrong with the previous measurement

Our 2026-07-28 piece, robots.txt is not an AI-visibility switch, used a guarded fetcher that detects whether a robots.txt names an AI crawler. That is a real signal, and it was enough to make that post's point. It is also, on its own, misleading in a specific way: a `User-agent: GPTBot` header tells you a site operator thought about GPTBot. It does not tell you what they decided. `Disallow: /` and `Allow: /` sit under identical headers.

So this pass parses the rules. For each AI agent we now report one of four states: BLOCKED_ALL (`Disallow: /` with no `Allow` narrowing it), PARTIAL (a root disallow with path exceptions, or path-scoped disallows only), ALLOWED (a group exists and imposes no effective disallow), and NO_GROUP. Nine agents are checked per domain: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Google-Extended and CCBot. The code is `ops/robots_rules.py` in our repo and the guard is unchanged from 07-28: a robots.txt counts as measured only on HTTP 200 and `content-type: text/plain` and a body containing no `<html`. Anything else is UNMEASURED and is never reported as a block — that guard exists because an unguarded probe once read Reddit's HTML network-block page as `Disallow: /`.

The result: 70 rules, and most of them are not what the header implies

State(domain, agent) pairsWhat it means
BLOCKED_ALL36`Disallow: /`, no exceptions
PARTIAL27root disallow with `Allow` carve-outs, or path-scoped disallows only
ALLOWED7group exists, nothing effectively disallowed
NO_GROUP92this agent is not named at all
Domains measured18 of 202 UNMEASURED — zocdoc.com and yellowpages.com both returned HTTP 403

Only 51% of the rules a group-presence check would have flagged are actual full blocks. Three cases show why that matters:

Now pair the rules against who actually gets cited

The corpus is a fresh production export taken this morning: 1,048 completed answers across 177 audits and four verticals (dentists, med spas, home services, personal-injury law), 27 synthetic smoke rows dropped, 1,112 distinct registrable domains. As we noted on 07-29, this instrument reads in-text URLs and that is effectively a ChatGPT cut — 523 of the answers are ChatGPT's, and the citation counts below are answers-citing-domain out of those.

DomainAI-agent rules on 2026-07-30Cited in (of 523)
birdeye.comnames no AI agent142
bbb.orgnames no AI agent92
medspascout.com5 BLOCKED_ALL, 3 PARTIAL63
threebestrated.comnames no AI agent48
expertise.com3 BLOCKED_ALL (GPTBot, ClaudeBot, Claude-Web)39
reddit.comnames no AI agent37
medicalspalocator.com8 PARTIAL (all effectively `Allow: /`)32
discovermedspa.com7 ALLOWED30
forbes.comnames no AI agent23
webmd.com4 BLOCKED_ALL18
healthgrades.com4 BLOCKED_ALL12
mapquest.comall 9 BLOCKED_ALL12
avvo.com1 BLOCKED_ALL (GPTBot)9
tripadvisor.com3 BLOCKED_ALL, 4 PARTIAL2
yelp.com6 BLOCKED_ALL, 3 PARTIAL0

mapquest.com blocks all nine agents outright and is still cited in 12 answers. yelp.com blocks six and is cited in none. Same directive class, opposite outcomes. Meanwhile the four most-cited domains in the entire corpus — birdeye.com, bbb.org, threebestrated.com, reddit.com — do not name a single AI crawler, in either direction. If robots.txt were the switch, that column would sort. It does not.

The honest reading, and we will not go further than the data does: a link can reach an answer through a licensing deal, through the search provider's index, or through a user-triggered fetch, and robots.txt speaks to only one of those paths. We are reporting a pairing, not a cause. What we can say flatly is the negative: on this corpus, a full `Disallow: /` for every named AI agent does not prevent a domain from being cited, and naming no agent at all does not prevent it either.

What to do with this

That before-and-after is what our product does: the free 60-second check asks ChatGPT and Perplexity the way a customer would and reports how often a business is named ($79 adds Gemini and Claude, 25 questions sampled three times each). If you audit AI visibility for clients, the agency 5-pack runs it across five of them — and how to check whether your business shows up in AI walks the method if you would rather do it by hand.

See your number

A free 60-second check shows what AI says about you.

Running this for clients? The $249 agency 5-pack audits five businesses, white-labeled.

Run a free AI visibility check

Begin your check

Free · 60 sec

No account · No card · 3 buyer questions, 2 engines

By running a check you agree to our Terms and Privacy Policy.

Who runs this