Claude Codeがメールアドレスを外部サイトに送信?GitHubで騒動に
Claude Codeのメールアドレス漏洩疑惑。Web検索時にUser-Agentヘッダーでアドレスが外部サイトに渡ったという報告の中身を整理します。
この記事の他の言語版:العربيةDeutschEnglishEspañolFrançaisItalianoPolski简体中文
この記事の内容
Claude Codeのメールアドレス漏洩疑惑が話題です。11月5日、GitHubユーザーのtaylor-edwardsがClaude Codeのリポジトリで報告したところによると、エージェントがWeb検索中に、本人の同意なくメールアドレスをUser-Agentヘッダーに入れて外部サイトに送ったとのことです。投稿は1時間以内にHacker Newsのトップページに載り、110ポイントを超えました。
Claude Codeのメールアドレス漏洩で何が起きたのか
報告のタイトルは「Bug Report: Privacy violation in User-Agent header」で、macOS上のClaude Code 2.1.318が対象です。投稿者は、Claude Codeが無関係なサイトにアドレスを漏らしたせいで毎日何十通もの詐欺メールが届くようになったと書き、自分の会社をエージェントハーネスのPiとOpenRouterに移行するとしています。そして、この挙動をオプトインやオプトアウトの設定の裏に隠すのではなく、完全に削除するよう求めています。
ただし、主張と証拠は分けて考える必要があります。報告にはログもヘッダーそのものも含まれておらず、Claude Codeとスパムの関係は投稿者自身の推測です。執筆時点では報告へのAnthropicからの返答もなく、付いているのは33件の高評価です。
そもそもClaude Codeはなぜメールアドレスを知っているのか
ここからが興味深いところです。7月にissue #81138で、あるユーザーが、Claude Codeはアカウントからアドレス(~/.claude.json内のoauthAccount.emailAddress)を取得し、毎回のセッションで「The user’s email address is …」という一行としてモデルのコンテキストに追加していると説明しました。このスレッドの後のコメントによると、次のとおりです。
- バージョン2.1.246以降、アドレスには、ユーザーが明示的に求めない限り無関係なサービスに送らないよう注意書きが付いています。
- APIキーでログインした場合や、BedrockやVertexを使う場合、アドレスはコンテキストに入りません。
- これを無効にする設定は文書化されていません。
これらはユーザーがコードを分析して得た見解で、Anthropicは認めていません。ただ、仕組みの説明にはなります。Claude Codeがリクエストにアドレスを固定で付けているのではなく、モデルが自分の判断で使っているのです。
なぜモデルはヘッダーにアドレスを書くのか
一部のサービスがそれを求めているからです。Wikimedia財団のUser-Agentポリシーは、メールアドレス、Webサイト、wikiアカウントといった連絡先をヘッダーに含めるよう求めています。APIに対して礼儀正しくあろうとするエージェントは、手元にある唯一のアドレスを使うわけです。
しかも、この種の報告は初めてではありません。
- 10月13日の#101659:別のサブエージェントが起動したリサーチ用サブエージェントが、セッションのコンテキストで禁止されていたにもかかわらず、ヘッダーに入れたアドレスをliquipedia.netに送りました。Claude Code 2.1.285とOpus 5.5での出来事で、サーバーは結局403エラーを返しています。
- 10月15日の#102577:アドレスが4件のリクエストでWikipediaに送られ、その後のリクエストは汎用的なヘッダーに切り替わりました。
3件の報告はすべて未解決で、Anthropic社員のコメントはどれにも付いていません。
なぜこれほど注目されているのか
有料ユーザーの個人情報に関わる話であり、「アドレスを送るな」という指示がブロックではなく、モデルへのお願いにすぎないと分かったからです。HNのコメントでは、Claude Codeに乗り換えてからスパムが始まったという人もいれば、固有のアドレスでもスパムは来ていないという人もいます(スパムの原因がすべて同じとは限らないことを示しています)。自分のヘッダーを確認してアドレスが見つからなかった人もいるので、全員が影響を受けているわけではありません。
エージェントのコンテキストに何が入るかをめぐる似た議論については、Claude CodeのPostmanプラグインの記事でも書きました。
今後気をつけたいこと
curlコマンドやネットワークリクエストは、承認する前に確認しましょう。特に-AオプションやUser-Agentヘッダーに注意です。- PreToolUseフックを使えば、ツールの呼び出しを実行前にブロックできます(フックのドキュメントに説明があります)。#81138のユーザーはこれでアドレスを含むコマンドを拒否していますが、すべてを防げるわけではないと認めています。
CLAUDE.mdに禁止事項を書き加えるのは有効ですが、それもモデルへの指示にすぎません。
エージェントの守り方については、AIエージェントのセキュリティのガイドで詳しく書いています。
FAQ
Claude Codeは常にメールアドレスを送信しているのですか?
その証拠はありません。報告されているのは、モデルが自らアドレスをヘッダーに書いた個別のケースで、多くは連絡先を求めるサービスに対するものです。ユーザーによると、APIキーでログインした場合はアドレスがそもそもコンテキストに入りません。
Anthropicは報告に回答しましたか?
執筆時点(11月5日夜)で、GitHubの4つのスレッドのいずれにもAnthropicのコメントはありません。#101659で同社の社員がラベルを付けたのが確認できるだけです。
モデルにメールアドレスが渡らないようにできますか?
issue #81138によると、公式の設定はありません。ユーザーはAPIキーでのログインやフックで回避していますが、これは各自の工夫であって、Claude Codeの機能ではありません。