cc-plugin-privacy is a mod built into Claude Code since 2.1.317.5 It is on by default and stops shell calls that put your signed-in account email in a User-Agent.4,2 It is a partial check that can also catch local-only commands.3 To turn it off, set "cc-plugin-privacy@builtin": false under enabledPlugins in your user settings.2
Checked November 6, 2026, as of Claude Code 2.1.317 and 2.1.318. Claude Code ships often, so check the release notes for your version.
Why Claude Code has this mod
As of 2.1.318, Claude Code gives the model your signed-in account address to identify you.2 A commenter writing as a Claude Code team member says it was added because Claude made up names for things like @author tags, and that Claude sometimes put the address in the User-Agent when it wrote a command such as curl.7 The developer who published the mod's source gives the reason: some sites, Wikipedia for one, ask scripted clients to identify themselves, and Claude tended to follow that with a contact address.4,6
A user reported this in issue #107757, and the Hacker News thread on it passed 1,000 points.4,8 We found no published count of how often it happened or which sites received an address.
cc-plugin-privacy is one of the mods that make up Claude Code's own features, like cc-plugin-telemetry and cc-plugin-you-should-know. If mods are new to you, start with Claude Code mods explained. The docs table of built-in mods did not list this one yet on November 6, but its source is public.9,2
What does it block?
According to its published source, it refuses a Bash, PowerShell or Monitor call whose input holds your account address and names a User-Agent, such as curl -A, wget -U, --user-agent or User-Agent. The address counts in any case or percent-encoded. It only looks for that one address.2,3
The README is plain about the limits: it calls the mod "a courtesy, not a boundary".2 It is two word matches over the input, so it refuses some harmless calls and lets others through.
The sources do not fully agree on what it does. The release notes say the check asks first and covers web and shell tools.1 The README says it refuses with no prompt and does not check WebFetch or WebSearch.2 Users on 2.1.317 and 2.1.318 saw both denials and approval prompts, on more calls than the README describes.3 We did not reproduce these ourselves.
| Call | Published source | Reports on 2.1.317 and 2.1.318 |
|---|---|---|
| curl -A with your address, to an outside site | Refused | Denied |
| Heredoc writing a local file that holds your address and a URL | Passes | Denied in a headless run, approval prompt in an interactive one |
| curl to 127.0.0.1 with your address in the body | Passes | Denied |
| Download to a Google Drive path that holds your address | Passes | Approval prompt |
| WebFetch of a URL holding your address, percent-encoded | Not checked | Denied |
| Your address in a variable, in $(git config user.email), or in a script Claude writes | Passes | Not reported; the team comment also says scripts are not caught |
| MCP tool calls | Not checked | Not reported |
Source column from the README;2 reports from issue #107144 and the team comment.3,7
One commenter tested the published source and the local-only cases passed, but says that does not show what the shipped binary does. The issue's reporter suggests the bundled copy may be broader, or another part of the chain may be making the denials.3 The denial names two mods, and cc-plugin-sec-default is the other one. This is not settled.
Why does it deny local commands?
Because the match reads the text of the call, not where the data goes. On 2.1.317 and 2.1.318, issue #107144 reports the check firing when the input holds your address plus a word such as curl or https, even inside a file being written. In a headless run the message reads:3
What that costs depends on how you run Claude Code:3
- Headless runs: with
claude -p --dangerously-skip-permissionsthe call is denied, the file is not written, and the run can still end assuccesswith exit code 0. The denial shows up inpermission_denials, so check that field in CI. - Text that goes missing: the denial tells the model to go on without the address, so a contact line in a doc may be dropped instead of raising an error.
- Unattended sessions: one user says bypass mode sessions driven from the Claude app stop at an approval prompt. Another says an overnight session waited about 8.7 hours, and a scheduled run skipped the step.
- Google Drive folders on a Mac: the synced path holds your Google address. If that is also your Claude account, one user reports the prompt on any Bash call that names a Drive file and also contains
curlor a URL.
How do I turn it off?
Set it to false in your user settings. The issue's reporter verified this on 2.1.317, and the README lists the same switch.3,2
- Open
~/.claude/settings.json(or$CLAUDE_CONFIG_DIR/settings.json). - Add the setting below, merged with any
enabledPluginsyou already have. - Start a new session. One user reports that a session already running keeps showing the prompt.3
For a single run, pass it as a flag:3
A few things to know:
- The README also lists
/plugin disable, and the developer says you can turn it off via/plugins. One user on 2.1.318 could not see it there, so the setting is the surer route.2,4 - A repository's settings do not turn it off. Managed settings do.2
disableAllHooks,--bareand--safe-modedo not stop built-in mods.9- With it off, calls that can send your account email reach their tools. In the reporter's tests a
permissions.denyrule and aPreToolUsehook still denied.3
Our suggestion: leave it on when you are at the keyboard, since a prompt costs little. If it blocks unattended runs, turn it off for those runs with --settings, and accept that nothing built in checks the address there.
What it does not change
The mod checks calls. As of 2.1.318 it does not take the address out of what the model is given.2 On November 6, lydia_hallie, writing on Hacker News as a Claude Code team member, said the address would leave the model's context in the next release.7 That is one comment, and we had not seen it in a release when we checked. Look for it in the release notes for your version.
It also depends on your version. On November 6 the npm stable tag was 2.1.311, older than this check.10 Run claude --version to see what you have.
Key takeaways
cc-plugin-privacyis a built-in Claude Code mod, on by default since 2.1.317- It stops shell calls that hold your account email and name a User-Agent
- It is a partial check: scripts, variables and MCP tools pass
- On 2.1.317 and 2.1.318 users report it catching local-only commands, and headless runs can still exit 0
- Turn it off with
"cc-plugin-privacy@builtin": falseunderenabledPluginsin user settings or--settings
Frequently asked questions
What is cc-plugin-privacy in Claude Code?
It is a mod built into Claude Code since version 2.1.317 and on by default. It checks shell calls for your signed-in account email and stops the ones that name a User-Agent next to it, so the address does not go out as a client's contact details.
How do I turn off cc-plugin-privacy?
Add "cc-plugin-privacy@builtin": false under enabledPlugins in ~/.claude/settings.json and start a new session. For one run, pass the same setting with --settings. Settings in a repository do not turn it off, and neither do disableAllHooks, --bare or --safe-mode.
Why did Claude Code deny a command that only writes a local file?
On 2.1.317 and 2.1.318, users report the check firing when a call holds your account email and a word such as curl or https, even in text being written to a file. The call sends nothing, but it is denied or held for approval. The report is issue #107144, open on November 6, 2026.
Does cc-plugin-privacy stop my email leaving in every case?
No. Its README calls it a courtesy, not a boundary. The address passes in a URL or request body with no User-Agent named, in a value computed at run time, in a script Claude writes and runs, and through MCP tools. The README also says WebFetch and WebSearch are not checked.
Which Claude Code versions have cc-plugin-privacy?
2.1.317 and later. On November 6, 2026 the npm stable tag was still 2.1.311, so an install on the stable channel did not have it yet. Run claude --version to see yours.
Sources (10), all checked November 6, 2026
- Claude Code release v2.1.317, November 3, 2026 (adds the account email check)
- Claude Code repository, privacy mod README and source, published November 6, 2026 (what it refuses, what passes, what turns it off)
- Issue #107144, account email check denies local-only Bash calls (reproductions, comments, the settings workaround)
- Issue #107757, report of the email in a User-Agent, with the note from poteat, who published the mod source
- Hacker News, mpoteat on introducing the mod, November 5, 2026
- Hacker News, mpoteat on why Claude put a contact in the User-Agent, November 5, 2026
- Hacker News, lydia_hallie, writing as a Claude Code team member, November 6, 2026
- Hacker News thread, "Claude Code sends your email address to websites"
- Claude Code docs, Mods built into Claude Code (the flags that do not stop built-in mods; this mod is not in the table yet)
- npm, @anthropic-ai/claude-code tags on November 6, 2026 (stable 2.1.311, latest 2.1.318, next 2.1.319)