عن المشروع

إن irreversible-command-gate (icg) هو حارس صغير مكتوب بلغة Rust مصمم ليوضع في خطاف (hook) الخاص ببيئة عمل وكيل برمجة AI، وذلك لالتقاط عدد قليل من الإجراءات التي لا يمكن التراجع عنها — مثل حذف سر، أو القيام بـ force-push فوق السجل، أو طباعة بيانات اعتماد في السجل، أو مسح وحدة تخزين Docker — بينما تمر جميع استدعاءات الأدوات الأخرى دون تغيير. يتم ربطه بخطاف PreToolUse الخاص ببيئة العمل: مستند JSON واحد في المدخلات، وغلاف قرار واحد في المخرجات. تصف وثائق المشروع الأداة بأنها صمام أمان لوكيل صادق ولكنه معرض للخطأ، وليست حدوداً أمنية ضد وكيل معادٍ. آلية العمل: يتم إرسال استدعاء الأداة إلى حزم القواعد بناءً على الكلمة المفتاحية للأداة. يتم تجربة الأنماط الآمنة أولاً وتؤدي إلى إنهاء العملية مبكراً؛ ومن بين الأنماط المحروسة، يفوز أول تطابق. هذا الترتيب هو ما يحافظ على هدوء أعمال القراءة العادية، لأن القاعدة لا تعمل إلا على المدخلات التي لم يطالب بها أي نمط آمن. المحرك حتمي ولا يقوم بأي عمليات إدخال/إخراج للشبكة. وهو مصمم ليفشل في حالة السماح (fail open): فالمجلد الفارغ للحزم، أو الأداة غير المعترف بها، أو تعطل الفحص، كلها تسمح بالأمر، بناءً على منطق أن انتهاكاً فائتاً يمكن استدراكه بينما تعطل أسطول من الوكلاء لا يمكن استدراكه. يشير ملف README إلى أن متوسط تكلفة الفحص تبلغ حوالي 10 مللي ثانية عند استخدام ذاكرة تخزين مؤقتة نشطة، ويشير إلى وجود سياسة تدريجية للفشل في حالة الرفض (fail-closed) لاستخدامها بمجرد إثبات كفاءة الإصدار. هناك أربعة أحكام، واحد لكل قناة إعادة توجيه يمكن للقاعدة الإعلان عنها، وفقط "deny" هو الذي يوقف الأمر فعلياً: allow (لم تتطابق أي قاعدة، أو تطابق نمط آمن أولاً)، warning (سماح بالإضافة إلى سياق إضافي عندما لا تستطيع القاعدة اتخاذ قرار موثوق بما يكفي للمنع)، rewrite (سماح بالإضافة إلى مدخلات محدثة، بحيث تعيد بيئة العمل المحاولة بصيغة آمنة لنفس القصد)، وdeny (يحمل السبب مسار العمل البديل). ما يتم شحنه: تتضمن الحزم المنشورة openbao (تدمير kv، حذف البيانات الوصفية، حذف mount والسياسات، إعادة مفتاح المشغل، النصوص الصريحة للأسرار في argv، قراءة الأسرار إلى stdout)، وgit (تعبئة بيانات الاعتماد العارية، تحويل force push إلى push عادي، الالتزامات بدون pathspec، الدفع فوق remote head قديم)، وsecrets (رموز GitHub وPATs، مفاتيح AWS، رموز Slack، مفاتيح Anthropic، كتل المفاتيح الخاصة PEM، المطابقة في الأوامر وفي محتوى الملفات)، وdocker (system prune --all، volume rm، image rm --force)، وimage-tag، وstorage-class، بالإضافة إلى beads وmisc وtmux وargocd-topology، والتي تشفر الاصطلاحات المحلية للأسطول. تحدد الوثائق كل حزمة كعامة أو خاصة بالأسطول وتسمي كل معرف قاعدة (rule id). يتم توفير هيكل الحزم من خلال أمر new-pack الذي يكتب الحزمة واختبار التراجع الخاص بها معاً، ويقوم بوابة الإصدار ببناء مجموعة تراجع للرفض (deny-regression corpus) للإبلاغ عن القواعد التي توقفت عن تغطية ما كانت تغطيه سابقاً. التثبيت والاستخدام: يمكن بناء الملف الثنائي من المصدر باستخدام مجموعة أدوات Rust فقط، أو جلبه كأصل من الإصدارات. يقوم نص تثبيت بوضع الملف الثنائي وجذور الحزم بملكية root ويسجل الخطاف؛ وهو يثبت الإنفاذ عمداً عن طريق إرسال أمر تدميري معروف عبر الخطاف ويرفض الإبلاغ عن النجاح ما لم يعد الأمر مرفوضاً، لأن التثبيت غير المكتمل سيتصرف تماماً مثل التثبيت العامل. تتوفر خيارات التشغيل التجريبي (Dry-run) وإلغاء التثبيت. أمر check الموجه للبشر يخرج دائماً بالقيمة صفر، لذا فإن مخرجاته بدلاً من حالته هي ما يجب تحليله. القيود المذكورة: يوضح ملف README صراحة أن icg لا يدافع ضد حقن الأوامر (prompt injection) أو المستودعات الخبيثة، ولا يعرف من يتصل (لا يوجد تحقق من الهوية أو TTY أو الامتيازات)، ولا يصل إلى جلسات الوكلاء المستضافة سحابياً مثل ChatGPT web أو Codex cloud tasks أو claude.ai، ولا يغطي تعديلات kubectl أو ملفات سير العمل أو كائنات Kubernetes Job وCronJob، والتي تترك لإنفاذ منفصل على مستوى المؤسسة. يمكن لمتغير بيئة تعطيل الحارس؛ حيث يتم تدقيقه بدلاً من تقييده، لذا يمكن للوكيل تعيينه بسهولة كما يفعل المستخدم. انتقال مؤشر الثقة في تدفق التحديث لم يتم اختباره من البداية إلى النهاية ويوصف بأنه غير مثبت. الحالة: ينص ملف README على أن المحرك، والحزم، وكلا الواجهتين الأماميتين (الخطاف وغلاف PATH)، وآليات سلامة الإصدار و526 اختباراً ناجحاً عبر 52 ملفاً تعمل، في crate يتكون من حوالي 25,800 سطر من Rust مع 17 تبعية وبدون متطلبات لمجموعة أدوات C. يحدد v0.1.4 كإصدار حالي ويصف v0.1.3 كإصدار يجب الترقية منه، لأنه أغلق ثغرة تجاوز للحارس حيث تسبب وجود علامة اقتباس مفردة في جسم heredoc في فقدان المحلل اللغوي لبقية الأمر. المستودع هو مرآة للقراءة فقط مرخصة بموجب MIT لمثيل git مستضاف ذاتياً.