GPTBot vs ChatGPT-User vs OAI-SearchBot

OpenAI runs three public agents with three tokens, three IP range lists and three different consequences for blocking. They are routinely confused in robots.txt files, which is how sites end up blocking ChatGPT citations while trying to opt out of training.

| | GPTBot | OAI-SearchBot | ChatGPT-User | | --- | --- | --- | --- | | Kind | training | search | live-fetch | | Fires when | on OpenAI's schedule | on OpenAI's schedule | a person asks ChatGPT about a page | | A hit means | page collected for training | page indexed for ChatGPT search | one reader, via the assistant | | Blocking affects | future training data | ChatGPT search results and citations | ChatGPT's ability to read the page in a chat | | IP ranges published | yes, own list | yes, own list | yes, own list | | Commonly spoofed | rarely | rarely | often |

The usual configuration

Allow OAI-SearchBot and ChatGPT-User, decide about GPTBot on its own. That keeps your pages citable and readable inside ChatGPT while opting out of training if you want to. Rules are per token, so a Disallow under GPTBot does nothing to the other two.

User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: ChatGPT-User
Allow: /

In the report

agenttraffic shows ChatGPT-User and OAI-SearchBot in the AI crawlers section by default and hides GPTBot behind --show-training, because only the first two map to something a person sees. Each row carries its own verified and spoofed counts against the matching OpenAI range list.