Allow or block Claude-User on Nginx: robots.txt and a map on the user agent

Add a “User-agent: Claude-User” group with “Disallow: /” to robots.txt, and to enforce it, map $http_user_agent to a flag for Claude-User 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/claude-user/nginx with the UI removed — the content only. A browser asking for the same address gets the full designed page.

Claude-User, and where Nginx keeps the rule

Claude-User is a crawler run by Anthropic. 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 Claude-User:

User-agent: Claude-User
Disallow: /

nginx.conf, refusing the request itself:

# http {}
map $http_user_agent $refuse_crawler {
    default 0;
    "~*Claude-User" 1;
}

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

robots.txt, allowing Claude-User:

User-agent: Claude-User
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 Claude-User differently.

The request:

curl -I -A "Claude-User" https://your-site.example/

Questions

How do I block Claude-User on Nginx?

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

How do I allow Claude-User on Nginx?

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

Can Nginx actually stop Claude-User, or only ask it?

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

Does a rule for Claude-User 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 Claude-User 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/claude-user/nginx · Citable · Run the free audit · llms.txt · getcitable@gmail.com