What Google actually said
The thing that actually matters, which I got wrong on my own site
User-Agent: GPTBot
User-Agent: ClaudeBot
User-Agent: PerplexityBot
Empty. No Allow, no Disallow, nothing.
I had written them intending to explicitly welcome AI crawlers. What I had actually produced was six groups with no directives in them. And because robots.txt resolution picks the most specific matching group and ignores the rest, each of those crawlers was matching its own empty block and disregarding my * rules entirely, including the Disallow: /api/ I did want applied.
It happened to be permissive, so nothing was blocked. But it was permissive by accident. The intent was not stated anywhere a parser could act on, and a stricter interpretation of an empty group could have gone the other way.
The fix is boring and that is the point:
Ts