{"id":911,"date":"2026-08-26T06:57:41","date_gmt":"2026-08-26T06:57:41","guid":{"rendered":"https:\/\/allcloudhost.net\/blogs\/?p=911"},"modified":"2026-08-18T01:28:31","modified_gmt":"2026-08-18T01:28:31","slug":"chatgpt-fetch-bot-robots-txt","status":"publish","type":"post","link":"https:\/\/allcloudhost.net\/blogs\/chatgpt-fetch-bot-robots-txt\/","title":{"rendered":"OpenAI Says ChatGPT&#8217;s Own Fetch Bot Doesn&#8217;t Have to Follow Your Robots.txt"},"content":{"rendered":"<h2>A sentence in OpenAI&#8217;s crawler docs that most site owners haven&#8217;t read<\/h2>\n<p>Buried in OpenAI&#8217;s crawler documentation is a distinction that changes what a robots.txt file is genuinely good for. ChatGPT-User is the bot that fetches a specific page the moment a live user asks ChatGPT about it or pastes a link into a conversation. According to OpenAI, because that visit is triggered by a real person asking for that exact page in real time rather than a bot crawling the web on its own schedule, robots.txt rules &#8220;may not apply&#8221; to it. A file most publishers have treated for three decades as a binding instruction to any automated visitor turns out, in OpenAI&#8217;s own framing, to be closer to a suggestion this particular bot isn&#8217;t obligated to check.<\/p>\n<p>That&#8217;s not a theoretical reading of a footnote. TollBit&#8217;s 2026 State of the Bots report measured it directly: across European sites that explicitly disallowed ChatGPT-User in their robots.txt file, ChatGPT-User still reached disallowed URLs on close to half of them anyway, more than any other AI crawler TollBit tracked. Roughly 15% of European sites overall experienced some access to pages they&#8217;d blocked, and ChatGPT-User accounted for most of those breaches. If your site added a Disallow rule for OpenAI&#8217;s bots and assumed that settled the question, the data says it might not have.<\/p>\n<h2>Two OpenAI bots, two very different jobs<\/h2>\n<p>Part of what makes this confusing is that OpenAI runs more than one bot, and they don&#8217;t do the same thing. GPTBot is the training crawler, the one that scrapes broadly to build future model data and is the bot most &#8220;block AI training&#8221; guides are written about. OAI-SearchBot is the one that determines whether your pages show up as sources in ChatGPT Search results; block it and you lose that visibility entirely, the same way blocking Googlebot costs you organic rankings. ChatGPT-User is neither of those. It&#8217;s a fetch-on-demand agent that retrieves one specific page because a user asked about it in the moment, closer to a browser loading a page a person typed in than a crawler indexing your whole site.<\/p>\n<p>That distinction matters because a site can block ChatGPT-User in robots.txt, technically ask OpenAI not to fetch on a user&#8217;s behalf, and still show up fine in ChatGPT Search results, because OAI-SearchBot is a separate agent with separate rules. Conversely, blocking OAI-SearchBot costs you search visibility whether or not ChatGPT-User respects your rules at all. Site owners who set one blanket &#8220;block OpenAI&#8221; rule assuming it covers both cases are usually only affecting one of them, and per OpenAI&#8217;s own stated position, not necessarily the one they thought.<\/p>\n<h2>Why &#8220;the user asked for it&#8221; is doing a lot of work in that argument<\/h2>\n<p>OpenAI&#8217;s reasoning rests on a real distinction in how bots have historically worked: a robots.txt file was built to manage automated, unattended crawling, not to stop a browser from loading a page a human being explicitly requested. If ChatGPT-User is functioning more like a proxy for a person&#8217;s own browser than like a crawler indexing your site at scale, there&#8217;s a coherent argument that the traditional robots.txt contract doesn&#8217;t cleanly apply.<\/p>\n<p>The problem is that &#8220;may not apply&#8221; isn&#8217;t the same as &#8220;we ignore it deliberately,&#8221; and OpenAI has also said it respects the signal where it can, which leaves publishers in an unclear middle ground. A site owner reading a Disallow rule as an enforceable boundary and a bot vendor reading the same rule as one input among several aren&#8217;t operating from the same assumption, and TollBit&#8217;s numbers suggest that gap shows up in actual traffic on close to half the sites that tested it.<\/p>\n<h2>How this compares across the other AI companies<\/h2>\n<p>The interesting part isn&#8217;t that one company has an aggressive interpretation of robots.txt. It&#8217;s that the major AI labs don&#8217;t agree with each other. Perplexity takes essentially the same position as OpenAI for its user-triggered bot, Perplexity-User: because a person asked for the page, the company has said its fetch agent generally doesn&#8217;t check the file. Anthropic, by contrast, has stated that all three of its bots, including its own user-triggered fetch agent, respect robots.txt without the same carve-out.<\/p>\n<p>That means the exact same Disallow rule on your site produces three different outcomes depending on which company&#8217;s bot reads it: reliably honored by Anthropic&#8217;s crawlers, generally not checked by Perplexity&#8217;s user-triggered bot, and inconsistently honored by OpenAI&#8217;s, closer to half the time based on the European site data. A robots.txt file that felt like a single, universal instruction three years ago now behaves more like a set of separate requests, each interpreted under a different company&#8217;s internal policy, with no visible confirmation of which policy applied to a given visit.<\/p>\n<h2>What changes on September 15, and what that means for you now<\/h2>\n<p>Cloudflare has announced that starting September 15, 2026, it will begin enforcing AI crawler controls at the network layer by default for newly onboarded domains, blocking Training and Agent crawler categories automatically on ad-supported pages unless a site owner opts out. That&#8217;s a meaningfully different enforcement model: instead of relying on a bot to voluntarily check a text file sitting on your server, the network itself refuses the connection before the bot ever gets a response to interpret. For any AllCloudHost customer running a site behind Cloudflare, or considering it, this shifts the practical question from &#8220;did I write my robots.txt correctly&#8221; to &#8220;which network-layer controls does my host or CDN enforce, and did I check what the new default does to legitimate AI traffic I might want to keep.&#8221;<\/p>\n<p>That second half matters because not every business wants to block ChatGPT-User. If your customers are asking ChatGPT to look up your pricing page, your hours, or your product specs, a blanket AI-crawler block done at the network edge cuts that off just as effectively as a training bot you never wanted indexing your content in the first place. The fetch-on-demand bots are frequently the ones doing something a business would want to allow, while the bulk training crawlers are the ones most site owners are trying to stop in the first place.<\/p>\n<h2>What a working, differentiated setup looks like<\/h2>\n<p>A robots.txt file that reflects this distinction doesn&#8217;t need to be complicated, but it does need to name the bots separately instead of grouping every &#8220;OpenAI&#8221; or &#8220;AI&#8221; crawler under one blanket rule. A site that wants to keep fetch-on-demand access and search visibility while blocking bulk training might use a table like this to plan the rules before writing them:<\/p>\n<table>\n<thead>\n<tr>\n<th>Bot<\/th>\n<th>Purpose<\/th>\n<th>Typical rule for a business that wants AI visibility<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>GPTBot<\/td>\n<td>Bulk training crawl<\/td>\n<td>Disallow<\/td>\n<\/tr>\n<tr>\n<td>OAI-SearchBot<\/td>\n<td>ChatGPT Search visibility<\/td>\n<td>Allow<\/td>\n<\/tr>\n<tr>\n<td>ChatGPT-User<\/td>\n<td>Fetch-on-demand (per TollBit, inconsistently honored)<\/td>\n<td>Allow, but verify in logs<\/td>\n<\/tr>\n<tr>\n<td>PerplexityBot<\/td>\n<td>Perplexity&#8217;s own indexing crawler<\/td>\n<td>Allow, if search visibility matters there<\/td>\n<\/tr>\n<tr>\n<td>Perplexity-User<\/td>\n<td>Fetch-on-demand (also user-triggered, similar carve-out to OpenAI&#8217;s)<\/td>\n<td>Allow, but verify in logs<\/td>\n<\/tr>\n<tr>\n<td>ClaudeBot \/ anthropic-ai<\/td>\n<td>Training and search<\/td>\n<td>Per Anthropic&#8217;s stated policy, reliably honors robots.txt either way<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The &#8220;verify in logs&#8221; column matters more than it looks. A Disallow rule for a bot that doesn&#8217;t reliably check it isn&#8217;t harmless, it&#8217;s a rule that gives a false sense of control. For the two rows marked that way, the real access-control decision is happening in your server logs and, going forward, at the network layer, not in the text file.<\/p>\n<p>Three practical steps make more sense than a blanket rule either way. First, check server logs for `ChatGPT-User`, `OAI-SearchBot`, and `PerplexityBot` user-agent strings before assuming your current robots.txt is doing what you think; log evidence beats assumptions about compliance. Second, treat GPTBot (training), OAI-SearchBot (search visibility), and ChatGPT-User (fetch-on-demand) as three separate access-control decisions instead of one, since blocking all three the same way probably isn&#8217;t what most businesses actually want in every case. Third, if you&#8217;re on a CDN or host with network-layer bot controls, confirm what the default posture is before September 15 rather than discovering it after a new domain&#8217;s traffic changes; a control enforced at the network is far more reliable than one that depends on a third party voluntarily reading a text file, but it&#8217;s also easier to get wrong in the other direction by blocking traffic you wanted.<\/p>\n<p>Robots.txt isn&#8217;t obsolete. It&#8217;s still respected by traditional search crawlers and by some AI vendors&#8217; bots, and it remains worth maintaining correctly. What changed is the assumption that a Disallow line is self-enforcing across every automated visitor that might read it. For AI fetch bots specifically, whether that line does anything now depends on which company wrote the bot, and per OpenAI&#8217;s own documentation and TollBit&#8217;s measured data, the answer for ChatGPT-User is: not necessarily.<\/p>\n<p><a href=\"https:\/\/www.searchenginejournal.com\/openai-says-robots-txt-may-not-apply-to-chatgpts-fetch-bot\/585864\/\" target=\"_blank\" rel=\"noopener\">Source: Search Engine Journal<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A sentence in OpenAI&#8217;s crawler docs that most site owners haven&#8217;t read Buried in OpenAI&#8217;s crawler documentation is a distinction that changes\u2026<\/p>\n","protected":false},"author":2,"featured_media":910,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"rank_math_title":"ChatGPT Robots.txt: Does It Actually Apply? (2026)","rank_math_description":"OpenAI says ChatGPT-User doesn't have to follow robots.txt because a person asked for the page. Here's what that means for your site's access controls.","rank_math_focus_keyword":"chatgpt robots.txt, AI crawler access control, ChatGPT-User bot","rank_math_canonical_url":"","rank_math_robots":[],"footnotes":""},"categories":[8],"tags":[],"class_list":["post-911","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo-marketing"],"_links":{"self":[{"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/posts\/911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/comments?post=911"}],"version-history":[{"count":1,"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/posts\/911\/revisions"}],"predecessor-version":[{"id":969,"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/posts\/911\/revisions\/969"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/media\/910"}],"wp:attachment":[{"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/media?parent=911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/categories?post=911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/allcloudhost.net\/blogs\/wp-json\/wp\/v2\/tags?post=911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}