Safe Official docs AI & LLM Bots

ChatGPT-User/2.0

Operated by OpenAI

Quick Facts

User-Agent:
ChatGPT-User
Category:
AI & LLM Bots
Operator:
OpenAI
Safety:
Safe
Blocking Impact:
Low - No SEO ranking impact
SEO Impact Score:
2/10

Confirmed by the operator

OpenAI names ChatGPT-User on its own documentation page, linked above. The token, purpose and robots.txt behaviour on this profile come from that page, re-checked on October 19, 2026.

What is ChatGPT-User/2.0?

ChatGPT-User is the agent ChatGPT and Custom GPTs use when a person asks them to visit a page. OpenAI says it "is not used for crawling the web in an automatic fashion".

OpenAI states ChatGPT-User is not used for automatic crawling or to decide Search inclusion; training is GPTBot. It identifies itself with the token ChatGPT-User. OpenAI documents it at developers.openai.com.

What happens if you block ChatGPT-User/2.0?

Blocking it stops ChatGPT from opening your pages when a user asks, which can mean fewer citations and links from ChatGPT. It has no effect on Google or Bing.
Block this bot - it provides no SEO benefit and wastes crawl budget.

Want to see whether ChatGPT-User/2.0 actually visits you? Read how do I monitor AI bot traffic to my website?

How to block ChatGPT-User/2.0 with robots.txt

<code>User-agent: ChatGPT-User</code> - Matching is case-insensitive. Robots.txt is fetched from the root of each subdomain separately. For aggressive bots, supplement with server-level blocking for guaranteed enforcement.

Block completely (robots.txt)
User-agent: ChatGPT-User Disallow: /
Allow all (robots.txt)
User-agent: ChatGPT-User Allow: /
Block private only (robots.txt)
User-agent: ChatGPT-User Disallow: /private/ Disallow: /api/ Disallow: /admin/ Allow: /
Nginx server block
# Nginx: Hard-block ChatGPT-User/2.0 if ($http_user_agent ~* "ChatGPT\-User") { return 403 "Bot blocked"; }
Apache .htaccess
# Apache: Hard-block ChatGPT-User/2.0 SetEnvIfNoCase User-Agent "ChatGPT\-User" bad_bot Order Allow,Deny Allow from all Deny from env=bad_bot
Meta robots tag
<meta name="robots" content="noindex, nofollow">
X-Robots-Tag header
X-Robots-Tag: noindex, nofollow

Is ChatGPT-User/2.0 safe to allow?

Yes. ChatGPT-User/2.0 is a documented bot: OpenAI publishes a page that names it and explains what it does. Note how it treats robots.txt (below) before relying on a Disallow rule.

What does ChatGPT-User/2.0 do?

From OpenAI's own documentation.

  • ChatGPT-User is the agent ChatGPT and Custom GPTs use when a person asks them to visit a page.
  • Not used to train AI models, according to the operator
  • Blocking it stops ChatGPT from opening your pages when a user asks, which can mean fewer citations and links from ChatGPT. It has no effect on Google or Bing.

ChatGPT-User/2.0 in context

ChatGPT-User/2.0 is a user-triggered agent operated by OpenAI. In plain terms, it fetches a page when a person asks an assistant or app to open it. Our database files it under AI and LLM crawlers and ranks it Tier 1, the small set whose absence you would notice in AI answers or search results. 14 of the 104 AI and LLM crawlers in our database share this tier.

Its safety rating is safe and its blocking impact is low. So the decision about ChatGPT-User/2.0 rests on what you want from OpenAI, not on its behaviour. How we rate safety and impact.

How site owners treat ChatGPT-User/2.0

In our own study of robots.txt files across the Tranco top 10,000 sites (fetched October 20, 2026, 5,583 valid files), 661 files (11.8%) name ChatGPT-User in a User-agent line, and 530 (9.5%) block it from the homepage. 330 of those blocks come from a group written for this crawler by name, and 200 come from a broad User-agent: * rule that catches it by accident. Larger sites are stricter: 13.4% of the top 1,000 block it, against 10.1% of the middle band and 8.4% of the tail.

Does it follow robots.txt?

ChatGPT-User/2.0's robots.txt behaviour is documented with exceptions or has been publicly questioned, so pair a ChatGPT-User/2.0 rule in robots.txt with a server-side rule if blocking matters to you.

OpenAI crawlers and close alternatives

ChatGPT-User/2.0 is one of 7 OpenAI crawlers in our database. A User-agent: ChatGPT-User group controls ChatGPT-User/2.0 only; the other OpenAI tokens below need their own lines.

  • ChatGPT-User: this crawler (Tier 1)
  • ChatGPT Agent: ChatGPT Agent (Cloud browser), fetches a page when a person asks an assistant or app to open it (Tier 1)
  • ChatGPT Operator: ChatGPT Operator (Cloudflare name), fetches a page when a person asks an assistant or app to open it (Tier 1)
  • ChatGPT-User/2.0: ChatGPT Search v2, fetches a page when a person asks an assistant or app to open it (Tier 1)
  • GPTBot: ChatGPT Training, collects pages to train AI models (Tier 1)
  • OAI-AdsBot: OpenAI Ads Validator, checks pages for an SEO, uptime or analytics service (Tier 2)
  • OAI-SearchBot: OpenAI Search, fetches a page when a person asks an assistant or app to open it (Tier 1)

To give ChatGPT-User/2.0 the same answer as its siblings, stack User-agent: ChatGPT-User with their lines above one set of rules; to treat ChatGPT-User/2.0 differently, give it its own group.

Other AI and LLM crawlers that do the same job (fetches a page when a person asks an assistant or app to open it) include Claude-SearchBot from Anthropic, Claude-User from Anthropic, GrokAgent from xAI, muse- from Meta, AI2Bot-DeepResearchEval from Allen Institute for AI, AmazonBuyForMe from Amazon. Deciding about ChatGPT-User/2.0 is usually a decision about the whole group, so check how your file treats these too.

We first recorded ChatGPT-User on March 17, 2026. OpenAI documents it on developers.openai.com, and we recheck that page before each release.

Which rule ChatGPT-User/2.0 actually follows

ChatGPT-User/2.0 reads exactly one group in robots.txt, the most specific one that names ChatGPT-User, and never combines rules across groups. This short file shows the trap:

User-agent: *
Disallow: /private/

User-agent: ChatGPT-User
Disallow: /drafts/
  1. Find the group. ChatGPT-User/2.0 looks for a group naming ChatGPT-User. One exists, so it ignores User-agent: * completely.
  2. Apply only that group. It is refused /drafts/ and nothing else.
  3. The surprise. /private/ is open to ChatGPT-User/2.0, because that rule lives in the * group it no longer reads. To keep it out of both, repeat Disallow: /private/ inside its own group.
Test yourself: does a rule under User-agent: * apply to ChatGPT-User/2.0 if the file also has a User-agent: ChatGPT-User group?

No. Once a group names it, ChatGPT-User/2.0 reads only that group. Put every rule you want it to follow inside its own group.

Test yourself: will blocking ChatGPT-User/2.0 remove your pages from AI answers?

Often, yes. ChatGPT-User/2.0 is a user-triggered agent, so pages it cannot fetch can drop out of the answers or results it supports.

Test yourself: is User-agent: chatgpt-user the same as User-agent: ChatGPT-User?

Yes. RFC 9309 makes user-agent matching case-insensitive. Paths are a different story: Disallow: /Blog/ does not block /blog/.

Should you allow ChatGPT-User/2.0? Decide by situation

Recommended setting for ChatGPT-User/2.0 by type of site
If you are...Recommended setting
You publish content and want AI answers to cite itAllow it. ChatGPT-User/2.0 fetches pages for answers, so blocking it can remove you from them.
You license content and want to stop AI trainingBlocking it does not stop training, because ChatGPT-User/2.0 is a user-triggered agent. Block the operator's training crawler instead.
You run an online shopAllow it on product and category pages, which are the pages shoppers ask assistants about.
Your server is under load from botsRate-limit before blocking. It is rated safe in our database.

Check ChatGPT-User/2.0 on your own site

  1. Open /robots.txt on your domain and search for ChatGPT-User. If it is not named, it follows User-agent: *.
  2. List the Disallow lines in the group ChatGPT-User/2.0 follows and test your key URLs against them; the longest match wins, and Allow wins a tie.
  3. Look beyond the file. A firewall or bot manager can refuse ChatGPT-User/2.0 even when robots.txt allows it, and that never shows in the file.
  4. Run our crawler access checker to see how ChatGPT-User/2.0 and every other crawler we track are treated in one pass, including firewall refusals.

Common mistakes with ChatGPT-User/2.0

The errors we see most often with ChatGPT-User/2.0 in the files and firewalls we test:

  1. Assuming a robots.txt rule will stop ChatGPT-User/2.0. User-triggered fetches act for a person, and some operators say robots.txt may not apply to them. Check the operator's statement above.
  2. Blocking ChatGPT-User/2.0 as if it were a bulk crawler. It fetches one page because a person asked; blocking it means that person's assistant cannot read your page.
  3. Counting ChatGPT-User/2.0 visits as crawl volume. Each request maps to a real user question, which makes the paths it requests a useful signal of what people ask about you.

All three hide inside a file that looks correct, so check ChatGPT-User/2.0 from outside after every change.

Spotting ChatGPT-User/2.0 in your logs

robots.txt says what ChatGPT-User/2.0 may do; your access logs show what it actually did.

Count requests

On a server with standard Nginx or Apache logs, this counts matching requests per day (adjust the log path for your host):

grep -iE "ChatGPT-User" /var/log/nginx/access.log \
  | awk '{print $4}' | cut -d: -f1 | sort | uniq -c

And this shows which paths it requested most, which is the quickest way to see whether your Disallow lines are being respected:

grep -iE "ChatGPT-User" /var/log/nginx/access.log \
  | awk '{print $7}' | sort | uniq -c | sort -rn | head -20

Check the requests are genuine

Anyone can send the ChatGPT-User/2.0 user-agent, so confirm the source before acting on a match:

  • ChatGPT-User: compare each address with the ranges at openai.com/chatgpt-user.json. A request claiming to be ChatGPT-User/2.0 from outside them is not genuine.

Frequently Asked Questions

What is the official user-agent string for ChatGPT-User/2.0?
The official user-agent string for ChatGPT-User/2.0 is: ChatGPT-User. This is the exact string you must use in robots.txt, Nginx, Apache, or Cloudflare firewall rules to target this bot. User-agent matching in robots.txt is case-insensitive, but the string must be spelled correctly. You can verify that a request genuinely comes from ChatGPT-User/2.0 by performing a reverse-DNS lookup on the source IP - legitimate bots resolve back to their operator's domain.
Is ChatGPT-User/2.0 safe?
Yes. ChatGPT-User/2.0 is a documented bot: OpenAI publishes a page that names it and explains what it does. Note how it treats robots.txt (below) before relying on a Disallow rule.
Will blocking ChatGPT-User/2.0 hurt my SEO?
Blocking it stops ChatGPT from opening your pages when a user asks, which can mean fewer citations and links from ChatGPT. It has no effect on Google or Bing.
How do I block ChatGPT-User/2.0 in robots.txt?
Add the following lines to your /robots.txt file:
User-agent: ChatGPT-User
Disallow: /

This instructs ChatGPT-User/2.0 not to crawl any path on your site. The Disallow: / directive covers the entire domain including subfolders. To only block specific sections, replace / with the path (e.g., Disallow: /blog/). Note: robots.txt is publicly readable - any bot or human can inspect it at yourdomain.com/robots.txt.
Does ChatGPT-User/2.0 respect robots.txt?
Not reliably. OpenAI: "Because these actions are initiated by a user, robots.txt rules may not apply." Use a firewall rule if you need to stop it.
How do I verify if ChatGPT-User/2.0 is crawling my site?
Search your web server access logs for the string ChatGPT-User (case-insensitive grep: grep -i "ChatGPT-User" /var/log/nginx/access.log). You can also check Google Search Console → Coverage → Crawl Stats for Googlebot variants. For ChatGPT-User/2.0 specifically, filter by user-agent in your log analysis tool (GoAccess, AWStats, etc.).
What is the crawl frequency of ChatGPT-User/2.0?
Crawl frequency data for ChatGPT-User/2.0 is not publicly documented. Monitor your logs to understand actual visit patterns.
Can I block ChatGPT-User/2.0 from specific pages only?
Yes. Instead of a global Disallow: / you can restrict ChatGPT-User/2.0 to specific paths:
User-agent: ChatGPT-User
Disallow: /private/
Disallow: /staging/
Allow: /

This allows ChatGPT-User/2.0 everywhere except the listed paths. Path matching in robots.txt uses prefix matching - Disallow: /private/ blocks /private/page.html but NOT /public/private/.
Does blocking ChatGPT-User/2.0 prevent AI training on my content?
ChatGPT-User/2.0 is not used for AI training, according to OpenAI. OpenAI states ChatGPT-User is not used for automatic crawling or to decide Search inclusion; training is GPTBot.
Is there an alternative to robots.txt to opt out of ChatGPT-User/2.0?
The opt-out OpenAI documents is robots.txt. A firewall, CDN or server rule that returns 403 for ChatGPT-User enforces it. Per-bot meta tags and llms.txt are not opt-out mechanisms any major operator documents.