بث مباشر 18.11 · الدفعة 318 نوفمبر، 19:00 بتوقيت موسكو — ورشة عملية مجانية لوكلاء الذكاء الاصطناعي · الدفعة 3 تبدأ 23.11ورشة 18 نوفمبر ←الدفعة 3 (23.11)
إصدارتحليل · على الرادارQodo Blog→ المصدر

Claude Code ترك أسرارًا في 1122 ملفًا عامًا على GitHub بسبب «Don't ask again»

عندما تضغط على «Don't ask again» في Claude Code، يسجّل الوكيل الإذن في ملف إعدادات المشروع. وإذا كان الأمر يتضمن رمز وصول أو كلمة مرور، فإنها تُحفظ معه في الملف. وجد محللو Qodo أسرارًا من هذا النوع في 1122 ملف إعدادات عامًا على GitHub. أصبحت إعدادات الوكيل شيفرة بحد ذاتها، وينبغي مراجعتها مثل أي إيداع آخر في المستودع.

معالج بواسطة الذكاء الاصطناعي من Qodo Blog؛ بتحرير Hamidun News
Claude Code ترك أسرارًا في 1122 ملفًا عامًا على GitHub بسبب «Don't ask again»
المصدر: Qodo Blog. كولاج: Hamidun News.
استمع للمقال
بطاقة الحقائق والأرقام
المعيارالتفاصيل
المصدر الأصليQodo Blog ↗
رئيس التحرير
حقيقة رئيسية #1أضف .claude/settings.local.json إلى .gitignore قبل أول إيداع
لا تضع رموز الوصول داخل الأوامراجلبها من متغيرات البيئة
حقيقة رئيسية #3فعّل أداة لفحص الأسرار في pre-commit وفي CI لفحص مجلد .claude

تطلب من الوكيل استدعاء واجهة API، فيطلب إذنك لتنفيذ الأمر. وبعد أن تتعب من الضغط على «Yes» للمرة العاشرة، تختار «Don't ask again». خيار مريح. لكن Qodo اكتشفت أن لهذا الزر أثرًا جانبيًا: عثرت على أسرار في 1122 ملف إعدادات عامًا على GitHub، وكان Claude Code نفسه هو من حفظها هناك.

كيف يصل السر إلى ملف الإعدادات

لدى Claude Code نظام أذونات. عندما توافق على «عدم السؤال مجددًا» بشأن أمر محدد، يضيف الوكيل قاعدة إلى ملف إعدادات داخل مجلد .claude. وهناك ملف settings.json المشترك، الذي يُودَع عادةً مع المشروع، وملف settings.local.json المحلي للقواعد الشخصية.

المشكلة أن القاعدة تسجّل الأمر حرفيًا، بكل وسائطه. لنفترض أنك طلبت من الوكيل إرسال طلب باستخدام curl، وأدرجت رمز الوصول مباشرةً في ترويسة الطلب. سيحفظ الوكيل السطر كاملًا، وسيظهر الرمز في الملف بنص صريح. هذا مثال لتوضيح الآلية، وليس اقتباسًا من التقرير. لكن المنطق هو نفسه: لم تتعمد «حفظ» أي شيء، بل ضغطت على زر لتسهيل العمل.

بعد ذلك، تأخذ العادات البشرية المعتادة مجراها. يودع أحدهم مجلد .claude كاملًا لأنه يحتوي على «إعدادات مفيدة للفريق». ويصبح المستودع عامًا، فينكشف السر للجميع.

لماذا ليست مسألة بسيطة

اعتدنا أن تتسرب الأسرار من ملفات .env، أو إعدادات الخدمات السحابية، أو السلاسل النصية المثبتة مباشرةً في الشيفرة. لم تكن ملفات إعدادات الوكيل ضمن هذه الصورة؛ فقد كان يُنظر إليها بوصفها «تفضيلات شخصية للمحرر»، مثل سمة الواجهة. لكنها تتضمن بالفعل أذونات تنفيذ: ما يُسمح للوكيل بتشغيله من دون سؤال. وهذا يعني أن للملف دورين في آن واحد: سياسة أمنية، ومخزن محتمل للأسرار.

وهناك نقطة أهم. هذه الملفات لا يكتبها إنسان، بل أداة، استجابةً لنقرة، لا لقرار واعٍ بـ«حفظ الإعدادات». لا أحد يعيد قراءة ما لم يكتبه بنفسه. ومن هنا جاءت خلاصة Qodo: ينبغي مراجعة إعدادات الوكيل مثل الشيفرة.

ما الذي يمكنك فعله الآن

  • افحص مستودعاتك. ابحث داخل .claude/ عن سلاسل تشبه المفاتيح ورموز الوصول وكلمات المرور، بما في ذلك سجل git. لا يكفي حذف الملف من أحدث إيداع، فالسجل يبقى موجودًا.
  • استبدل كل الأسرار التي تجدها. إذا ظهر رمز وصول ولو مرة واحدة في مستودع عام، فاعتبره مخترقًا.
  • استبعد الملف المحلي. يجب أن يكون settings.local.json ضمن .gitignore. لا تفترض أن أحدًا سبق أن فعل ذلك.
  • أزل الأسرار من الأوامر نفسها. مرّرها عبر متغيرات البيئة أو مدير للأسرار، فتحتوي القاعدة على اسم المتغير بدلًا من قيمته.
  • فعّل الفحوص الآلية. استخدم أداة لفحص الأسرار في pre-commit وفي CI، وفعّل أيضًا حماية الدفع، أو push protection، على GitHub. أضف .claude إلى CODEOWNERS حتى لا تمر تغييرات أذونات الوكيل من دون مراجعة.
  • لا تفرط في استخدام «Don't ask again». من الأفضل تأكيد الأوامر التي تتضمن وسائط حساسة في كل مرة، أو كتابة قاعدة محددة النطاق يدويًا.

الحدود والتحفظات

نشرت التقريرَ شركة Qodo، وهي مورّد لأدوات مراجعة الشيفرة. الموضوع يقع في صميم نشاطها، وهذا ينعكس على طريقة عرضه. كذلك، لا يوضح الإعلان عدد الأسرار المكتشفة التي كانت لا تزال صالحة للاستخدام. أما رقم 1122 ملفًا فيمثل ما ظهر في البحث العام، وليس الصورة الكاملة؛ فلم تُحصَ المستودعات الخاصة.

مع ذلك، لا تقتصر المشكلة على منتج واحد. فآلية «تذكّر الأمر» نفسها موجودة في أدوات وكيلة أخرى، وتنطبق عليها الأسئلة ذاتها. ومن المعقول أن نتوقع من مطوري الوكلاء إخفاء القيم التي تبدو كأسرار أو الامتناع عن حفظها، وتحذير المستخدم قبل كتابتها في الملف.

الخلاصة

تنتج الأدوات الوكيلة فئة جديدة من الملفات: إعدادات تُكتب تلقائيًا، وتُنفّذ بصلاحياتك، ويمكن أن تصل بسهولة إلى git. تعامل معها مثل الشيفرة: مراجعة، وفحص للأسرار، و.gitignore. فهذا أقل تكلفة من معالجة تداعيات تسرب مفتاح.

القصة

أسئلة وأجوبة حول الخبر

ما أبرز التفاصيل حول كيف يصل السر إلى ملف الإعدادات؟

لدى Claude Code نظام أذونات. عندما توافق على «عدم السؤال مجددًا» بشأن أمر محدد، يضيف الوكيل قاعدة إلى ملف إعدادات داخل مجلد .claude. وهناك ملف settings.json المشترك، الذي يُودَع عادةً مع المشروع، وملف settings.local.json المحلي للقواعد الشخصية. المشكلة أن القاعدة تسجّل الأمر حرفيًا، بكل وسائطه. لنفترض أنك طلبت من الوكيل إرسال طلب باستخدام curl، وأدرجت رمز الوصول مباشرةً في ترويسة الطلب. سيحفظ الوكيل السطر كاملًا، وسيظهر الرمز في الملف بنص صريح. هذا مثال لتوضيح الآلية، وليس اقتباسًا من التقرير.

ما أبرز التفاصيل حول لماذا ليست مسألة بسيطة؟

اعتدنا أن تتسرب الأسرار من ملفات .env، أو إعدادات الخدمات السحابية، أو السلاسل النصية المثبتة مباشرةً في الشيفرة. لم تكن ملفات إعدادات الوكيل ضمن هذه الصورة؛ فقد كان يُنظر إليها بوصفها «تفضيلات شخصية للمحرر»، مثل سمة الواجهة. لكنها تتضمن بالفعل أذونات تنفيذ: ما يُسمح للوكيل بتشغيله من دون سؤال. وهذا يعني أن للملف دورين في آن واحد: سياسة أمنية، ومخزن محتمل للأسرار. وهناك نقطة أهم. هذه الملفات لا يكتبها إنسان، بل أداة، استجابةً لنقرة، لا لقرار واعٍ بـ«حفظ الإعدادات». لا أحد يعيد قراءة ما لم يكتبه بنفسه.

ما أبرز التفاصيل حول ما الذي يمكنك فعله الآن؟

افحص مستودعاتك. ابحث داخل .claude/ عن سلاسل تشبه المفاتيح ورموز الوصول وكلمات المرور، بما في ذلك سجل git. لا يكفي حذف الملف من أحدث إيداع، فالسجل يبقى موجودًا. استبدل كل الأسرار التي تجدها. إذا ظهر رمز وصول ولو مرة واحدة في مستودع عام، فاعتبره مخترقًا. استبعد الملف المحلي. يجب أن يكون settings.local.json ضمن .gitignore. لا تفترض أن أحدًا سبق أن فعل ذلك. أزل الأسرار من الأوامر نفسها. مرّرها عبر متغيرات البيئة أو مدير للأسرار، فتحتوي القاعدة على اسم المتغير بدلًا من قيمته. فعّل الفحوص الآلية.

ZK
جمال حميدون — مدير المنتجات في Alpina Digital ومدير منتج AlpinaGPT. يبني منتجات الذكاء الاصطناعي منذ 2019. بدأ Hamidun News كمشروع شخصي ثم أصبح مُجمِّعًا إنتاجيًا بأكثر من 6000 قارئ.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
ما رأيك؟
جارٍ تحميل التعليقات…