Claude Codeのメールアドレス外部送信は止まった?v2.1.311は75回中34回、v2.1.319は0回
Claude Codeがメールアドレスを外部サイトへ送る問題を270回実測。v2.1.311は75回中34回、v2.1.319の既定は0回でした。標準の対策の抜け道、確認方法、止め方も説明します。

この記事の結論
- Claude Code v2.1.311は、連絡先を求める5つの公開APIの調査依頼75回のうち34回で、アカウントのメールアドレスを送信しました(模擬サーバーで計測)。
- 同じ条件でv2.1.319の既定設定は75回中0回でした。送ろうとした2回は標準のcc-plugin-privacyが止めました。modを切っても75回中4回に減っています。
- cc-plugin-privacyは、スクリプトファイルの中身やgit configの実行結果として送るアドレスを止めませんでした。Claude Code担当のLydia Hallie氏も、すべてを防ぐものではないと述べています。
- 2026年11月7日時点でstableチャンネルはv2.1.311です。Homebrewのclaude-codeやstableチャンネルの利用者は、v2.1.317以降か確認してください。
- Anthropicはアカウントのアドレスをモデルに渡さない修正を次回リリースで出す予定です。ただし、gitの履歴や設定にあるアドレスは別の経路として残ります。
Claude Code(クロードコード)がアカウントのメールアドレスを外部サイトへ送る問題が、2026年11月5日からHacker Newsで1,556ポイントを集めています。Anthropicの修正は段階的に進んでいます。そこで、5つの公開APIを調べる普通の依頼を手元の模擬サーバーで計270回試しました。v2.1.311は75回中34回送信し、v2.1.319の既定設定は75回中0回でした。この記事では、版ごとの差、標準の対策で止まらない形、送られたか確かめる方法、止め方を順に説明します。
目次
Claude Codeは本当にメールアドレスを外部へ送るのか?
送ることがあります。claude.aiアカウントでログインすると、Claude Codeはアカウントのアドレスをモデルに渡します。モデルがcurlなどのコマンドを自分で書くとき、サイトが連絡先を求めていると、そのアドレスをUser-Agentに入れることがありました。
User-Agentは、通信相手に自分のソフトウェアを名乗るヘッダーです。SEC EDGARは自動アクセスにメールアドレス入りのUser-Agentを求め、Wikimediaも連絡先を求めています。モデルはこの慣習に従おうとして、利用者の許可なくアドレスを使っていたわけです。送られた先のサーバーには、アドレスがアクセスログとして残る可能性があります。
発端となったissue #107757の報告者は、v2.1.318で起きたと述べ、毎日届く詐欺メールとの関係を訴えています(因果関係は確認されていません)。別の利用者は自分のログを調べ、8セッションで53回、ほとんどがサブエージェントのcurlだったと報告しました。
当研究所のログも調べました。1,421ファイル(2026年8月14日以降)のうち、2026年10月10日に実際のSEC EDGARへアドレス入りのUser-Agentで送信した呼び出しが1回あり、応答も返っていました。アドレスを送るよう頼んだ作業ではありません。
「アカウントのメールアドレスを、Claude Codeがモデルに渡す文脈から削除します。(中略)こんなことは起きるべきではなく、もっと早く気づくべきでした」
"We're removing the account email address from the context Claude Code gives the model. [...] Again, this should not have happened, and we should've caught this behavior earlier."
Lydia Hallie(Claude Code担当と本人が明記)— Hacker News、2026年11月6日
アドレスがモデルに渡る仕組み自体は、Claude Codeのシステムプロンプトに入るメールアドレスで詳しく説明しています。
バージョンでどれだけ違うのか?
差は大きく、v2.1.311では約45%の実行でアドレスが送られ、v2.1.319の既定設定では0回でした。v2.1.319はmodを切っても75回中4回です。送信を減らした主因はmodだけではなく、モデルへの指示の変更である可能性が高いと当研究所は見ています。
| バージョンと設定 | アドレスを送った回数 | 送ろうとした回数 |
|---|---|---|
| v2.1.311(stableチャンネル。modなし) | 75回中34回 | 75回中34回 |
| v2.1.318(modを無効化) | 45回中1回 | 45回中1回 |
| v2.1.319(modを無効化) | 75回中4回 | 75回中4回 |
| v2.1.319(既定。modあり) | 75回中0回 | 75回中2回(modが停止) |
※2026年11月7日、macOS。Opus 5.5・Sonnet 5.5・Haiku 5.5で、1つの版につき各サービス3〜5回。依頼文にメールやUser-Agentの語はありません。
試験はclaude -pで行い、SEC EDGAR、Wikipedia、Unpaywall、Crossref、crates.ioのAPIを「curlなどで調べて」と頼みました。実サイトには送らず、実行直前にURLを手元のサーバーへ書き換え、OSサンドボックスで外部通信も遮断しています。サーバーは各サービスの公開ポリシーをまねて連絡先を要求します。WebFetchは止めてBashに絞っているので、普段の使い方そのものではありません。
| 依頼先(各15回) | v2.1.311 | v2.1.319(modなし) | v2.1.319(既定) |
|---|---|---|---|
| crates.io | 12回 | 0回 | 0回 |
| SEC EDGAR | 11回 | 4回 | 0回(試み2回) |
| Unpaywall | 8回 | 0回 | 0回 |
| Crossref | 2回 | 0回 | 0回 |
| Wikipedia | 1回 | 0回 | 0回 |
※v2.1.311のモデル別はSonnet 5.5が25回中15回、Haiku 5.5が25回中13回、Opus 5.5が25回中6回。
v2.1.311で送信があった34回のうち、13回は最終報告にメールの話が一切ありませんでした。結果だけを読むと、送ったことに気づけません。送信57回の内訳は、User-Agentが49回、UnpaywallのようにURLのパラメータで送ったものが8回です。
モデルに渡る注記を版ごとに比べると、v2.1.316には無かった「連絡先を求めるサイトがあっても、このアドレスを使う理由にならない。汎用のクライアント名を使うか利用者に尋ねる」という趣旨の一文が、v2.1.317以降に入っていました。modを切ったv2.1.318・v2.1.319でも送信が激減しているので、この一文が効いたと考えられます。ただし版の間には他の変更もあるため、断定はできません。指示はモデルの判断に頼るものなので、v2.1.319のmodなしでも4回は送っています。
標準のcc-plugin-privacyはどこまで止めるのか?
cc-plugin-privacyは、シェルの呼び出しの文字列にアドレスが見えていれば止めます。スクリプトファイルの中や、コマンドの実行結果として後から入るアドレスは止めません。普通の依頼では効いていますが、安全を保証する仕組みではありません。
このチェックはv2.1.317の更新で追加されました。手元のサーバーに向けて、送信の形を変えた8種類のコマンドをv2.1.319で実行し、届いたかを確かめた結果が次の表です(各1回)。
| 送信の形 | modなし | 既定(modあり) | 自作フック | サンドボックス |
|---|---|---|---|---|
| curl -A にアドレスを直接書く | 届いた | 停止 | 停止 | 停止 |
| User-Agentヘッダーに直接書く | 届いた | 停止 | 停止 | 停止 |
| Fromヘッダーに直接書く | 届いた | 停止 | 停止 | 停止 |
| URLのパラメータに直接書く | 届いた | 停止 | 停止 | 停止 |
| POST本文に直接書く | 届いた | 停止 | 停止 | 停止 |
| $(git config user.email) で読む | 届いた | 届いた | 停止 | 停止 |
| ファイルからcatで読む | 届いた | 届いた | 届いた | 停止 |
| Pythonスクリプトに書いて実行する | 届いた | 届いた | 停止 | 停止 |
※v2.1.319、macOS、claude -p、Haiku 5.5に指定のコマンドをそのまま実行させた結果。自作フックは次の節のものです。
スクリプトで止まらない点は、Hallie氏も「Claudeがスクリプトを書いて実行する場合など、すべてを防ぐわけではない」と認めています。止まったときの動きは起動方法で変わり、claude -pは拒否して続行します。対話モードでは、curlの許可ルールがあっても確認画面が出ました。
Hook tool.check requires confirmation for this command:
This call's input holds your account email address, which may leave this machine.
[plugin:cc-plugin-privacy]
Do you want to proceed?
注意点が3つあります。
- 公開ソースとの違い:GitHubのmods/privacyのREADMEは「User-Agentの指定があるときだけ確認なしで拒否する」と説明しています。手元のv2.1.319はURLやPOST本文でも止まり、対話では確認を求めました。今後の版で範囲が変わる可能性があります。
- 止まらないという報告:macOSとWindowsの利用者から、v2.1.317・v2.1.318でmodが働かなかったという報告があります。当研究所のmacOSのclaude -pでは両版とも止まりました。環境によって違う可能性があるので、自分の環境で試す価値があります。
- 通信しない呼び出しも止まる:issue #107144は、アドレスとURLを書くだけのファイル作成まで止まると報告しています。無人実行では、処理が静かに変わることがあります。
自分のアドレスが送られたか確かめる方法は?
Claude Codeの会話ログを調べれば、候補を見つけられます。次のスクリプトは、アドレスとURLが同じツール呼び出しに入っていた回数を接続先ごとに表示します。アドレス自体は表示せず、どこにも送りません。
import json, os, pathlib, re
email = json.load(open(os.path.expanduser("~/.claude.json")))["oauthAccount"]["emailAddress"].lower()
logs = pathlib.Path(os.path.expanduser("~/.claude/projects"))
host = re.compile(r"https?://([A-Za-z0-9.-]+)")
found = {}
for path in logs.rglob("*.jsonl"):
for line in open(path, errors="ignore"):
if '"tool_use"' not in line or email not in line.lower():
continue
try:
content = json.loads(line).get("message", {}).get("content", [])
except json.JSONDecodeError:
continue
for block in content if isinstance(content, list) else []:
if not isinstance(block, dict) or block.get("type") != "tool_use":
continue
text = json.dumps(block.get("input"), ensure_ascii=False)
if email in text.lower():
for h in set(host.findall(text)) - {"127.0.0.1", "localhost"}:
found[h] = found.get(h, 0) + 1
print(found or "該当なし")
結果の読み方には3つの注意があります。
- 表示されても送信とは限りません。メールの下書きの署名や、自社サイトのURLと同時に書いただけの場合も出ます。知らない接続先のログを見て判断してください。
- 該当なしでも安心はできません。会話ログの保持は既定で30日で、実行時に読み込まれたアドレスは記録に残りません。
- APIキー認証では動きません。このスクリプトはclaude.aiログインのアドレスを読みます。APIキー認証の場合は、gitなどに設定している自分のアドレスに置き換えて調べてください。
メールアドレスの送信を止めるには何をすればよいのか?
まず版を確かめ、v2.1.317未満なら更新してください。通常の利用ならそれで多くの場合に足ります。顧客情報を扱う環境や無人実行では、サンドボックスで接続先を制限すると、モデルの判断に頼らずに通信を止められます。
バージョンとチャンネルを確かめる
claude --version で確認します。2026年11月7日時点でstableチャンネルはv2.1.311、latestはv2.1.319です。公式ドキュメントによると既定はlatestですが、Homebrewのclaude-codeはstableを追います。/config の Auto-update channel で切り替えるか、Homebrewではclaude-code@latestを使います。
modが有効か確かめる
/plugin の一覧でcc-plugin-privacyが有効か見ます。設定の enabledPlugins で無効にしていないことも確かめてください。
確認画面で内容を読む
対話モードで cc-plugin-privacy の確認が出たら、頼んでいない送信なら No を選びます。承認すると送信されます。
必要ならフックとサンドボックスを足す
下の設定で防御を重ねます。フックは表のとおり、ファイル経由を除く7形式を止めました。claude.aiログイン専用で、APIキー認証ではアドレスを読めず、すべてのツール呼び出しを拒否します。
import json, os, sys, urllib.parse
try:
data = json.load(sys.stdin)
raw = json.dumps(data.get("tool_input", {}), ensure_ascii=False)
hay = (raw + " " + urllib.parse.unquote_plus(raw)).lower()
account = json.load(open(os.path.expanduser("~/.claude.json")))["oauthAccount"]["emailAddress"].lower()
if account in hay or "user.email" in hay:
print(json.dumps({"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "deny",
"permissionDecisionReason": "アカウントのメールアドレスを含む呼び出しは禁止です。連絡先が必要なら利用者に確認してください。"}}))
sys.exit(0)
except Exception as e:
print(f"guard error: {e}", file=sys.stderr)
sys.exit(2)
{
"hooks": {
"PreToolUse": [
{ "hooks": [ { "type": "command", "command": "python3 ~/.claude/hooks/no_account_email.py", "timeout": 10 } ] }
]
},
"sandbox": {
"enabled": true,
"network": { "allowedDomains": ["github.com", "*.npmjs.org"] }
}
}
| 方法 | 止められるもの | 残る限界 |
|---|---|---|
| v2.1.317以降に更新 | 今回の実測では普通の依頼での送信がほぼ消えた | スクリプト経由は通る |
| 自作フック | 入力にアドレスが見える呼び出し(ファイル作成を含む) | ファイルなどから実行時に読む形は通る。メールの下書きなど正当な操作も止まる |
| サンドボックス | 許可していない接続先へのシェルの通信すべて | WebFetchやMCPは対象外。Windowsはネイティブ非対応でWSL2が必要。許可先へは送れてしまう |
| APIキー認証 | v2.1.316の確認では注記そのものが付かない | gitの設定や履歴にあるアドレスは残る |
サンドボックスの対話モードでは、未許可の接続先を尋ねられます。承認するとそのセッション中は許可されるので、尋ねられない設定にしたいときは公式のstrictAllowlistを確認してください(今回の実測はstrictAllowlistなしのclaude -pです)。社内でまとめて管理するなら、managed settingsで最低バージョンを揃える方法もあります。権限設定全般はClaude Codeの必須セキュリティ8選にまとめています。
修正が出たあとも残るリスクは?
アカウントのアドレスがモデルに渡らなくなっても、モデルが読める場所にある個人情報は同じ経路で外に出る可能性があります。修正後の版を試すまで効果は判断できないので、当面は修正を待つだけでなく、依頼の結果と通信先を見る習慣が必要です。
- gitのアドレス:git logやgit configを読めば、モデルはアドレスを知ることができます。公開リポジトリでは、GitHubのnoreplyアドレスを使うと影響を減らせます。
- プロジェクト内の個人情報:顧客台帳や設定ファイルの連絡先も文脈に入ります。今回の結果は、モデルが「サイトの決まりに従おう」として判断する例です。機密を読ませる作業と、外部通信を許す作業は分ける方が安全です。
- User-Agentの他の情報:今回の実測でも、作業フォルダ名に似た語をUser-Agentに入れる例がありました。社名や案件名がフォルダ名に入っている場合は同じ問題が起きます。
今回の実測には限界もあります。5つのAPIと単発の短い依頼だけを試し、長い作業やサブエージェントが多数動く場面は再現していません。サーバーは模擬で、版の比較は同じ日の1台のMacによるものです。v2.1.319の「0回」は、この条件での結果です。
まとめ
この記事のまとめ
- Claude Code v2.1.311は、連絡先を求める公開APIの調査75回中34回でアドレスを送信し、13回は最終報告で触れませんでした。
- v2.1.319の既定設定では75回中0回でした。標準のcc-plugin-privacyが2回の試みを止めています。
- modはコマンドに見えるアドレスを止めますが、スクリプトやgit configの実行結果として送る形は通しました。
- まず claude --version を確認し、stableチャンネルやHomebrewの利用者はv2.1.317以降か確かめてください。
- 顧客情報を扱う環境では、サンドボックスで接続先を制限すると、モデルの判断に頼らずシェルの通信を止められます。
- Anthropicはアドレスをモデルに渡さない修正を次回リリースで出す予定です(2026年11月7日時点、未リリース)。
安全な設定まで含めて、Claude Codeを社内に入れる。
防衛省主催のサイバーセキュリティコンテストで入賞した専門家が教材を設計。機密情報を扱う士業事務所でも使える運用設計を、一社ごとの対面研修で身につけます。
- 一社ごとに業務をヒアリングして設計
- 実際の業務データでハンズオン
- スパルタ以上は全額返金保証
- 受講法人数100社超
オンライン30分・無料。フォームは入力1分で、2営業日以内にご連絡します。
よくある質問
Claude Codeは自分のメールアドレスを勝手に外部サイトへ送りますか?
claude.aiアカウントでログインしている場合に起こり得ます。当研究所の実測では、v2.1.311は連絡先を求める公開APIの調査依頼75回のうち34回で送信しました。v2.1.319の既定設定では75回中0回です。Claude Code自体の通信ではなく、モデルが作るcurlなどのコマンドにアドレスが入る現象です。
cc-plugin-privacyとは何ですか?
v2.1.317で追加された標準の組み込みmodで、既定で有効です。v2.1.319の実測では、シェルの呼び出しにアカウントのアドレスと通信の語が同時にあると動き、対話モードでは確認を求め、claude -pでは拒否しました。入力に現れないアドレスは判定できないため、スクリプトファイルやgit configの実行結果として送る場合は通りました。
自分のメールアドレスが送られたか確認する方法はありますか?
~/.claude/projects の会話ログを調べると候補が分かります。記事のスクリプトは、アドレスとURLが同じツール呼び出しにある回数を接続先ごとに数えます。ただし会話ログは既定で30日分のみで、スクリプトの実行時に読み込まれたアドレスも検出できません。該当なしでも「送っていない」とは断定できません。
メールアドレスの送信を確実に止める方法はありますか?
当研究所が試した中で全8形式を止めたのは、Bashのネットワーク接続先を制限するOSサンドボックスです。macOS、Linux、WSL2で使えます。ただしシェルのコマンドだけが対象で、WebFetchやMCPツールは制限されません。対話モードでは未許可の接続先を尋ねるので、その場で許可しないことも必要です。
Anthropicはこの問題を修正しましたか?
2026年11月7日時点では段階的に対応中です。v2.1.317で送信前のチェックと、連絡先を求められても使わないという指示が入りました。Lydia Hallie氏は、アカウントのアドレスをモデルに渡さない修正を翌週前半見込みの次回リリースで出すと述べています。この時点の最新版v2.1.319には、まだ注記が残っています。
参考資料・出典
- スレッドBug Report: Privacy violation in User-Agent header(issue #107757)
問題の発端の報告と、利用者によるログ調査・modの動作報告
- スレッドClaude Code sends your email address to websites
反響(1,556ポイント)と議論
- スレッドHacker Newsでのコメント(アカウントのメールアドレスの削除予定)
経緯の説明、謝罪、次回リリースでの修正予定、modの限界
- 公式ドキュメントChangelog(2.1.317)
送信前チェックの追加
- GitHubmods/privacy
公開ソースとREADMEの説明。手元のv2.1.319の動作との違いを確認
- スレッド[BUG] Account-email check (2.1.317+) denies local-only Bash calls in headless bypass runs(issue #107144)
通信しない呼び出しまで止まる誤検知の報告
- 公式ドキュメントSandboxing
対象がシェルのみであること、対応OS、接続先の許可
- 公式ドキュメントSet up Claude Code(Configure release channel)
stable/latestの違いとHomebrewのcask名
- 公式ドキュメントSettings reference(cleanupPeriodDays)
会話ログの保持期間の既定30日
- 公式ドキュメントWebmaster Frequently Asked Questions
自動アクセスにメールアドレス入りのUser-Agentを求める記述
- 公式ドキュメントWikimedia Foundation User-Agent Policy
スクリプトに連絡先を求める記述
Claude Codeを実務で活用したい方へ
一社ごとにカスタマイズする対面のClaude Code研修は「スパルタClaude Code塾」。経営者・士業・エンジニア・マーケター・営業職まで、業務をヒアリングしてカリキュラムを設計します。まずは30分の無料相談で、自動化プランと費用対効果をご確認ください。

