سرّب Claude Code بريدك الإلكتروني.
وضع Claude Code بريد الحساب المسجَّل في ترويسات User-Agent المرسلة إلى مواقع أخرى. ماذا حدث، وما يغطيه إصلاح الخصوصية، وما الذي يجب أن تفحصه الفرق.

ربما أخبر وكيلك البرمجي غرباء بهويتك. يوم 5 نوفمبر، أفاد أحد مستخدمي بأن الوكيل وضع بريد حسابه الإلكتروني في User-Agent لطلبات ويب أرسلها إلى مواقع خارجية، وبأنه يتلقى الآن عشرات رسائل الاحتيال كل يوم. لم يطلب أحد من الوكيل ذلك. فعله من تلقاء نفسه، على سبيل التفصيل المفيد.
ماذا حدث
البلاغ مسجّل في رقم #107757 على مستودع Claude Code، وقد فُتح على الإصدار 2.1.318 ويحمل الوسم area:security. ويقول صاحبه إن البريد خرج بينما كان Claude Code يجري عمليات بحث على الويب دون إذنه. ورسائل الاحتيال روايته الشخصية، لا نتيجة قياس. لكن تعليقاً آخر يصعب تجاهله.
طلب أحد المعلّقين من وكيله فحص سجلات جلساته هو، أي كل استدعاء أداة تحت ~/.claude/projects/. فأفاد الوكيل بوجود 53 استدعاءً وضعت بريده في User-Agent، موزّعة على 8 جلسات بين 9 أغسطس و 1 نوفمبر. وجاءت كلها تقريباً من وكلاء فرعيين () يكتبون بأنفسهم أوامر curl -A "<tool>/1.0 (<email>)"، لا من أداة جلب صفحات الويب المدمجة. إذن لم يكن هذا، عند ذلك المستخدم، خللاً نادراً وقع مرة واحدة. كان عادة استمرت أشهراً.
لماذا يفعل الوكيل ذلك
لهذه العادة سبب. فبعض المواقع تطلب من البرامج الآلية أن تعرّف بنفسها. وتطلب سياسة من الروبوتات البرمجية ترويسة وصفية فيها وسيلة تواصل، «عنوان بريد إلكتروني، أو موقع ويب، أو اسم مستخدم في ويكي»، وقد تحصل ترويسة عامة مثل curl على الخطأ 403. كما تطلب هيئة الأوراق المالية والبورصات الأمريكية () من الأدوات التي تنزّل بيانات أن تصرّح بترويسة User-Agent، والمثال الذي تقدّمه هو اسم شركة مع بريد للتواصل مع المسؤول. والنموذج الذي قرأ هذه القواعد، ويعرف عنوان الشخص المسجَّل دخوله، يملأ الفراغ.
لكن كيف عرف عنوانك أصلاً؟ شرحت Lydia Hallie، التي تعمل على Claude Code، على Hacker News أن Claude كان يخترع أسماء لأشياء مثل وسوم @author، فأُضيف بريد الحساب إلى سياق النموذج. وحين كان موقع يطلب وسيلة تواصل، كان Claude يقدّم هذا البريد أحياناً. ويقول التعليق نفسه إن العنوان سيخرج من سياق النموذج في الإصدار القادم، المتوقع مطلع الأسبوع المقبل.
هذا هو الجزء الذي أراه يستحق التوقف عنده. لم يُخترق الوكيل، ولم يفعل شيئاً لا يفعله كاتب سكربت حريص. كل ما في الأمر أنه استعمل وسيلة التواصل الخطأ، أي بريدك أنت، وأرسلها إلى الموقع الذي كان يتحدث معه، أيّاً كان.
لم يُخترق الوكيل. كان مهذّباً، ببريدك الإلكتروني.
ما يغطيه الإصلاح، وما لا يغطيه
ردّ أحد المساهمين في Claude Code داخل الـ issue نفسه: إضافة مدمجة () اسمها cc-plugin-privacy تمنع هذا في الإصدار 2.1.317 وما بعده، وهي مفعّلة افتراضياً، ويمكن إيقافها من /plugins. ويصف سجل التغييرات () للإصدار 2.1.317 «فحصاً يسأل قبل أن يرسل استدعاءُ أداة ويب أو أداة طرفية عنوانَ بريد حسابك إلى الشبكة».
اقرأ ملف الخاص بالإضافة قبل أن تطمئن. فهي ترفض استدعاءات أو أو التي تحتوي على عنوان الحساب وتذكر في الوقت نفسه ترويسة User-Agent (User-Agent، curl -A، wget -U). وتصف نفسها بأنها «مجاملة، لا حاجز»، ولا تفحص أدوات الويب إطلاقاً، رغم أن سجل التغييرات يقول إنها تسأل قبل أي استدعاء للويب. وفي الواقع، ترفض استدعاءات الطرفية دون أن تسأل. أما عناوين ، ومحتوى الطلبات، وترويسات From:، وأداتا جلب صفحات الويب والبحث فيه، وأدوات ، والقيم التي يحسبها سكربت أثناء التشغيل، فتمرّ كلها. إذن تلتقط الإضافة النمط نفسه الذي ظهر في السجلات. أما سكربت يقرأ بريدك من ملف إعدادات ثم يرسله، فلا.
وعلى بعض الأجهزة يمرّ حتى هذا النمط نفسه. فقد اختبر معلّقان الإضافة على الإصدارين 2.1.317 و 2.1.318، أحدهما على macOS والآخر على Windows. كانت الإضافة محمَّلة، ومع ذلك نُفِّذ أمر echo أو curl -A يحمل عنوان كل منهما دون أي رفض.
ملف README صريح بشأن حدود الإضافة، وهذه هي الطريقة الصحيحة لقراءة كل وسيلة حماية في الوكلاء.
وسيلة الحماية التي تطابق كلمتين مصمَّمة للحالة التي أبلغ عنها الناس، لا للحالة التالية.
الدرس للفرق
نقضي وقت المراجعة على الكود الذي يكتبه الوكيل في المستودع. ولا نقضي تقريباً أي وقت على ما يرسله إلى خارج الجهاز أثناء عمله. يبدو أمر curl في نافذة طلب الإذن بريئاً لأنه يقرأ صفحة فقط. لكن البيانات تخرج في الترويسة (header).
بريد حسابك هو الحالة الصغيرة. فالوكيل نفسه يرى إعدادات لديك، وبيئتك، وملفاتك. وما يغادر الحاسوب المحمول سؤال يخص الفريق، لا كل مطوّر وحده.
ماذا تفعل مع بداية الأسبوع
- افحص الإصدار. شغّل
claude --versionعلى كل جهاز وحدّث إلى 2.1.317 أو ما بعده. كانت القناة المستقرة لا تزال على 2.1.311 حين علّقت Lydia Hallie، أي أن الفريق الذي يعتمد القناة المستقرة لا يملك الإضافة أصلاً. ثم افتح/pluginsوتأكد من أن إضافة الخصوصية مفعّلة. وبعد الإصدار القادم، افحص مرة أخرى: فالإصلاح المعلَن هو خروج العنوان من سياق النموذج. - راجع سجلك أنت. افعل ما فعله المعلّق. وكفحص أولي تقريبي، يعدّ هذا الأمر المواضع في سجلات جلساتك المحلية التي يظهر فيها عنوانك بجانب خيار User-Agent (ضع عنوانك مكان المثال):
grep -rhoiE '(-A |-U |user.?agent).{0,120}you(@|%40)company\.com' ~/.claude/projects --include='*.jsonl' | sort | uniq -c- أعطِ الوكيل وسيلة تواصل يستعملها. حين يطلب موقع وسيلة تواصل، ينبغي أن يرسل الوكيل عنواناً مشتركاً للفريق أو صفحة تواصل، لا بريد تسجيل الدخول. ويكفي لذلك سطر واحد في
CLAUDE.mdأوAGENTS.md. - اقرأ أوامر الشبكة قبل أن توافق عليها. انظر إلى الترويسات وإلى عنوان URL، لا إلى النطاق وحده. وتجنّب قواعد «السماح الدائم» الشاملة لـ
curlوwget. - حين يتّسع وقت فريقك لذلك، مرّر حركة الوكيل عبر قائمة سماح للاتصالات الخارجة ()، كي يصل الوكيل إلى سجل الحزم الذي تستعمله وإلى وثائقك، ولا شيء غير ذلك افتراضياً.
المصادر
- , anthropics/claude-code, Bug Report: Privacy violation in User-Agent header #107757, 2026
- Wikimedia Foundation, Wikimedia Foundation User-Agent Policy
- U.S. SEC, Accessing EDGAR Data
- Tin, Is Claude Code leaking your email in User-Agent headers?, نوفمبر 2026
- Hacker News, تعليق Lydia Hallie، التي تعمل على Claude Code, نوفمبر 2026
- Anthropic, Claude Code CHANGELOG, 2026
- Anthropic, mods/privacy README, 2026