OpenAI’s own documentation lists four separate bots, and the two people mix up most are GPTBot and OAI-SearchBot (OpenAI). One trains the models. The other decides whether you show up when someone searches inside ChatGPT. Block the first thinking you blocked the second, and you have opted out of AI training. Block the second thinking you blocked the first, and you have opted out of existing.
OpenAI runs GPTBot for model training, OAI-SearchBot for surfacing your site in ChatGPT search, and ChatGPT-User for live fetches when a user asks. Blocking each is an independent setting. Blocking GPTBot keeps you out of training while staying citable. Blocking OAI-SearchBot removes you from ChatGPT’s search results entirely. The names are one word apart.
Which OpenAI bot does what?
Straight from OpenAI’s crawler documentation, with the current version tokens:
| User-agent | Job | Effect of blocking it |
|---|---|---|
OAI-SearchBot |
Surfaces sites in ChatGPT search features | You drop out of ChatGPT search citations |
ChatGPT-User |
User-initiated fetch inside ChatGPT and custom GPTs | ChatGPT cannot open a page a user points it at |
GPTBot |
Crawls content for training foundation models | Your content is excluded from OpenAI training |
OAI-AdsBot |
Validates ad landing pages, not used for training | Ad-related checks skip your pages |
The line that matters is OpenAI’s own: disallowing GPTBot and OAI-SearchBot are independent settings, and you can allow one while blocking the other (OpenAI). That independence is the whole game. It is what makes “found, not trained” possible instead of a slogan.
For the full cross-provider picture, here is the roster you are actually deciding on, verified against each vendor’s docs:
| User-agent | Provider | Role |
|---|---|---|
OAI-SearchBot |
OpenAI | Search index |
ChatGPT-User |
OpenAI | Live fetch |
GPTBot |
OpenAI | Training |
Claude-SearchBot |
Anthropic | Search index |
Claude-User |
Anthropic | Live fetch |
ClaudeBot |
Anthropic | Training |
PerplexityBot |
Perplexity | Search index |
Perplexity-User |
Perplexity | Live fetch |
Google-Extended |
Training token | |
Bingbot |
Microsoft | Search index (ChatGPT upstream) |
CCBot |
Common Crawl | Open training dataset |
Is blocking GPTBot actually free?
Not quite, and this is the caveat the checklists skip. On paper, GPTBot is training-only, so blocking it should cost you nothing in ChatGPT search, because OAI-SearchBot handles that. In practice the boundary between “what the model was trained on” and “what the model knows about your brand without looking it up” is not clean. A model’s background knowledge of your company still comes partly from what it absorbed during training. Block GPTBot and you are betting your entire presence rides on live retrieval through OAI-SearchBot, with nothing baked into the model’s memory. For a young brand with thin retrieval signals, that is a real trade, not a free lunch.
The genuinely free block is CCBot. It feeds Common Crawl, an open dataset, and your AI-search visibility does not route through it (Common Crawl). Blocking CCBot removes you from a training pipeline and costs you nothing anyone can measure. Everything else on the training side asks you to give up a little something.
How do you know which bot answered?
You can watermark it. In our own testing, native web search returned citation URLs carrying utm_source=openai appended to them. That tag is OpenAI’s search stamp: it tells you the answer came through OpenAI’s own search surface, OAI-SearchBot territory, not some substituted third-party index. It is a small forensic gift. It means you can verify which engine actually retrieved the page instead of trusting a vendor’s dashboard label. When we assert a citation came from OpenAI, we can point at the query string, not a logo.
That is the difference between the two OpenAI bots made concrete: OAI-SearchBot is the one whose fingerprints show up on the answer. Block it and there are no fingerprints, because there is no answer. If you want the deliberate version of this, allow the search and fetch bots and block the training ones on purpose. That is the found-not-trained posture, and our checker treats it as a pass rather than a warning.
The practical next step: grep your robots.txt for OAI-SearchBot and GPTBot separately, confirm you are allowing the first and deciding the second on purpose, and never Disallow the pair with a single wildcard. To see how your current rules read to each OpenAI bot, run a free scan.