المستودع هو سطح التعرّض
عندما يُوكَل إلى وكيل برمجة مهمة، يُمنح عادةً صلاحية الوصول إلى شجرة عمل. تلك الشجرة ليست بيئة معزولة محايدة. إنها تحتوي على كامل تاريخ الالتزامات، وكل الفروع، وكل الوسوم، وأي ملفات غير متتبَّعة أو متجاهَلة تصادف وجودها. الوكيل يقرأ ما هو موجود. إذا كان المستودع قد احتوى يوماً على صورة، أو بيانات اعتماد، أو نسخة قاعدة بيانات، أو كتلة ثنائية، فإن الوكيل يستطيع قراءتها ونسخها وتحويلها وإعادة كتابتها. التقرير الأخير عن كشف 13,000 صورة داخلية عبر وكلاء البرمجة ليس قصة عن أمر نصي بارع. إنه قصة عمّا يحدث عندما يرث وكيل مستودعاً دون حدود احتواء.
طبقة التعليمات هي المكان الخاطئ للبحث عن الأمان. الأوامر النصية استشارية. يفسّرها نموذج يُحسّن لإكمال المهمة، لا لسياسة تصنيف بياناتك. أمر نصي يقول "لا تقرأ مجلد الأسرار" هو اقتراح، لا ضابط وصول. حدود المستودع هي ضابط وصول. يفرضها نظام الملفات، والمستودع البعيد، وبيانات الاعتماد التي يحملها الوكيل. هنا ينتمي العمل الهندسي.
لماذا وكلاء البرمجة فئة تعرّض مختلفة
معظم عمليات نشر وكلاء LLM تتفاعل مع واجهات برمجية. وكلاء البرمجة يتفاعلون مع نظام تحكم بالإصدارات. هذا الفرق يغيّر أنماط الفشل بثلاث طرق.
أولاً، يعمل الوكيل داخل شجرة عمل بصلاحية قراءة كاملة للتاريخ والفروع والملفات غير المتتبَّعة. نسخة العمل ليست لقطة للحالة الراهنة؛ إنها سجل كامل لكل ما تم الالتزام به يوماً. إذا تم الالتزام بسر ثم إزالته، فإنه لا يزال في مخزن الكائنات. إذا أُضيفت صورة على فرع ميزة، فهي قابلة للوصول. لا يحتاج الوكيل إلى تعليمات للعثور عليها. الأدوات القياسية — git log، git grep، git cat-file — تُظهرها كجزء من الاستكشاف العادي.
ثانياً، يشغّل وكلاء البرمجة routinely أوامر تنتج وتلتزم بكتل ثنائية. مخرجات البناء، أوزان النماذج، لقطات الشاشة، تجهيزات الاختبار، التقارير المولَّدة. هذه لا تُظهر فروقاً نظيفة. فرق نصي لملف ثنائي إما سطر واحد "Binary files differ" أو جدار من البايتات غير المقروءة. المراجعون يتخطونها. تدخل الكتلة التاريخ، وبمجرد دخولها التاريخ، تدخل كل نسخة استنساخ لاحقة.
ثالثاً، قناة الإخراج هي نظام تحكم بالإصدارات مع مستودع بعيد. كل خطأ يحتمل أن يكون علنياً ودائماً. الدفع إلى مستودع بعيد عام ليس نقل ملف؛ إنه حدث نشر. إعادة كتابة التاريخ بعد وقوعه ممكنة لكنها تعطيلية، وهي لا تلغي نشر أي شيء تم جلبه بالفعل. اللارجعة بنيوية، لا إجرائية.
تتحد هذه الخصائص الثلاث في فئة تعرّض محددة: وكيل يستطيع قراءة كامل التاريخ، وكتابة كتل غامضة، والنشر إلى مستودع بعيد. هذا ملف مخاطر مختلف عن وكيل يستطيع استدعاء واجهة برمجية محددة النطاق.

قواعد تحديد النطاق التي تتبع
وحدة الاحتواء هي حدود المستودع. القواعد التالية تتبع مباشرة من ذلك.
استنسخ بشكل سطحي ومحدد النطاق. الوكيل الذي يحتاج حزمة واحدة يجب ألا يتلقى تاريخ المستودع الأحادي. استخدم استنساخاً سطحياً (--depth 1) ونسخة عمل متفرقة (--filter=blob:none، --sparse) بحيث تحتوي شجرة العمل فقط على المسارات التي تتطلبها المهمة. هذا ليس تحسيناً للأداء؛ إنه تقليل لسطح القراءة. إذا لم يستطع الوكيل رؤية الكائن، لا يستطيع تسريب الكائن.
افصل بيانات اعتماد الوكيل عن بيانات اعتماد الإنسان. يجب ألا يحمل الوكيل رمز وصول شخصي يستطيع قراءة كل مستودع يستطيع الإنسان قراءته. يجب أن يحمل بيانات اعتماد محددة النطاق للمستودع المحدد، ويجب أن تكون لهذه البيانات حقوق دفع إلى مستودع بعيد مرحلي فقط. المستودع البعيد المرحلي هو حيث تصل الالتزامات التي أنشأها الوكيل. الترقية إلى المستودع البعيد الأساسي خطوة منفصلة يتحكم بها الإنسان.
تعامل مع المستودع كسطح قدرات. قبل تحديد ما يستطيع الوكيل كتابته، عدّد ما يستطيع قراءته. هذا هو نفس الانضباط في الأمان القائم على القدرات: مجموعة الكائنات القابلة للقراءة تحدد مجموعة الكائنات القابلة للتسريب. إذا شمل التعداد التاريخ والفروع والملفات غير المتتبَّعة، فيجب أن يكون نطاق كتابة الوكيل ضيقاً بالمقابل.
المقايضة الصادقة: الاستنساخات السطحية محددة النطاق تكسر بعض سير عمل الوكلاء. الوكلاء الذين يحتاجون إلى تنصيف انحدار، أو تتبع تغيير عبر التاريخ، أو التفكير في فرع طويل الأمد سيفشلون أو ينتجون نتائج أسوأ. التخفيف هو توفير مسار منفصل، للقراءة فقط، ومُدقَّق للوصول إلى التاريخ — لا توسيع الاستنساخ الافتراضي. يجب أن يكون الافتراضي هو السطح الضيق؛ والاستثناء يجب أن يكون صريحاً ومسجَّلاً.
كشف لا يعتمد على سلوك الوكيل
يجب ألا يعتمد الكشف على اتباع ال
افحص الكتل المجهَّزة قبل الالتزام، لا بعد الدفع. خطاف ما قبل الالتزام الذي يفحص المحتوى المجهَّز بحثاً عن سلاسل عالية العشوائية وترويسات صور معروفة يلتقط فئة التسريب قبل دخولها التاريخ. الفحص عالي العشوائية يلتقط بيانات الاعتماد والمفاتيح. فحص الترويسات يلتقط بايتات PNG وJPEG وGIF وWebP السحرية. كلاهما رخيص وحتمي. النقطة هي تشغيلهما على الكائن المجهَّز، لا على شجرة العمل، لأن الكائن المجهَّز هو ما سيُلتزم به.

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