منصوبے کے بارے میں
irreversible-command-gate (icg) ایک چھوٹا Rust گارڈ ہے جسے AI کوڈنگ ایجنٹ کے harness hook میں رکھا گیا ہے تاکہ ان چند اقدامات کو پکڑا جا سکے جنہیں واپس نہیں لیا جا سکتا — جیسے کسی سیکرٹ کو ڈیلیٹ کرنا، ہسٹری پر force-push کرنا، ٹرانسکرپٹ میں کریڈنشل پرنٹ کرنا، یا Docker والیم کو ختم کرنا — جبکہ دیگر تمام ٹول کالز بغیر کسی تبدیلی کے گزر جاتی ہیں۔ یہ harness کے PreToolUse ہک میں پلگ ہوتا ہے: ایک JSON دستاویز اندر آتی ہے اور ایک فیصلہ (decision envelope) باہر جاتا ہے۔ پروجیکٹ کی دستاویزات اسے ایک ایماندار مگر خطا پذیر ایجنٹ کے لیے ایک حفاظتی رکاوٹ (backstop) کے طور پر بیان کرتی ہیں، نہ کہ کسی دشمن ایجنٹ کے خلاف سیکیورٹی باؤنڈری کے طور پر۔
یہ کیسے کام کرتا ہے: ایک ٹول کال کو ٹول کی ورڈ کے ذریعے رول پیک (rule packs) کی طرف بھیجا جاتا ہے۔ پہلے محفوظ پیٹرنز (safe patterns) کو آزمایا جاتا ہے اور اگر وہ میچ ہو جائیں تو عمل وہیں رک جاتا ہے؛ گارڈڈ پیٹرنز میں سے پہلا میچ جیتنے والا ہوتا ہے۔ یہی ترتیب عام read-only کاموں کو خاموش رکھتی ہے، کیونکہ ایک رول صرف اس وقت فعال ہوتا ہے جب کوئی محفوظ پیٹرن اسے قبول نہ کرے۔ انجن deterministic ہے اور کوئی نیٹ ورک I/O نہیں کرتا۔ یہ ڈیزائن کے لحاظ سے 'fail open' ہے: ایک خالی پیک ڈائریکٹری، غیر پہچانی گئی ٹول، یا کریش شدہ چیک، سب کمانڈ کی اجازت دیتے ہیں، اس دلیل پر کہ ایک مس شدہ خلاف ورزی قابلِ تلافی ہے جبکہ ایجنٹ فلیٹ کا رک جانا نہیں ہے۔ README کے مطابق، گرم کیش (warm cache) پر چیک کی اوسط لاگت تقریباً 10 ملی سیکنڈ ہے، اور یہ بھی بتایا گیا ہے کہ ایک 'fail-closed' پالیسی موجود ہے جسے ریلیز کے ثابت ہونے کے بعد استعمال کیا جا سکتا ہے۔
چار فیصلے (verdicts) ہیں، ہر ایک رول کے ذریعے اعلان کردہ ری ڈائریکٹ چینل کے لیے، اور صرف 'deny' ہی کمانڈ کو روکتا ہے: allow (کوئی رول میچ نہیں ہوا، یا محفوظ پیٹرن پہلے میچ ہو گیا)، warning (اجازت کے ساتھ اضافی سیاق و سباق جب رول اتنے یقین سے فیصلہ نہ کر سکے کہ بلاک کر دے)، rewrite (اجازت کے ساتھ اپ ڈیٹ شدہ ان پٹ، تاکہ harness اسی مقصد کے محفوظ فارم کے ساتھ دوبارہ کوشش کرے)، اور deny (جس کی وجہ میں متبادل طریقہ کار بتایا جاتا ہے)۔
شامل اجزاء: شائع شدہ پیک میں openbao (kv destroy, metadata delete, mount and policy deletion, operator rekey, argv میں سیکرٹ لٹرلز، stdout میں سیکرٹ ریڈز)، git (bare credential fill, force push کو سادہ push میں تبدیل کرنا, pathspec کے بغیر commits, پرانے 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 شامل ہیں، جو فلیٹ-لوکل کنونشنز کو کوڈ کرتے ہیں۔ دستاویزات ہر پیک کو 'general' یا 'fleet-specific' کے طور پر نشان زد کرتی ہیں اور ہر رول id کا نام بتاتی ہیں۔ پیک اسکیفولڈنگ کے لیے ایک new-pack کمانڈ فراہم کی گئی ہے جو ایک پیک اور اس کے ریگریشن ٹیسٹ کو ایک ساتھ لکھتی ہے، اور ایک ریلیز گیٹ deny-regression کورپس بناتا ہے تاکہ ان رولز کی رپورٹ کی جا سکے جنہوں نے وہ چیزیں روکنا بند کر دیں جنہیں وہ پہلے روکتے تھے۔
انسٹالیشن اور استعمال: بائنری کو صرف Rust ٹول چین کے ساتھ سورس سے بنایا جا سکتا ہے، یا ریلیز اثاثے کے طور پر حاصل کیا جا سکتا ہے۔ ایک انسٹال اسکرپٹ بائنری اور پیک کو root-owned کے طور پر رکھتا ہے اور ہک کو رجسٹر کرتا ہے؛ یہ جان بوجھ کر ایک معلوم تباہ کن کمانڈ کو ہک کے ذریعے بھیج کر نفاذ کو ثابت کرتا ہے اور کامیابی کی رپورٹ تب تک نہیں کرتا جب تک کہ کمانڈ 'denied' واپس نہ آئے، کیونکہ ادھوری انسٹالیشن بالکل کام کرنے والی انسٹالیشن کی طرح ہی برتاؤ کرے گی۔ Dry-run اور uninstall کے آپشنز دستیاب ہیں۔ انسانوں کے لیے check کمانڈ ہمیشہ زیرو (zero) ایگزٹ کرتی ہے، اس لیے اس کے اسٹیٹس کے بجائے اس کے آؤٹ پٹ کو پارس کیا جانا چاہیے۔
بیان کردہ حدود: README واضح طور پر کہتا ہے کہ icg پرامپٹ انجکشن یا کسی بدنیتی پر مبنی ریپوزٹری کے خلاف دفاع نہیں کرتا، یہ نہیں جانتا کہ کال کون کر رہا ہے (کوئی شناخت، TTY یا پرویلج چیک نہیں)، یہ کلاؤڈ ہوسٹڈ ایجنٹ سیشنز جیسے ChatGPT web، Codex کلاؤڈ ٹاسک یا claude.ai تک نہیں پہنچتا، اور kubectl میوٹیشنز، ورک فلو فائلوں یا Kubernetes Job اور CronJob آبجیکٹس کا احاطہ نہیں کرتا، جنہیں علیحدہ آرگ-لیول نفاذ پر چھوڑ دیا گیا ہے۔ ایک انوائرمنٹ ویری ایبل گارڈ کو غیر فعال کر سکتا ہے؛ اس کا آڈٹ کیا جاتا ہے نہ کہ اسے محدود کیا جاتا ہے، لہذا ایک ایجنٹ اسے اتنی ہی آسانی سے سیٹ کر سکتا ہے جتنا کہ ایک صارف۔ اپ ڈیٹ فلو کی trust-pointer ٹرانزیشن کو ابھی تک مکمل طور پر آزمایا نہیں گیا اور اسے غیر ثابت شدہ بیان کیا گیا ہے۔
اسٹیٹس: README کے مطابق انجن، پیک، دونوں فرنٹ اینڈز (ہک اور PATH ریپر)، ریلیز-انٹیگریٹی مشینری اور 52 فائلوں میں 526 کامیاب ٹیسٹ کام کر رہے ہیں، جو تقریباً 25,800 لائنوں کے Rust کریٹ میں ہیں جس میں 17 ڈیپینڈنسیز ہیں اور کسی C ٹول چین کی ضرورت نہیں ہے۔ یہ v0.1.4 کو موجودہ ریلیز کے طور پر نامزد کرتا ہے اور v0.1.3 کو اپ گریڈ کرنے والی ریلیز کے طور پر بیان کرتا ہے، کیونکہ اس نے ایک گارڈ بائی پاس کو بند کیا تھا جس میں heredoc باڈی میں ایک اپوسٹروفی (apostrophe) کی وجہ سے lexer کمانڈ کے باقی حصے کو کھو دیتا تھا۔ ریپوزٹری ایک MIT-لائسنس شدہ ریڈ-اونلی مرر ہے جو ایک سیلف ہوسٹڈ git انسٹنس سے منسلک ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.