From robots.txt to agent identity: the controls sites use, and when the law is behind them
A crawler control is a request. For thirty years the whole mechanism rested on the crawler choosing to read it, and mostly that was enough. What changed is not the file. It is who is reading it, and what a court will do about it.
We have a working interest in the answer. UnGovr documents governments across 200+ countries, which means crawling public sector sites at a scale of millions of pages in a busy month, under every legal regime those governments sit in. So we kept notes on what each jurisdiction asks of a crawler, and of a model trained on what it collects. The notes became a researched corpus, and the corpus became LexLint. This is the first article drawn from it.
A convention, and it said so
Martijn Koster proposed robots.txt on the www-talk mailing list in February 1994, after a badly behaved crawler caused trouble on a server he ran. The resulting document, A Standard for Robot Exclusion, recorded a consensus reached on a mailing list on 30 June 1994, and was unusually direct about what that was worth.
It is not an official standard backed by a standards body, or owned by any commercial organisation. It is not enforced by anybody, and there is no guarantee that all current and future robots will use it.
A Standard for Robot Exclusion, 1994
Every property of today's crawler controls is already there. It coordinates operators who want to coordinate, it has no enforcement of its own, and it applies to whoever decides to apply it.
The standard that took 28 years
robots.txt was finally written down as a standards-track document in September 2022, as RFC 9309, by Koster with three Google engineers. The IETF publishing it did not make it binding, and the document is careful about the distinction. Participation is a request: it specifies rules "that crawlers are requested to honor". The rules themselves, once a crawler has chosen to participate, are mandatory: "if the crawler successfully downloads the robots.txt file, the crawler MUST follow the parseable rules". The standard is strict about how to obey and silent about whether to. It also forecloses the reading that would have made it a security control.
These rules are not a form of access authorization.
RFC 9309, Robots Exclusion Protocol
That sentence does a great deal of work in the legal section below, and the people who know the protocol best wrote it.
One file became a shelf of signals
A single allow-or-deny decision stopped being expressive enough some time
ago, and the response has been specialisation rather than replacement.
Crawling split from indexing: a robots.txt rule stops the fetch, while
noindex and the X-Robots-Tag header stop the
listing, and only work if the crawler was allowed to fetch the page and read
them. Purpose split by user-agent token: OpenAI, Anthropic and Google each
publish three, for a bulk training crawler, a search indexer, and a live
agent fetching because a person just asked something. Blocking one does not
block the others, which is the point of having three.
The third split moved from access to use, which is where copyright arrives.
The
TDM
Reservation Protocol (a 2024 W3C Community Group report, expressly not a
W3C standard) defines a tdmrep.json file for reserving mining
rights; Cloudflare's Content Signals Policy adds a
Content-Signal line inside robots.txt carrying
search, ai-input and ai-train; Really
Simple Licensing
(RSL)
attaches licence terms, including prices. Then there are
ai.txt and llms.txt, single-organisation proposals
no standards body has adopted. Widely discussed and standardised are
different states, worth keeping apart when deciding what to implement.
Then the crawler stopped being a crawler
robots.txt assumes a crawl: one operator's bot, moving at its own pace,
building something durable. An agent fetching one page because a person
asked a question thirty seconds ago fits that badly, and the operators say
so themselves. OpenAI's documentation, on its user-initiated
ChatGPT-User agent:
Because these actions are initiated by a user, robots.txt rules may not apply.
OpenAI, bots documentation
Cloudflare now sorts the space into Search, Training and Agent on the same reasoning, and from 15 September 2026 will block the last two by default on ad-monetised pages for new domains. It has also revived HTTP 402, so a price rather than only a refusal can be an answer.
The deeper shift is from assertion to proof. A user-agent string is a claim anyone can make, as the Web Bot Auth architecture draft says: "User-Agent, when used alone, can be spoofed meaning anyone may attempt to act as that agent". The alternative is a signature. RFC 9421 made HTTP message signatures a proposed standard in February 2024, and the IETF chartered a working group in October 2025 to profile it so a bot can prove which operator it belongs to. A parallel group is consolidating the per-vendor tokens into one vocabulary, and its drafts are worth checking before citing: the vocabulary narrowed from five terms to two between revisions, the current text says it lacks consensus, and the draft defining how to attach it has expired.
Six stages, in order
Strip the vocabulary away and a well-behaved fetch accounts for the same six things it did in 1994, with more places to look at each stage.
Why none of it binds by itself
Standards bodies write interoperation, not obligation, and they say so when the subject invites confusion. The AI preferences vocabulary draft: "Preferences do not themselves create rights, obligations, or prohibitions." Cloudflare, on its own policy: "content signals express preferences; they are not technical countermeasures against scraping." Neither is hedging. Both describe the mechanism accurately, which is the publication of an intention that some other body of law may or may not pick up.
Three routes by which it can bind anyway
A signal that creates no obligation of its own can still be the fact that decides a case. Three routes exist, they behave differently, and only one currently works on the passive signal alone.
Contract, and the letter that follows it
Terms of use are ordinary contract, and reach where intellectual property does not: in Ryanair v. PR Aviation (2015) the EU's Court of Justice held that where a database has neither copyright nor database-right protection, the Database Directive's user protections do not apply, so nothing stops the owner restricting use by contract instead. Facebook v. Power Ventures and Craigslist v. 3Taps are cited constantly as United States scraping cases, and what triggered both was an individually addressed cease-and-desist letter plus an address block, then continued access. Not robots.txt. No United States decision holds that robots.txt alone forms a contract or revokes authorisation, and the nearest case runs the other way: Field v. Google (2006) found an implied licence for caching partly because the site owner knew how to exclude the crawler and chose not to.
Computer-misuse statutes, which want a wall
This is the route people reach for first, because these statutes speak of circumventing protective measures. It is also the route that has now been tested on a passive signal and failed. The CFAA turns on access "without authorization", read narrowly by the Supreme Court in Van Buren (2021) as a "gates-up-or-down inquiry" and applied to scraping in hiQ v. LinkedIn (2022): "when a computer network generally permits public access to its data, a user's accessing that publicly available data will not constitute access without authorization" under that statute. LinkedIn still won on its contract claim, which is route one doing work route two would not.
The DMCA anti-circumvention provision looks more promising, and a court reached it directly in December 2025. In Ziff Davis v. OpenAI the Southern District of New York dismissed a section 1201 claim built on a crawler disregarding robots.txt, holding that such files
do not "effectively control" access to that content any more than a sign requesting that visitors "keep off the grass" effectively controls access to a lawn.
Ziff Davis v. OpenAI, S.D.N.Y., December 2025
That is one district court order in live litigation, not settled appellate law, but its reasoning tracks the statutory text elsewhere. Germany's section 202a reaches data "specially protected against unauthorised access, by circumventing the access protection", and the EU directive on attacks against information systems reaches access "committed by infringing a security measure". Each phrasing needs a wall, and a request is not one. Reddit's 2025 case against Perplexity is the one to watch, because it pleads section 1201 against alleged evasion of active blocks rather than of robots.txt, and that is probably where the line gets drawn.
Copyright and mining, where the signal is the hinge
One body of law has deliberately given a machine-readable signal legal force. Article 4 of the EU's DSM copyright directive permits text and data mining, on a condition.
The exception or limitation provided for in paragraph 1 shall apply on condition that the use of works and other subject matter referred to in that paragraph has not been expressly reserved by their rightholders in an appropriate manner, such as machine-readable means in the case of content made publicly available online.
Directive (EU) 2019/790, Article 4(3)
Recital 18 narrows "appropriate" for online content to machine-readable means, "including metadata and terms and conditions of a website or a service". The signal is not evidence of intent sitting beside the law here. It is the element the exception turns on. The AI Act then puts a duty on the other side of it: since 2 August 2025, providers of general-purpose AI (GPAI) models must have a policy to "identify and comply with, including through state-of-the-art technologies, a reservation of rights expressed pursuant to Article 4(3)".
Which raises what counts as machine-readable, and the first appellate answer is narrow. In Kneschke v. LAION (Higher Regional Court of Hamburg, 10 December 2025) a reservation written in ordinary prose in a site's terms did not satisfy Article 4(3), judged against what technology could reasonably parse at the time of the 2021 use; the court noted the answer could differ today, given what language models can now read, and allowed a further appeal. Outside the EU the picture inverts. Japan's Article 30-4 permits mining with no opt-out at all, Singapore's exception cannot be overridden by contract, and the United Kingdom's stays narrow while its government consults on adopting an opt-out model.
What this leaves you with
Ignoring a control is not automatically lawful, and honouring one is not automatically sufficient. Both questions are jurisdictional. Within the EU's reach, a machine-readable reservation is closer to a rule than a request. Under a computer-misuse statute, what matters is whether there was a wall and whether you went around it, which is a question about your conduct rather than about the file. Terms of use bind on their own terms nearly everywhere, whatever the crawler controls say.
Which protective measures carry legal restrictions in which jurisdictions is the subject of the next article in this series, and it is a longer answer than this one. Meanwhile the Law pages carry the per-jurisdiction posture we hold today, and LexLint itself will read your app's declared profile and report which of these attach to it.
Sources and further reading
Implementations that read the rules
- Google robots.txt parser and matcher library The production matcher Googlebot uses, released under Apache 2.0. The reference implementation for parsing questions.
- RFC 9309, Robots Exclusion Protocol The specification itself, and short enough to read in full.
- Python urllib.robotparser In the standard library, so there is no reason to hand-roll a parser.
- Scrapy, ROBOTSTXT_OBEY Worth reading closely: the framework default is off, while the settings file that scrapy startproject generates turns it on. Which you get depends on how the project was created.
- Common Crawl, CCBot How a large public crawl identifies itself, and what blocking it does.
- Google Search Central, create and submit a robots.txt file The publisher-side view, including the difference between blocking a crawl and preventing a listing.
- Internet Archive, robots.txt meant for search engines does not work well for web archives An operator explaining, in 2017, why it stopped treating search-oriented rules as binding on archival crawls. A considered dissent rather than a shrug.
- Text and Data Mining Reservation Protocol, Community Group final report The reservation format written specifically to satisfy Article 4(3).
- IETF AI Preferences working group Where the per-vendor signals are being consolidated into one vocabulary. Check each draft's status before relying on it.
Where the edges are being tested
- Consent in Crisis: The Rapid Decline of the AI Data Commons Data Provenance Initiative, 2024. A longitudinal audit of about 14,000 domains measuring how fast crawl restrictions spread, and how often a site's robots.txt and its terms of service contradict each other.
- Cloudflare, on undeclared crawlers reaching blocked content August 2025. Cloudflare describes blocking honeypot domains, then finding their contents answered back, and de-listed the operator from its verified bot programme. Contested by that operator, which argues a user-directed agent should not be judged as an indexing bot.
- Anti-circumvention: Reddit's case against Perplexity October 2025 complaint, pleaded under DMCA section 1201 against alleged evasion of active blocks. The case most likely to locate the boundary between a passive signal and a technological measure.
- Beyond copyright: Reddit's lawsuit against Anthropic June 2025, and instructive for what it does not plead: breach of contract, unjust enrichment and trespass rather than a standalone crawling wrong.
- Are robots.txt instructions legally binding? Ziff Davis v. OpenAI Analysis of the December 2025 order, including the reasoning behind the keep-off-the-grass comparison.
- Kneschke v. LAION, judgment of 10 December 2025 The first appellate reading of what machine-readable means under Article 4(3), and why a prose reservation did not qualify.
This article is a research summary of published law and published specifications, with every source linked above. It is not legal advice, it creates no attorney-client relationship, and it is not authorisation to access any system. Law cited as of 18 August 2026; the litigation described is live and some of it will move.