Allow or block ChatGPT Agent on Nginx: robots.txt and a map on the user agent

Add a “User-agent: ChatGPT Agent” group with “Disallow: /” to robots.txt, and to enforce it, map $http_user_agent to a flag for ChatGPT Agent and return 403 when it is set.

This response

You are ClaudeBot (Anthropic). Citable recognised you as an AI agent, so this is https://getcitable.in/crawlers/chatgpt-agent/nginx with the UI removed — the content only. A browser asking for the same address gets the full designed page.

ChatGPT Agent, and where Nginx keeps the rule

ChatGPT Agent is a crawler run by OpenAI. It reads pages at the moment a person asks a question, to answer it.

Nginx serves robots.txt as a file from the site’s root, like any other file. The server itself can also refuse a request by its user agent.

Step by step

What to paste

A group that names a crawler replaces the * group for that crawler; it does not add to it. Paths the * group closes are open to a crawler with its own group unless they are repeated there.

robots.txt, refusing ChatGPT Agent:

User-agent: ChatGPT Agent
Disallow: /

nginx.conf, refusing the request itself:

# http {}
map $http_user_agent $refuse_crawler {
    default 0;
    "~*ChatGPT Agent" 1;
}

# server {}
if ($refuse_crawler) {
    return 403;
}

robots.txt, allowing ChatGPT Agent:

User-agent: ChatGPT Agent
Allow: /

What trips people up

The map belongs in the http block, not inside server; in the wrong place nginx -t fails and a reload would too. The 403 also covers /robots.txt itself, so the refused crawler cannot read the file either.

Asked, or actually refused?

Yes. The 403 is the server’s own answer.

Check it yourself

A 200 means the name is let through; a 403 means something in front of the page refuses it. This tests the name from your own address. A platform that checks a crawler’s address as well may treat the real ChatGPT Agent differently.

The request:

curl -I -A "ChatGPT Agent" https://your-site.example/

Questions

How do I block ChatGPT Agent on Nginx?

Add a “User-agent: ChatGPT Agent” group with “Disallow: /” to robots.txt, and to enforce it, map $http_user_agent to a flag for ChatGPT Agent and return 403 when it is set.

How do I allow ChatGPT Agent on Nginx?

A crawler that robots.txt does not name follows the * group, so ChatGPT Agent needs no rule to be allowed. To allow it by name, add the Allow block.

Can Nginx actually stop ChatGPT Agent, or only ask it?

Yes. The 403 is the server’s own answer.

Does a rule for ChatGPT Agent affect Googlebot or my Google rankings?

No. Googlebot goes by its own name and follows its own rules; a group or a firewall rule for ChatGPT Agent does not apply to it.

Checked against Nginx's own documentation on 1 October 2026

Related

About Citable

Citable strips the UI from a website for AI agents and serves them only the content.

When an AI agent — ChatGPT, Claude, Perplexity or any of the 81 that Citable recognises — opens a page, Citable removes the theme, scripts, navigation and layout and serves only the content: the same facts, at the same URL, on the site's own domain. People and Google still get the full designed page.

How it works: https://getcitable.in/how-it-works · Summary for AI agents: https://getcitable.in/llms.txt


Source: https://getcitable.in/crawlers/chatgpt-agent/nginx · Citable · Run the free audit · llms.txt · getcitable@gmail.com