Rightshold™ Sign up

Answers · AI crawlers

Why isn't an AI-training opt-out or robots.txt preference access control, and what should I use instead?

Last updated

TL;DR: robots.txt, Google-Extended, Content-Signal: ai-train=no, ai.txt and TDM reservations are requests about how a well-behaved crawler should fetch or use public pages. They are not a lock. RFC 9309 says robots.txt rules "are not a form of access authorization", and Google says robots.txt is not a way to keep a page out of Google; use noindex or password protection. A scraper that ignores the file, or borrows GPTBot's user agent string, still gets every page your server hands to anonymous requests. If a page must not be read, put it behind authentication (session, SSO, signed URLs) or a CDN/WAF rule that blocks before the origin answers. Then verify crawler identity in your logs: check the claimed user agent against the operator's published IP list or a reverse-plus-forward DNS lookup, or check Web Bot Auth signatures. Keep training opt-outs for what they are good at: telling compliant AI operators how they may use pages you deliberately leave public.

What should I check, step by step?

1. Sort your URLs into three groups: public and fine for AI training, public but not for training (an opt-out is enough here), and must-not-be-read (needs a lock, not a preference).

  1. Anything in the must-not-be-read group goes behind authentication: a login session, SSO, HTTP auth on staging, or short-lived signed URLs for files. Anonymous requests should get a 401, 403 or 404 instead of the content.
  2. Don't list secret paths in robots.txt. Anyone can read the file, so a Disallow: /internal-reports/ line tells scrapers where to look.
  3. Add CDN/WAF rules for crawler classes you don't want at all, for example Cloudflare's AI-bot blocking or a custom rule on path plus verified-bot status, so the request stops at the edge.
  4. Keep training opt-outs in robots.txt (GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot) and, if you use them, Content-Signal lines. They record your preference for compliant operators.
  5. For search and indexing, use noindex (meta tag or X-Robots-Tag header) on pages that may be crawled but shouldn't show in results. A page blocked in robots.txt can still be indexed from links.
  6. Check crawler identity in your logs: match each claimed AI user agent to the operator's published IP ranges (OpenAI, Google and others publish them) or to reverse DNS followed by a forward lookup. Treat mismatches as unverified scrapers.
  7. Re-check monthly: fetch a protected URL from outside your network with no cookies and a spoofed crawler user agent. You should get a 401/403, not a 200.

Is an AI-training opt-out or robots.txt a lock?

RFC 9309 (the Robots Exclusion Protocol) says crawlers are requested to honor the rules and that the rules are not a form of access authorization. The file only affects clients that choose to read and obey it.

What should I use instead for pages that must stay private?

Authentication at the origin is the lock: session cookies, SSO, mTLS for service APIs, or short-lived signed URLs for downloads. Rely on it rather than on obscure URLs or robots.txt.

How do I verify crawler identity in my logs?

User-agent strings are trivial to fake. Before you count a hit as GPTBot or Googlebot, check that the IP is in the operator's published range, or do a reverse DNS lookup on the IP, confirm the hostname is in the operator's domain, then do a forward lookup back to the same IP.

What can go wrong?

You add Disallow: /admin/ and /exports/ to robots.txt and leave them unauthenticated; scrapers read the file and fetch both.

How do I ask Rightshold about this (free, no key)?

Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “What does example.com's robots.txt and other AI-use signals say to AI crawlers, and which training opt-outs are in place, so I can see what's only a preference and still needs a real access control?”

One-click setup

{
  "tool": "read_ai_policy",
  "arguments": {
    "url": "https://example.com"
  }
}

Rightshold reads public robots.txt and AI-use signals on request. It does not enforce them, sit in front of your site, verify crawler IPs for you, or test your authentication or CDN rules. Preferences are not access control. Not legal advice.

What are the sources?

Related

Not legal advice. JSON · Markdown · All answers

Get a free API key in one call

No card and no email needed. 100 free credits; the license and policy checks stay free without a key.

curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_...   # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
  -H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'