Fix guide cover: Google-Extended outranks the AI training token, with a Google chip and a broken-to-fixed window pair
Fix guide cover: Google-Extended outranks the AI training token, with a Google chip and a broken-to-fixed window pair
AI Readiness

Google-Extended Allow Overrides Your __usage_ai-training Opt-Out: The Precedence Table

A Google-Extended Allow line cancels the new __usage_ai-training opt-out at Google. See all nine token combinations, a checker script and the two-line fix.

11 Nov 2026 7 min read
#robots.txt#AI training#Google-Extended#__usage_ai-training

This guide covers B2 · Bot Access.

Table of contents

If your robots.txt has a Google-Extended group with Allow: /, adding the new __usage_ai-training opt-out does nothing at Google. Google said on 30 Oct 2026 that it will read the token as a Google-Extended disallow only when "Google-Extended is not explicitly specified". A named group wins. Many files name it with Allow: /, and that includes the B2 example block AIScan has been recommending.

QuestionAnswer
ProblemToken says no to training, but a Google-Extended group says yes
What Google readsThe named Google-Extended group, not the token
FixChange Google-Extended to Disallow: /, or delete its group
CheckB2, Explicit AI bot rules (bot_access)
Time5 minutes, plus a re-scan
When it mattersGoogle plans support in 2027; the file you publish now is the one it will read

Why the named group wins

The shared token comes from an Internet-Draft, draft-kelley-aipref-training-preference-signal-00, filed 30 Oct 2026. Its §4.5 sets the precedence rule in three lines: "Specific expressions SHOULD take precedence over general ones", consumers "MAY document that they interpret rules that match proprietary policy tokens as being more specific", and private agreements may override both.

Google is the first consumer to use that permission. Its Search Central post of 30 Oct 2026 says the token opt-out counts "as if the publisher had disallowed Google-Extended" only when Google-Extended is not named, and adds: "Websites that specifically allow Google-Extended are eligible to appear in responses and receive clicks via grounding in Gemini Apps." Google's common crawlers page now carries a note that it intends to support the token "in early 2027". So Google-Extended stays Google's own switch, and the token only fills the gap when that switch is missing.

That is a reasonable design. It is also a trap for anyone who copied a starter file a year ago and is now adding one line to opt out of training everywhere.

The precedence table: nine files, one reading each

We wrote nine robots.txt files, one per combination, and ran each through a 39-line checker on Python 3.11.18 on 11 Nov 2026. The checker groups lines the way RFC 9309 §2.1 and §2.2 define, and it does not let User-agent: * stand in for the token, as draft §4.2 requires. The outcome column quotes or follows Google's wording. Where Google has said nothing, the cell says so.

Token groupGoogle-Extended groupWhat Google says it will doSource
absentabsentNo token preference; your * rules apply as todayDraft §4.2
absentAllow: /Gemini training and grounding allowedGoogle crawler docs
absentDisallow: /Opted out of Gemini training and groundingGoogle crawler docs
Allow: /absentNot stated by Googlenone
Allow: /Allow: /AllowedGoogle crawler docs
Allow: /Disallow: /Opted out; the named group winsGoogle, 30 Oct 2026
Disallow: /absentRead as a Google-Extended disallowGoogle, 30 Oct 2026
Disallow: /Allow: /Allowed. The token is ignored at GoogleGoogle, 30 Oct 2026
Disallow: /Disallow: /Opted outGoogle, 30 Oct 2026

Row 8 is the one that catches people. Two more cases from the same lab are worth knowing:

  • A partial Google-Extended group still counts as "specified". With the token on Disallow: / and Google-Extended on Disallow: /private/ only, the checker reads / as allowed for Google-Extended. Under RFC 9309 §2.2.2 a path with no matching rule is allowed. This is our reading of Google's wording plus the RFC, not something Google has spelled out.
  • Stacking the two tokens in one group is fine here. User-Agent: __usage_ai-training directly above User-agent: Google-Extended, then Disallow: /, gives both tokens the same rule. It is a different story with User-agent: *, which our policy token guide covers in its lab.

Other providers are a separate question. The draft's precedence rule is a SHOULD and a MAY, and OpenAI's 30 Oct page does not say whether GPTBot or the token wins when they disagree. This table is about Google only, and it describes Google's stated plan for 2027, not behaviour you can observe today.

Find out which row your file is in

Step 1. Read the served file, not the one in your repo. A CDN or plugin can rewrite it.

curl -s https://yoursite.com/robots.txt | grep -n -i -A3 -E '^user-agent: *(google-extended|__usage_ai-training)'

If Google-Extended appears with Allow: under it, you are in row 2, 5 or 8.

Step 2. Run the checker for an exact verdict. It is the lab script, cut to the part you need:

import sys, urllib.request

def groups(text):
    out, agents, rules, last = [], [], [], None
    for raw in text.splitlines():
        line = raw.split("#", 1)[0].strip()
        if ":" not in line:
            continue
        key, val = (s.strip() for s in line.split(":", 1))
        if key.lower() == "user-agent":
            if last == "rule":
                out.append((agents, rules)); agents, rules = [], []
            agents.append(val.lower()); last = "ua"
        elif key.lower() in ("allow", "disallow") and agents:
            rules.append((key.lower(), val)); last = "rule"
    if agents:
        out.append((agents, rules))
    return out

def verdict(text, token, path="/"):
    rules = [r for a, rs in groups(text) if token in a for r in rs]
    if not rules:
        return None
    hits = [(len(v), k == "allow") for k, v in rules if v and path.startswith(v)]
    return max(hits)[1] if hits else True

text = urllib.request.urlopen(sys.argv[1]).read().decode()
print("token:", verdict(text, "__usage_ai-training"), "google-extended:", verdict(text, "google-extended"))

Run it as python3 check.py https://yoursite.com/robots.txt. None means no group names that token, True means allowed, False means disallowed. Expected output for a correct opt-out:

token: False google-extended: False

token: False google-extended: True is row 8.

The fix

You have two clean options. Both reach the same state at Google.

Option A: say it twice, the same way. Keep the named group and make it agree with the token:

User-Agent: __usage_ai-training
Disallow: /

User-agent: Google-Extended
Disallow: /

Option B: delete the Google-Extended group and let the token speak for Google from 2027. Until Google ships support, though, nothing in your file opts you out of Gemini training, so Option A is the safer choice today.

Keep the blank line between groups. Without it, both tokens join one group, which is harmless here but turns harmful the moment someone adds User-agent: * to the stack.

If you want the opposite outcome, training out but Gemini grounding in, Google's wording gives you no split. One Google-Extended group controls both, so you have to pick one. That is the honest trade-off behind row 8, and some sites will choose Allow: / on purpose. The point is to choose it, not inherit it.

On WordPress, edit robots.txt with ThinkRank, which keeps the file in one place instead of three plugins fighting over it, and migrates settings from Rank Math, Yoast, AIOSEO and SEOPress. Yoast and Rank Math also have robots.txt editors if you already use them. On any other stack, edit the file your server sends, which our platform-by-platform token guide maps out.

About AIScan's own example. Our B2 guidance has shown a block with User-agent: Google-Extended and Allow: /. That block is right if you want to be in Gemini, and wrong if you add the token to leave training. B2 passes on explicit named rules either way, so the scan will not flag row 8 for you. The checker above will.

Verify it with AIScan, then by hand

Run npx aiscan-cli yoursite.com and look at B2, Explicit AI bot rules. It should list Google-Extended among your named groups. Then run the checker and confirm google-extended: False if you meant to opt out. For the full starter file with search crawlers kept open, see the robots.txt starter for AI crawlers, and for what Google-Extended does not control, read what you can control in Google AI Overviews.

Your next step

Scan your site at aiscan.site, open the B2 check page, and fix row 8 before 2027 makes it matter. More short fixes are in the guides.

Frequently asked questions

I added the __usage_ai-training token but Google still lists my site as eligible for Gemini grounding. Why?

Your file probably names Google-Extended with Allow: /. Google said on 30 Oct 2026 that the token counts as a Google-Extended disallow only when Google-Extended is not explicitly specified. Change that group to Disallow: / or remove it.

My robots.txt checker says I am opted out of AI training, but Google-Extended is set to Allow. Which is right?

For Google, the Google-Extended group. A checker that reports only the token, or that lets User-agent: * stand in for it, gives a reading Google will not use. Check both tokens by name.

Why does the AIScan B2 check pass when my token and Google-Extended disagree?

B2 grades whether you have explicit rules for named AI crawlers, not whether those rules agree with each other. A file in the conflicting row passes B2. Use the checker in this post to catch the conflict.

Does Google read the __usage_ai-training token today?

No. Google's 30 Oct 2026 post says it aims to support the token in 2027, and its crawler documentation says early 2027. Google-Extended is the control that works now.

What does Google do if the token says Allow and Google-Extended is absent?

Google has not said. Its post only describes the opt-out case. The draft reads an Allow as a preference in favour of training, but treat that cell as unknown for Google.

I only disallowed /private/ for Google-Extended. Is the rest of my site opted out by the token?

Probably not at Google. The Google-Extended group is still explicitly specified, and under RFC 9309 a path with no matching rule is allowed. This is our reading of Google's wording plus the RFC; Google has not addressed partial groups.

Can I opt out of Gemini training but stay in Gemini grounding?

Not with Google's current controls. One Google-Extended group covers both training and grounding in Gemini Apps, so you choose one setting for both.

Does the same precedence apply to GPTBot and OpenAI?

OpenAI has not said. Its 30 Oct 2026 page says existing crawler controls will continue to apply, and the draft's precedence rule is only a SHOULD. Keep GPTBot and the token consistent if you want one answer.

M Asif Rahman

About the author

Entrepreneur, curious about AI

I have been building companies for a long time, and lately most of my curiosity goes to AI. AIScan is a small personal project I built on a flight from Dubai to Narita. I use it to understand how ready the web is for AI agents, and I share what the scans teach me.

Related guides

Browse every guide by check and platform