AI crawlers and assistants on your sites
AI bots visit your sites for very different reasons — some crawl to train models, some index you so you turn up in AI search answers, and some fetch a single page because a person asked an assistant to read it. Your host sorts them into classes and applies a sensible default to each, the same on every site. You can change that default for any one site, from a small text file in your own account.
You don't have to set anything up for the defaults to apply — they're already in force on every site. Reach for this page only when a particular site wants something other than the default.
What the defaults are
| AI traffic | Default | What it means |
|---|---|---|
| Training crawlers (GPTBot, ClaudeBot, CCBot, Bytespider, Amazonbot, …) | Blocked | Bots that harvest your content to train AI models are turned away. These are also the most aggressive crawlers on the web — they sweep whole sites far harder than search engines do, and send you no visitors in return. |
| Search / index bots (OAI-SearchBot, PerplexityBot, …) | Allowed | Bots that index your site so it can appear in AI search answers are let in, gently rate-limited. |
| Assistant fetchers (ChatGPT-User, Claude-User, …) | Allowed | When a person asks an AI assistant to read one of your pages, that fetch is allowed, gently rate-limited. |
| Evasive assistant (Perplexity-User) | Blocked | A user-fetch agent that ignores no-crawl rules and disguises itself when blocked is turned away by default; you can allow it per site. |
| Utility bots (read-aloud, ads, notebook tools) | Allowed | Allowed, gently rate-limited. |
For most sites these defaults are exactly right, and you can leave this alone entirely. The balance to notice: blocking the training class does not hide a site from AI tools — AI search indexing and person-triggered assistant fetches stay open, so you keep the visibility while skipping the bulk harvesting.
Changing it for a site
You set overrides in a control file in your own account:
static/control/ai/policy.txt
On a typical account that's ~/static/control/ai/policy.txt in your shell (the folder may
not exist yet — just create it). Add one line per site: the site's name, then a space,
then the changes you want. A site with no line keeps the defaults above.
| Flag | What it does |
|---|---|
train-allow |
Allow AI training crawlers for this site (overrides the default block) |
evasive-allow |
Allow the evasive assistant fetcher (Perplexity) for this site |
search-block |
Block AI search / index bots for this site |
user-block |
Block AI assistant fetchers for this site |
utility-block |
Block AI utility bots for this site |
You can combine flags on one line, in any order:
# static/control/ai/policy.txt
# A news site happy to be in AI training data:
news.example.com train-allow
# A members-only shop that wants no AI bots indexing or fetching it:
shop.example.com search-block user-block utility-block
# A blog that wants AI search but not the assistant "user" fetchers:
blog.example.com user-block
# A research site that wants even the evasive Perplexity assistant allowed:
research.example.com evasive-allow
As with the IP-lock control files, lines starting with # (and
anything after a # on a line) are ignored, and so are blank lines — so you can annotate
freely, labelling which site each rule is for. The change is picked up on its own within
about two minutes — no restart, no support ticket. To put a site back to the defaults,
just delete its line; the override is removed on the next pass.
What stays on no matter what
A few AI-related protections are always on for every site and aren't set from this file:
- outright scrapers and download tools — the mass-harvesting bad bots,
- forged opt-out tokens — a request arriving as
Google-ExtendedorApplebot-Extended(those are content-licensing signals, never real crawlers, so anything wearing one as its identity is turned away), and - credential and dotfile probes — requests fishing for
.env,.git, and similar secret paths.
These are blocked on every site and there's no line you can add here to change them. If one ever catches a genuine request you need to get through, that's one for your host to look at — the same as any other server-level control.
What about robots.txt?
robots.txt still matters, and nothing on this page changes what your site says
in it. But it is a request, not a control: it works only on crawlers that choose
to read it, on their own refresh schedule, and only on what your file actually
says. Three things are worth knowing before relying on it against AI crawlers:
- Stock files predate the AI crawlers. The
robots.txtthat ships with Backdrop and with Drupal 6 and 7 has a singleUser-agent: *block that keeps crawlers out of the admin, login and search paths, leaves all content open, and asks forCrawl-delay: 10. Drupal 8 removed the Crawl-delay line in 2015 and Drupal 9, 10 and 11 never had it. None of them names an AI agent. On an end-of-life core the stock file will never change again, and on any core it changes only when you, or a module, change it. - Compliance is partial and uneven. Anthropic documents that its crawlers
honour
robots.txtandCrawl-delay. OpenAI documents that GPTBot honoursrobots.txt, that a change can take about a day to reach its search crawler, and that for the person-triggered ChatGPT-User fetches "robots.txt rules may not apply". Google documentsCrawl-delayas unsupported. Independent measurements (TollBit, first half of 2026) found roughly one in seven identified AI page-fetchers on URLs the site had disallowed, and Cloudflare documented Perplexity crawling behind an undeclared browser user-agent from rotating addresses after being blocked. - The file cannot single out what it does not name, and it cannot pace
anything. New agents appear every few months; a file written last year does
not know them, and a compliant crawler taking every page of a site whose file
never mentioned it is breaking no rule.
Crawl-delayis honoured by some crawlers and ignored by others, and there is no directive at all for "this much per vendor across all of its addresses".
That is why the policy on this page is enforced by the web server, per request,
regardless of what any robots.txt says or when a crawler last read it: training
crawlers are refused at the door, the allowed classes are paced per vendor (the
thing Crawl-delay asks for and cannot enforce), and either default flips per
site from policy.txt above.
Your robots.txt stays yours. On Drupal 6 and 7 sites the RobotsTxt module is
kept enabled and its output is served as a static snapshot; on every core a
sites/<yourdomain>/files/<host>.robots.txt file, which BOA never regenerates, is
served ahead of the platform file — see
Your robots.txt is managed too.
Nothing here writes AI rules into it; if you want the sign to say the same as
the door, add the lines yourself.
Publishing your AI policy at /llms.txt
Separate from blocking or allowing crawlers, you can tell AI tools what
your site's usage policy is — the emerging convention is a plain-text file
served at /llms.txt. Every BOA site already has the route wired: requests
for /llms.txt are served from your site's own files directory, so
publishing a policy is just uploading a file — no module, no configuration:
- Write your policy as plain text in a file named
llms.txt. - Upload it into your site's
sites/<yourdomain>/files/directory (over SFTP or the shell).
That's it — https://yourdomain/llms.txt serves it immediately. Two extras:
- Different policies per domain: a multi-domain site can also upload
<host>.llms.txtfiles (for exampleshop.example.com.llms.txt) — the per-host name is tried first, and plainllms.txtis the fallback. - Prefer managing it from Drupal? The contrib
llms_txtmodule works too — the route serves whichever exists.
Related pages
- Restricting access to your site — the overview of the access-control family, and the default admin-page protection.
- Site IP lock and Login/admin IP lock — the IP-based locks, managed from the same kind of control files.
- Shell and SFTP access — how to connect so you
can edit
policy.txtin the first place. - Managing your sites — the day-to-day site tasks in your control panel.