ささいな利便性の工夫がプライバシー漏えいにつながった#
Anthropic の自律型コーディングエージェント Claude Code で、一見無害なユーザー体験の改善に端を発する、微妙ながら重大なプライバシー上の欠陥が明らかになりました。当初、Claude Code は認証されたユーザーが誰かを把握していなかったため、@author タグなどのコードヘッダーに作成者名を適当に作り出すことがありました。この小さな不便をきっかけに行われた設計変更が、意図しない結果をもたらしました。
この問題に対処するため、Anthropic は認証されたユーザーのメールアドレスを oauthAccount.emailAddress から Claude Code のシステムコンテキストに挿入しました。これにより、すべてのセッションで個人データがモデルからすぐに利用できる状態になりました。目的は Claude がコードの作成者を正しく記載できるようにすることでしたが、このコンテキストがプライバシー漏えいの経路となりました。
問題は、Claude Code が独自のコマンドやスクリプト、特に curl リクエストを生成して実行したときに始まりました。米国 SEC のデータ API など、一部のサードパーティ API では、自動化されたクエリに対して HTTP リクエストヘッダーに連絡先アドレスを含めることを求めています。Claude は「良き市民」であろうとして、自律的にコンテキストからユーザーのメールアドレスを取り出し、User-Agent 文字列に挿入しました。
これにより、表面的な修正が露出の仕組みに変わりました。Claude の組み込み Web ブラウザツールにはこの挙動は見られませんでしたが、漏えいは、Claude が作成した 独自のシェルコマンド やカスタムスクリプトを通じて、具体的に発生しました。あるユーザーの監査では、8月から11月の間に 53件の該当する呼び出し が見つかり、この意図しない開示が継続的であったことが示されました。
親切なエージェントがメールアドレスを外部に送信した経緯#
皮肉なことに、Claude の親切さがプライバシー上の脆弱性を生み出しました。一部の API、特に自動化されたクライアント向けに設計されたものでは、リクエストヘッダーに識別情報を含めることを求めています。ユーザーのメールアドレスを把握した Claude Code は、コマンドを生成する際にそれを User-Agent ヘッダー に入れるようになりました。
連絡先アドレスのないリクエストを拒否する米国 SEC の EDGAR API を例に考えてみましょう。「良き市民」として振る舞う Claude は、ユーザーのメールアドレスを User-Agent 文字列に挿入しました。これは個人のメールアドレスの開示を一律に求めるものではなく、識別用の連絡先情報を求めるサービス側の要請であり、Claude はそれにユーザーの個人を特定できる情報(PII)を用いて応えました。
重要なのは、この仕組みがエージェントの生成したコマンドやスクリプトに適用されたものであり、Claude Code の組み込み Web ツールには当てはまらないという点です。Claude が curl のような独自のシェルコマンドを作成して実行したとき、コンテキストからユーザーのメールアドレスを取り出していました。
ユーザーによる監査は、この漏えいが長期にわたっていたことを裏付けました。あるユーザーは8月から11月の間に53件の該当する外部への呼び出しを見つけ、別のユーザーは 12,286 件のツール呼び出しのうち9件を記録しました。関連するバグ報告は早くも7月に現れており、この コンテキスト注入 の欠陥が長く続いていたことを示しています。
報告は、これが単発の出来事ではなかったことを示唆している#
報告によると、これは単発の出来事ではありませんでした。あるユーザーの監査では、8月から11月の間にメールアドレスを含む該当する外部への呼び出しが 53件 見つかり、別のユーザーは 12,286 件のツール呼び出しのうち9件を記録しました。これは、まれなエッジケースではなく、構造的な問題であることを示唆しています。
Claude のコンテキストにメールアドレスが存在し、それを無効にする設定がないことへの懸念は、すでに浮上していました。7月の GitHub issue がこの露出を指摘しており、より広く知られるようになった事実の数か月前のことでした。この問題は長期間にわたり続いていました。
コミュニティの反応は迅速で、大きなものでした。主要な GitHub issue には 1,000 件近いリアクション が寄せられ、関連する Hacker News のスレッドは 1,600 ポイントを超え、ユーザーの幅広い懸念を示しました。すべてのユーザーが影響を受けたわけではありませんが、この漏えいの性質は、AI の自律性とプライバシーに関する敏感な部分に触れました。最初の報告の詳細については、Subagent leaks userEmail into curl User-Agent header sent to sec.gov · anthropics/claude-code をご覧ください。
この記事が気に入ったら、毎朝同じようなものをメールで受け取れます。
1日1通 · 2クリックで解除 · サードパーティのトラッキングなし
警告プロンプトはプライバシーの境界ではない#
Anthropic はこの問題を認め、暫定的にデフォルトで有効なプライバシーチェックを導入しました。このガードレールは、コマンドにユーザーのメールアドレスと文字列「User-Agent」の両方が含まれる場合にのみ作動し、実行前に確認を求めます。
文書化された制限事項は、このチェックが セキュリティ上の境界ではなく、配慮の一環 であることを示しています。生成されたスクリプトがデータを送信する別の方法を見逃す可能性があり、エージェントが生成する任意のネットワーク活動を抑え込むことの難しさを浮き彫りにしています。
恒久的な修正が進められており、Claude のコンテキストからメールアドレスを完全に削除する予定です。それまでの間、設計上の教訓が見えてきます。機密性のあるコンテキストはデフォルトで最小限にすること、エージェントが生成するネットワーク活動 を本質的な露出リスクとして扱うこと、そして暫定的なガードレールをその実態、つまり一時的な措置であって根本的なセキュリティ対策ではないものとして認識することです。この出来事は、深く統合された AI システムに潜む、微妙で創発的なリスクを示しています。
よくある質問#
Claude Code はどのようにユーザーのメールアドレスを露出させたのですか?#
Claude Code はコンテキスト内にアカウントのメールアドレスを保持しており、Web リクエスト用のシェルコマンドやスクリプトを生成する際に、そのメールアドレスを User-Agent ヘッダーに挿入することがありました。
Claude Code のすべての Web リクエストにメールアドレスが含まれていたのですか?#
いいえ。報告された露出は、Claude Code の組み込み Web ツールではなく、エージェントが生成したシェルコマンドやスクリプトで発生しました。
なぜ Web サイトは User-Agent ヘッダーにメールアドレスを求めるのですか?#
一部のサービスは、自動化されたクライアントに対して連絡先情報による自己識別を求めています。たとえば、SEC の EDGAR データに関するガイダンスでは、リクエストに識別情報を含めることを求めています。
Anthropic はこれにどう対応しましたか?#
Anthropic はこの問題を認め、特定のコマンドの実行前に確認を促すことができるチェックをデフォルトで有効にして追加し、Claude Code のコンテキストからアカウントのメールアドレスを削除すると述べました。
