TL;DR
6 min readOpenAI documents ChatGPT-User as a user-triggered fetch agent that loads a page only when a person or a Custom GPT inside ChatGPT asks it to open that link, separate from GPTBot's automatic crawl for training and OAI-SearchBot's automatic crawl for ChatGPT's search feature. OpenAI's own bot documentation gives each one its own user agent string and its own robots.txt behavior, and it states plainly that ChatGPT-User is "not used for crawling the web in an automatic fashion."
What is ChatGPT-User?
OpenAI documents ChatGPT-User as the agent that fetches a page only when a person, or a Custom GPT running inside ChatGPT, asks ChatGPT to open a specific link, according to OpenAI's own bot documentation at developers.openai.com, checked 9 September 2026. That documentation states directly that ChatGPT-User "is not used for crawling the web in an automatic fashion," which separates it from the two other OpenAI agents that do crawl on their own schedule. A request from ChatGPT-User exists because someone, in that moment, asked for that exact page.
What is ChatGPT-User's exact user agent string?
ChatGPT-User identifies itself with the string Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot, per OpenAI's own bot documentation. OpenAI publishes the current IP ranges this agent sends requests from as JSON at openai.com/chatgpt-user.json, giving a server-side way to confirm a request beyond trusting the header text. Match both the token inside the user agent string and the source IP address before treating a request as genuine.
| Agent | User agent string | Trigger |
|---|---|---|
| ChatGPT-User | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot | A person or Custom GPT asks ChatGPT to open a link |
| GPTBot | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot | Automatic crawl for foundation model training |
| OAI-SearchBot | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot | Automatic crawl to surface sites in ChatGPT's search feature |
How does ChatGPT-User differ from GPTBot?
GPTBot crawls a site on its own schedule, and OpenAI's documentation ties GPTBot directly to training data, stating the crawl is used "to make our generative AI foundation models more useful and safe." ChatGPT-User instead fires once, in response to one specific request from one specific conversation, and touches only the page that conversation named. The practical difference is timing and cause: a GPTBot request can arrive at any time as part of a scheduled crawl, while a ChatGPT-User request only ever follows a live question that mentioned a URL.
How does ChatGPT-User differ from OAI-SearchBot?
OAI-SearchBot also crawls automatically, on its own schedule, but OpenAI's documentation ties its purpose to a different outcome: surfacing sites in ChatGPT's search feature rather than training a model. ChatGPT-User shares OAI-SearchBot's connection to ChatGPT's live product surface, but the two operate on opposite triggers, one running a standing crawl and the other firing on demand for a single conversation. A site that wants to appear when ChatGPT searches the web, without contributing training data, is choosing to allow OAI-SearchBot specifically, which is a separate decision from allowing GPTBot or ChatGPT-User.

Can you block ChatGPT-User in robots.txt?
A standard Disallow rule under a User-agent: ChatGPT-User block is the documented syntax, but OpenAI's own bot documentation notes that robots.txt rules may not apply to this agent the way they do to a crawler, since the request is triggered by a live user action rather than a scheduled crawl. The rule still tells a compliant request not to proceed, so it is worth setting regardless. What it will not do is stop a person from asking ChatGPT about your page in ways that do not require ChatGPT-User to fetch it directly.
User-agent: ChatGPT-User
Disallow: /
How do you block GPTBot and OAI-SearchBot?
Add a separate named block for each agent you want to control, since a rule naming one has no effect on the others.
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
OpenAI's documentation states a robots.txt change takes about 24 hours to reach its systems, so expect a delay of roughly a day rather than an immediate effect. Verify any request against the published IP ranges at openai.com/gptbot.json and openai.com/searchbot.json before assuming a blocked crawler ignored the rule, since a spoofed user agent string is a separate problem from a rule that has not yet propagated.
- GPTBot crawls to train OpenAI's foundation models
- OAI-SearchBot crawls to power ChatGPT's search feature
- Both accept a standard robots.txt Disallow rule
- ChatGPT-User loads one page a person or Custom GPT just asked for
- OpenAI states it is not used for automatic crawling
- OpenAI notes robots.txt rules may not apply the same way
What actually stops when you block each one?
Blocking GPTBot stops the scheduled crawl OpenAI ties to foundation model training, so pages behind that rule stop feeding future model updates through this specific route. Blocking OAI-SearchBot stops the scheduled crawl OpenAI ties to ChatGPT's search feature, so pages behind that rule become less likely to surface when someone asks ChatGPT to search the web. Blocking ChatGPT-User targets a request that only ever happens because a person already named your URL in a live conversation, so the rule mainly withholds live page content from that one fetch rather than removing the site from any standing crawl. Deciding which of the three to block is really deciding which relationship with ChatGPT you want to keep: training input, search visibility, or the ability to answer a direct question about a page someone already found.
Whichever combination a site chooses, the more useful question is what ChatGPT says once it has already answered using whatever content it could reach. AI search brand monitoring tracks where ChatGPT, Claude and Gemini cite a brand in their answers, which is the outcome that matters once any of these three requests has already run. The same three-crawler split shows up in other AI stacks: CCBot documents Common Crawl's equivalent, an open archive other labs filter into training sets rather than a direct crawl, and Applebot-Extended documents Apple's version of the same search-versus-training divide. Write each rule inside the same file, following the syntax covered in the full robots.txt guide.
Frequently Asked Questions
Does blocking GPTBot also block ChatGPT-User?
No. OpenAI's documentation gives each agent its own name and its own robots.txt block, so a rule naming GPTBot has no effect on ChatGPT-User or OAI-SearchBot. Write a separate block for each agent you want to control.

Why might a ChatGPT-User robots.txt rule not fully work?
OpenAI's own documentation states that robots.txt rules may not apply to ChatGPT-User in the same way they apply to a scheduled crawler, because the request follows a live user action rather than an automatic crawl. The rule is still the documented way to signal intent, even though OpenAI notes this limitation.
What is OAI-SearchBot's exact user agent string?
OAI-SearchBot identifies itself as Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot, according to OpenAI's own bot documentation.
How long does an OpenAI robots.txt change take to apply?
OpenAI's documentation states it takes about 24 hours for a robots.txt update to reach OpenAI's systems. Expect roughly a day of delay before a new rule for GPTBot or OAI-SearchBot takes effect.
RedReplier
Get Started
Reddit, X, Bluesky & HN
Real-time intent alerts
Unlimited AI replies
Ranked by buyer intent
Where does OpenAI publish IP ranges for these agents?
At openai.com/gptbot.json, openai.com/searchbot.json and openai.com/chatgpt-user.json, one file per agent, according to OpenAI's own bot documentation. Match a request's source IP against the relevant file before trusting its user agent string alone.
Does GPTBot train OpenAI's models on every page it crawls?
OpenAI's documentation ties GPTBot's crawl to making its generative AI foundation models "more useful and safe," without listing exceptions by page. A site that wants no page included in that process blocks GPTBot by name in robots.txt.
How does CCBot's training setup compare to GPTBot's?
CCBot documents Common Crawl's equivalent, an open archive that other labs filter into training sets rather than a direct crawl run by the lab itself. GPTBot instead crawls a site directly on OpenAI's own schedule for its own foundation models. A site weighing both faces two separate decisions: whether to let OpenAI crawl directly, and whether to let its pages sit in the open archive other labs draw from.
How does Applebot-Extended's split compare to OpenAI's three agents?
Applebot-Extended documents Apple's version of the same search-versus-training divide that separates GPTBot from OAI-SearchBot. A site handling OpenAI's three agents faces nearly the same decision when it configures Apple's crawler: training input or search visibility. The full comparison lives in the Applebot-Extended guide.
Do GPTBot, OAI-SearchBot, and ChatGPT-User rules belong in the same robots.txt file?
Yes, each rule sits in its own named User-agent block inside one robots.txt file rather than in three separate files. A rule naming one agent has no effect on the others, so each block needs its own Disallow line. The full robots.txt guide covers the exact syntax for stacking multiple agent blocks.
Does AI brand monitoring track the ChatGPT-User request itself?
It tracks what ChatGPT, Claude and Gemini say once they have already answered, not the individual fetch request. That citation is the outcome that matters after any of the three OpenAI agents has already run, whether a scheduled crawl or a single ChatGPT-User fetch. AI search brand monitoring follows the answer text itself rather than the crawl or fetch that fed it.
See us more often in Google
One click marks RedReplier as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.
Before you go...
RedReplier
Catch every buyer asking for what you sell
RedReplier watches Reddit, X, Bluesky and Hacker News in real time, ranks every thread by buyer intent, and drafts your reply, so you get there first.
Reddit, X, Bluesky & HN
Real-time intent alerts
Unlimited AI replies
Ranked by buyer intent
Related Articles


Blocking OAI-SearchBot vs GPTBot Costs You Two Different Things
OpenAI's OAI-SearchBot vs GPTBot split decides two questions: whether ChatGPT search can surface your pages, and whether those pages train OpenAI's models.


What CCBot Collects for Common Crawl's Open Web Archive
Common Crawl's crawler CCBot builds a free, open web archive that outside AI labs filter into training sets, and one robots.txt rule controls all of it.


How Cloudflare Pay Per Crawl Charges AI Bots Per Page
Introduced by Cloudflare, Cloudflare Pay Per Crawl returns an HTTP 402 response until an AI crawler pays the exact per-request price a site owner set.

