इस प्रोजेक्ट के बारे में

irreversible-command-gate (icg) एक छोटा Rust गार्ड है जिसे AI कोडिंग एजेंट के हार्नेस हुक में रखने के लिए बनाया गया है, ताकि उन कुछ कार्यों को पकड़ा जा सके जिन्हें वापस नहीं लिया जा सकता — जैसे किसी सीक्रेट को हटाना, हिस्ट्री पर फोर्स-पुश करना, ट्रांसक्रिप्ट में क्रेडेंशियल प्रिंट करना, या Docker वॉल्यूम को हटाना — जबकि अन्य सभी टूल कॉल बिना किसी बदलाव के पास हो जाते हैं। यह हार्नेस के PreToolUse हुक से जुड़ता है: एक JSON दस्तावेज़ अंदर आता है, और एक निर्णय लिफाफा (decision envelope) बाहर निकलता है। प्रोजेक्ट दस्तावेज़ीकरण इसे एक शत्रुतापूर्ण एजेंट के खिलाफ सुरक्षा सीमा के बजाय एक ईमानदार लेकिन त्रुटिपूर्ण एजेंट के लिए एक बैकस्टॉप के रूप में वर्णित करता है। यह कैसे काम करता है। टूल कॉल को टूल कीवर्ड द्वारा रूल पैक्स (rule packs) पर भेजा जाता है। पहले सुरक्षित पैटर्न (safe patterns) आजमाए जाते हैं और शॉर्ट-सर्किट हो जाते हैं; गार्डेड पैटर्न के बीच पहला मिलान जीतने वाला होता है। यही क्रम सामान्य रीड-ओनली काम को शांत रखता है, क्योंकि एक नियम केवल उसी इनपुट पर सक्रिय होता है जिसे किसी सुरक्षित पैटर्न ने दावा नहीं किया हो। इंजन नियतात्मक (deterministic) है और कोई नेटवर्क I/O नहीं करता है। यह डिज़ाइन द्वारा 'फेल ओपन' (fail open) रहता है: एक खाली पैक निर्देशिका, एक अपरिचित टूल, या क्रैश हुआ चेक सभी कमांड की अनुमति देते हैं, इस तर्क पर कि एक छूटी हुई उल्लंघन की भरपाई की जा सकती है, जबकि एक फंसे हुए एजेंट बेड़े (agent fleet) की नहीं। README एक वार्म कैश पर लगभग 10 मिलीसेकंड की औसत चेक लागत की रिपोर्ट करता है, और नोट करता है कि एक ग्रेजुएटेड 'फेल-क्लोज्ड' नीति मौजूद है जिसका उपयोग तब किया जा सकता है जब कोई रिलीज़ खुद को साबित कर ले। चार निर्णय (verdicts), प्रत्येक उस रीडायरेक्ट चैनल के लिए जिसे एक नियम घोषित कर सकता है, और केवल 'deny' वास्तव में कमांड को रोकता है: allow (कोई नियम मेल नहीं खाया, या सुरक्षित पैटर्न पहले मेल खा गया), warning (अनुमति प्लस अतिरिक्त संदर्भ जब नियम ब्लॉक करने के लिए पर्याप्त रूप से विश्वसनीय निर्णय नहीं ले पाता), rewrite (अनुमति प्लस अपडेट किया गया इनपुट, ताकि हार्नेस उसी इरादे के सुरक्षित रूप के साथ पुन: प्रयास करे), और deny (कारण में वैकल्पिक कार्ययोजना दी जाती है)। क्या उपलब्ध है। प्रकाशित पैक्स में openbao (kv destroy, metadata delete, mount और policy deletion, operator rekey, argv में सीक्रेट लिटरल्स, stdout पर सीक्रेट रीड्स), git (बेयर क्रेडेंशियल फिल, फोर्स पुश को प्लेन पुश में बदलना, बिना पाथस्पेक के कमिट्स, पुराने रिमोट हेड पर पुश करना), 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 शामिल हैं, जो फ्लीट-लोकल कन्वेंशन को एनकोड करते हैं। दस्तावेज़ीकरण प्रत्येक पैक को सामान्य या फ्लीट-विशिष्ट के रूप में चिह्नित करता है और हर नियम आईडी का नाम देता है। पैक स्कैफोल्डिंग एक new-pack कमांड के माध्यम से प्रदान की जाती है जो एक पैक और उसके रिग्रेशन टेस्ट को एक साथ लिखता है, और एक रिलीज़ गेट एक deny-regression कॉर्पस बनाता है ताकि उन नियमों की रिपोर्ट की जा सके जिन्होंने वह कवर करना बंद कर दिया जो वे पहले करते थे। इंस्टॉल और उपयोग। बाइनरी को केवल Rust टूलचेन के साथ सोर्स से बनाया जा सकता है, या रिलीज़ एसेट के रूप में प्राप्त किया जा सकता है। एक इंस्टॉल स्क्रिप्ट बाइनरी और पैक्स को रूट-ओन्ड (root-owned) रखता है और हुक को रजिस्टर करता है; यह जानबूझकर एक ज्ञात-विनाशकारी कमांड को हुक के माध्यम से भेजकर प्रवर्तन को साबित करता है और तब तक सफलता की रिपोर्ट करने से इनकार करता है जब तक कि कमांड 'denied' वापस न आ जाए, क्योंकि एक आधा-अधूरा इंस्टॉलेशन अन्यथा बिल्कुल एक काम करने वाले इंस्टॉलेशन की तरह व्यवहार करेगा। ड्राई-रन और अनइंस्टॉल विकल्प उपलब्ध हैं। मानव-सामना करने वाला check कमांड हमेशा जीरो एग्जिट करता है, इसलिए इसके स्टेटस के बजाय इसके आउटपुट को पार्स किया जाना चाहिए। बताई गई सीमाएं। README स्पष्ट है कि icg प्रॉम्प्ट इंजेक्शन या दुर्भावनापूर्ण रिपॉजिटरी के खिलाफ रक्षा नहीं करता है, यह नहीं जानता कि कौन कॉल कर रहा है (कोई पहचान, TTY या विशेषाधिकार जांच नहीं), यह ChatGPT वेब, Codex क्लाउड टास्क या claude.ai जैसे क्लाउड-होस्टेड एजेंट सत्रों तक नहीं पहुँचता है, और kubectl म्यूटेशन, वर्कफ़्लो फ़ाइलों या Kubernetes Job और CronJob ऑब्जेक्ट्स को कवर नहीं करता है, जिन्हें अलग संगठन-स्तरीय प्रवर्तन के लिए छोड़ दिया गया है। एक एनवायरनमेंट वेरिएबल गार्ड को अक्षम कर सकता है; इसका ऑडिट किया जाता है न कि इसे प्रतिबंधित किया जाता है, इसलिए एक एजेंट इसे उतनी ही आसानी से सेट कर सकता है जितना कि एक उपयोगकर्ता। अपडेट फ्लो का ट्रस्ट-पॉइंटर ट्रांज़िशन एंड-टू-एंड अभ्यास नहीं किया गया है और इसे अप्रमाणित बताया गया है। स्थिति। README बताता है कि इंजन, पैक्स, दोनों फ्रंट-एंड (हुक और PATH रैपर), रिलीज़-इंटीग्रिटी मशीनरी और 52 फ़ाइलों में 526 पासिंग टेस्ट काम कर रहे हैं, जो लगभग 25,800 लाइनों के Rust क्रेट में हैं जिसमें 17 डिपेंडेंसी हैं और किसी C टूलचेन की आवश्यकता नहीं है। यह v0.1.4 को वर्तमान रिलीज़ के रूप में नामित करता है और v0.1.3 को अपग्रेड करने वाली रिलीज़ के रूप में वर्णित करता है, क्योंकि इसने एक गार्ड बाईपास को बंद किया था जिसमें heredoc बॉडी में एक एपोस्ट्रोफी के कारण लेक्सर कमांड के बाकी हिस्से को खो देता था। रिपॉजिटरी एक MIT-लाइसेंस प्राप्त रीड-ओनली मिरर है जो एक सेल्फ-होस्टेड git इंस्टेंस का है।