
The Machine Experience (MX) Audit: Tracking llms.txt and AI Crawler Permissions
For nearly three decades, the handshake between web developers and automated crawlers was governed by a single plain-text file: robots.txt. Introduced in 1994, its job was simple — tell traditional search spiders like Googlebot which directories they could enter and which were off-limits.
That job has gotten a lot more complicated. Agencies are no longer optimizing solely for human visitors in browsers; they're optimizing for AI agents, large language models, and generative answer engines like ChatGPT, Perplexity, Claude, and Google's AI Overviews that fetch, process, and cite web content on demand. As of this week, that shift has a hard deadline attached to it: on September 15, 2026, Cloudflare began blocking "mixed-use" AI crawlers by default on any page that carries ads, unless the site owner has explicitly reconfigured their settings. Any agency that hasn't audited a client's crawler permissions recently may already be invisible to AI search without knowing it.
This creates a two-part problem for digital agencies:
- Permission governance — knowing which AI bots (GPTBot, ClaudeBot, PerplexityBot, and dozens more) are actually authorized to reach client content, and which ones are blocked, spoofed, or silently caught by a CDN default.
- Contextual signaling — deciding whether emerging machine-readable formats like llms.txt are worth a client's time, and being honest about what the evidence currently says they do and don't accomplish.
Tracking crawler permissions, license renewals, and file deployments across dozens of client domains is already an operational headache. Getting the underlying facts wrong — treating an unproven format as a ranking lever, or missing a silent block — is worse. This guide walks through what's actually true about robots.txt and llms.txt in late 2026, why the Cloudflare/Perplexity dispute matters for every agency running client sites behind Cloudflare, and how to build a repeatable MX audit process.
1. robots.txt vs. llms.txt: Different Jobs, Not Competing Standards
robots.txt is the access-control layer. It answers a binary question: is this crawler allowed in this directory or not? llms.txt, by contrast, is an editorial layer — a curated, low-noise summary of a site's most important pages, meant to save an AI agent from having to parse a full HTML page just to find the pricing page or the API docs. The two are complementary, not substitutes for each other, and a site can (and generally should) have both.
Incoming AI request
|
v
+-----------------------+
| robots.txt | <- access control
+-----------------------+
/ \
Disallow Allow
/ \
v v
Request blocked +-----------------------+
| Page / llms.txt | <- editorial layer
+-----------------------+
|
v
Curated Markdown, if present,
or full HTML parsed directly2. The Gatekeeper Layer, Updated: Not One "AI Bot" Per Company
The biggest gap in most crawler checklists — including older versions of this one — is treating "GPTBot," "ClaudeBot," and "PerplexityBot" as interchangeable stand-ins for "the AI bot." They aren't. Every major AI company now runs separate crawlers for training versus for live search and retrieval, and blocking one doesn't block the other. That distinction is the single most useful thing an agency can act on:
| Operator | Training crawler | Search / retrieval crawler | User-directed fetch |
|---|---|---|---|
| OpenAI | GPTBot | OAI-SearchBot | ChatGPT-User |
| Anthropic | ClaudeBot | Claude-SearchBot | Claude-User |
| Perplexity | (see stealth-crawling note below) | PerplexityBot | Perplexity-User |
| Google-Extended* | Googlebot | — | |
| Meta | meta-externalagent | meta-externalfetcher | — |
| Apple | Applebot-Extended* | Applebot | — |
| Common Crawl (dataset widely used to train LLMs) | CCBot | — | — |
| ByteDance | Bytespider | — | — |
\* Google-Extended and Applebot-Extended are control tokens, not standalone crawlers — they modify how content already fetched by Googlebot or Applebot may be used (for Gemini training/grounding, or Apple's model training), and generally won't appear as a distinct request in server logs.
This means an agency can block GPTBot and ClaudeBot (keeping client content out of model training data) while leaving OAI-SearchBot, Claude-SearchBot, and PerplexityBot allowed, so the client can still be cited in ChatGPT and Perplexity answers. That's a materially different, more defensible recommendation than a blanket "block AI" or "allow AI" toggle.
Two caveats worth flagging to clients up front:
- Compliance is voluntary. robots.txt is a request, not a technical wall. A crawler only honors it if it chooses to, and a user-agent string can be spoofed by anyone.
- User-directed fetches are a gray zone. When someone pastes a URL into ChatGPT or Perplexity and asks for a summary, the resulting fetch is often treated as a user action rather than crawling, so standard training/crawl rules in robots.txt may not apply the way site owners expect.
3. The Perplexity Case Study — and Why It Still Matters
In August 2025, Cloudflare accused Perplexity of ignoring robots.txt blocks and disguising its crawling activity: rotating source ASNs, spoofing its user-agent as a generic Chrome browser on macOS, and continuing to answer questions about content on domains that had explicitly blocked it. Cloudflare said the activity spanned millions of requests across tens of thousands of domains and, in response, delisted Perplexity from its Verified Bots program and added heuristics to its managed rules to catch the disguised traffic. Perplexity disputed the characterization. The episode is the clearest evidence that a permissive-looking robots.txt file is not proof that only permitted crawlers are actually reaching a site — verification has to happen at the network layer too, not just the file layer.
That dispute is also the backdrop for Cloudflare's September 15, 2026 policy change: crawlers that blend search, agent, and training use ("mixed-use" crawlers) are now blocked by default on any ad-monetized page, for new Cloudflare customers, newly onboarded sites, and all existing free-tier accounts. Existing paid sites keep their current settings unless the owner changes them — which means an agency's job is now to check every client's Cloudflare AI-bot dashboard settings, not just their robots.txt file, before assuming a client is reachable by AI search at all.
4. llms.txt: What It Actually Is, and What the Evidence Shows
llms.txt was proposed by Jeremy Howard of Answer.AI in September 2024: a Markdown file at a site's root that gives an AI agent a curated index — a short summary plus links to the pages that matter most, with an optional companion llms-full.txt for full documentation. Version 2 of the spec shipped on August 10, 2026, incorporating two years of real-world usage feedback. It remains a community convention, not a ratified standard, maintained through the llmstxt.org project with informal input from several AI companies.
# Brand Name
> One- or two-sentence description of the organization and its core value proposition.
## Core Services
- [Service Name](https://example.com/service): what it does.
- [Pricing](https://example.com/pricing): tiers and licensing models.
## Documentation
- [API Reference](https://example.com/docs): integration docs for developers.Here's the part agencies need to hear before selling llms.txt deployment as a growth service: Google has said explicitly that it doesn't use it. Google's Gary Illyes has confirmed Google Search doesn't support llms.txt and has no plans to, and John Mueller has compared it to the long-discredited meta-keywords tag. Google's own 2026 generative-AI optimization documentation lists llms.txt among tactics that don't move the needle, and as of June 15, 2026, Google updated that guidance to state plainly that the file has no effect — positive or negative — on Search rankings or AI Overviews.
The independent research backs that up. Adoption studies put the file's presence on live domains anywhere from roughly one in ten sites to just under 3 in 10, depending on methodology, but reading it is a separate question from publishing it — much of the growth in "adoption" comes from platforms like Mintlify and the Yoast SEO plugin (since version 25.3) auto-generating the file for every site they host, not from deliberate agency strategy. One monitoring analysis of over 500 million AI bot events across a 90-day window found only a few hundred requests targeting /llms.txt directly, with the major crawlers overwhelmingly fetching ordinary HTML instead. A separate machine-learning study testing whether llms.txt presence correlates with AI citation frequency found that removing the variable from the model actually improved its predictive accuracy — the file added noise rather than signal.
There's one genuine exception worth naming: developer documentation consumed by coding assistants. Tools like Claude Code, Cursor, and similar AI coding agents do benefit from a clean, curated index of API docs, and that's the use case the format was originally built for. Interestingly, Chrome's Lighthouse 13.3 added an experimental "Agentic Browsing" audit category that checks for llms.txt, even as Google Search's own team says it doesn't affect rankings — the two teams are answering different questions, and Chrome's audit is explicitly experimental and non-scoring rather than a de facto ranking signal.
The honest recommendation for agencies: llms.txt costs very little to implement and won't hurt anything, so there's no harm in shipping a minimal version for clients who ask, or for documentation-heavy sites where coding agents are a real audience. It should not be positioned or priced as a GEO strategy with a measurable citation or traffic payoff — the current evidence doesn't support that claim, and a client who later checks Google's own documentation will find that position contradicted directly.
5. Beyond llms.txt: The Emerging AI-Usage-Preference Layer
llms.txt tells an agent where to look. It says nothing about permission to train on content. Several other signals are trying to fill that gap, at varying levels of maturity — agencies should know the difference between "informal convention," "vendor-specific extension," and "still an IETF draft."
- noai / noimageai. An informal convention that originated with DeviantArt in November 2022 to let artists opt images out of AI training. It can be set as an HTML
<meta name="robots" content="noai, noimageai">tag or as anX-Robots-TagHTTP header (the header version is the only one that works on non-HTML assets like PDFs and images). It is not part of Google's documented robots meta tag specification, and honoring it is voluntary — some major AI companies have said they'd respect it, but there's no enforcement mechanism behind it. - Cloudflare Content Signals. A newer, more structured vocabulary that Cloudflare writes directly into a site's robots.txt, expressing
search,ai-input(used to answer a live query), andai-trainpreferences per crawler category, alongside the older noai/noimageai tags and a TDMRep manifest. - TDMRep. A W3C-linked text-and-data-mining reservation format, published at
/.well-known/tdmrep.json, that lets a site formally reserve its rights over automated mining of its content. - IETF AI Preferences (AIPREF) Working Group. Chartered in January 2026, this is the closest thing to a real standards-track effort — it's developing a
Content-UsageHTTP header and a corresponding robots.txt rule with a small vocabulary (currently justtrain-aiandsearch, each with y/n values). As of its most recent revisions in August 2026, the vocabulary draft still lacks full working-group consensus and the attachment-mechanism draft (the piece that defines the actual header/robots.txt syntax) has lapsed and been revived more than once under IETF's routine six-month expiry rules. No crawler is currently obligated to read a Content-Usage line, and none of the major vendors document supporting one yet. This is worth tracking for 2027 planning, not deploying today.
The practical takeaway: noai/noimageai costs nothing to add and signals intent even where it isn't binding; Cloudflare's Content Signals are a reasonable middle ground for Cloudflare-hosted clients; and the IETF work is genuinely promising but pre-standard — don't sell it as a deliverable yet.
6. The Commercial Stakes for Agencies
A. The silent-blocking risk, now with a live deadline attached. New staging environments, security-plugin updates, and default WAF rules routinely apply blanket Disallow: / rules or strict Cloudflare bot challenges that AI crawlers can't solve. Cloudflare's September 15, 2026 default change makes this risk immediate and dated: any client site with ads, on a new or free-tier Cloudflare account, is now blocked from mixed-use AI crawlers unless someone has gone in and changed the setting. A client can silently disappear from AI-driven referrals without a single line of robots.txt changing.
B. Enterprise integrations and license renewals. Clients running custom AI search widgets, enterprise-tier API access (an OpenAI enterprise plan, a Perplexity Enterprise agreement, or similar), or paid data-licensing arrangements with AI aggregators have real renewal dates and real account-ownership questions attached — and a lapsed subscription breaks a client-facing feature the same way an expired SSL certificate does.
C. Legal and compliance alignment. Clients in regulated industries (healthcare, finance, legal) increasingly want documented assurance that their content isn't being scraped for third-party model training. Sector research on llms.txt adoption backs this up indirectly: publication rates in those sectors run well under 10% among top domains, reflecting genuine compliance caution rather than lack of awareness.
7. Building an MX Audit SOP
Phase 1 — Crawler permissions audit
- Review robots.txt for each of the three crawler roles per major vendor (training, search/retrieval, user-directed fetch) rather than treating "AI bots" as one category.
- Check the client's Cloudflare (or equivalent CDN/WAF) dashboard AI-bot settings directly — as of September 2026 this is a separate control surface from robots.txt and can override it.
- Verify crawlers by IP range where a vendor publishes one, not just by user-agent string — the Perplexity case shows user-agent headers can be spoofed.
- Check for
noai/noimageaiand Content Signals declarations if the client has taken a position on AI training opt-out.
Phase 2 — llms.txt and preference-signal deployment (scoped honestly)
- For clients with substantial developer documentation, deploy a minimal llms.txt and, if the docs are large, an
llms-full.txtcompanion — framed as a low-cost hygiene item, not a ranking strategy. - For clients wanting a documented AI-training opt-out, add Content Signals or noai/noimageai headers, and note that neither is legally binding on its own.
- Skip elaborate llms.txt builds for clients chasing AI Overviews or ChatGPT citations specifically — the current evidence doesn't support that payoff.
Phase 3 — Verification and monitoring cadence
- Simulate crawler fetches with per-bot user-agent strings (
curl -A "PerplexityBot" -I https://client.com/llms.txt) to confirm HTTP 200 responses. - Confirm every link inside llms.txt resolves cleanly, with no redirects or 404s.
- Set a recurring review date — quarterly is typical — since CDN defaults, plugin updates, and vendor crawler lists all change without a client's knowledge.
8. Where InstaRenewal Fits in an MX Audit Workflow
MX auditing involves two different kinds of ongoing work, and it's worth keeping them separate.
The first is verification — actually checking, on a schedule, whether a client's robots.txt still permits the right crawlers, whether their llms.txt (if they have one) still resolves cleanly, and whether a recent hosting, WAF, or CDN change introduced a silent block. That's investigative work done with cURL checks, a crawler simulator, and a look at the Cloudflare AI-bot dashboard — not something a renewal tracker should claim to do for you.
The second is record-keeping — remembering when each client's next verification pass is due, and staying ahead of the unrelated renewals that can quietly take down MX assets. That's where InstaRenewal fits, as a manually maintained renewal-date and ownership record, not an automated scanner:
- Recurring audit dates. A logged date for each client's next MX review (monthly or quarterly, per the retainer), sitting alongside every other renewal on the agency's calendar instead of a separate spreadsheet.
- Domain, SSL, and hosting renewal dates. A lapsed domain or expired certificate takes robots.txt and llms.txt down along with everything else on the site — InstaRenewal already tracks these for other reasons, and MX auditing is one more reason a missed renewal gets expensive.
- AI-related license and subscription renewals. Where a client pays for an enterprise search integration or a similar recurring AI-vendor agreement, InstaRenewal can hold the renewal date and the ownership record — who owns the account, who to contact — the same way it does for any other software license.
What it isn't: InstaRenewal doesn't fetch live crawler traffic, verify llms.txt checksums, store API keys or credentials, or flag a robots.txt change the moment it happens. It's the record book that keeps the audit from being forgotten — not a substitute for doing it.
Summary
The web's machine-readable layer is real, but it's also genuinely unsettled — llms.txt is useful in one specific context and unproven everywhere else, the IETF's preference standard is still in draft, and even a permissive robots.txt file isn't a guarantee that only permitted crawlers are getting through. Agencies that build MX auditing into their retainers need to separate what's proven from what's promising, verify permissions at both the file and network layer, and keep a disciplined record of the renewal dates — domains, certificates, hosting, and AI licenses — that quietly determine whether any of it stays working.