প্রকল্প সম্পর্কে

irreversible-command-gate (icg) হলো একটি ছোট Rust গার্ড, যা AI কোডিং এজেন্টের হারনেস হুকের মধ্যে থেকে সেই অল্প কিছু অ্যাকশন শনাক্ত করার জন্য তৈরি করা হয়েছে যা আর পূর্বাবস্থায় ফিরিয়ে আনা সম্ভব নয় — যেমন সিক্রেট মুছে ফেলা, হিস্ট্রির ওপর ফোর্স-পুশ করা, ট্রান্সক্রিপ্টে ক্রেডেনশিয়াল প্রিন্ট করা, বা Docker ভলিউম পার্জ করা — যেখানে অন্য সব টুল কল অপরিবর্তিতভাবে চলে যায়। এটি হারনেসের PreToolUse হুকের সাথে যুক্ত হয়: একটি JSON ডকুমেন্ট ইনপুট হিসেবে নেয় এবং একটি ডিসিশন এনভেলপ আউটপুট দেয়। প্রজেক্ট ডকুমেন্টেশনে এটিকে একটি সৎ কিন্তু ভুল করতে পারে এমন এজেন্টের জন্য একটি ব্যাকস্টপ হিসেবে বর্ণনা করা হয়েছে, কোনো শত্রুভাবাপন্ন এজেন্টের বিরুদ্ধে সিকিউরিটি বাউন্ডারি হিসেবে নয়। এটি যেভাবে কাজ করে: টুল কিওয়ার্ডের মাধ্যমে একটি টুল কল রুল প্যাকগুলোতে পাঠানো হয়। প্রথমে নিরাপদ প্যাটার্নগুলো চেষ্টা করা হয় এবং সেগুলো মিলে গেলে প্রসেসটি সেখানেই শেষ হয়; গার্ডেড প্যাটার্নগুলোর মধ্যে প্রথম ম্যাচটি কার্যকর হয়। এই ক্রমবিন্যাসটি সাধারণ রিড-অনলি কাজগুলোকে নিরব রাখে, কারণ একটি রুল তখনই কার্যকর হয় যখন কোনো নিরাপদ প্যাটার্ন ইনপুটটিকে গ্রহণ করে না। এই ইঞ্জিনটি ডিটারমিনিস্টিক এবং কোনো নেটওয়ার্ক I/O সম্পাদন করে না। এটি ডিজাইনের কারণেই 'ফেল ওপেন' (fail open) পদ্ধতিতে কাজ করে: একটি খালি প্যাক ডিরেক্টরি, একটি অপরিচিত টুল, অথবা কোনো চেক ক্র্যাশ করলে কমান্ডটি অনুমোদিত হয়, কারণ যুক্তিটি হলো যে একটি মিস হওয়া ভায়োলেশন পুনরুদ্ধার করা সম্ভব, কিন্তু একটি আটকে যাওয়া এজেন্ট ফ্লিট সম্ভব নয়। README-তে উল্লেখ করা হয়েছে যে ওয়ার্ম ক্যাশে-তে চেক করার গড় খরচ প্রায় ১০ মিলি-সেকেন্ড, এবং একটি গ্র্যাজুয়েটেড ফেল-ক্লোজড পলিসি বিদ্যমান যা রিলিজ প্রমাণিত হওয়ার পর ব্যবহার করা যায়। চারটি ভারডিক্ট বা রায় রয়েছে, যার প্রতিটির জন্য একটি রিডাইরেক্ট চ্যানেল থাকে এবং শুধুমাত্র 'deny' কমান্ডটিকে থামায়: allow (কোনো রুল ম্যাচ করেনি, অথবা নিরাপদ প্যাটার্ন আগে ম্যাচ করেছে), warning (অনুমতি দেওয়া হয় তবে সাথে অতিরিক্ত কনটেক্সট দেওয়া হয় যখন রুলটি ব্লক করার জন্য যথেষ্ট নির্ভরযোগ্যভাবে সিদ্ধান্ত নিতে পারে না), rewrite (অনুমতি দেওয়া হয় তবে আপডেট করা ইনপুট দেওয়া হয়, যাতে হারনেস একই উদ্দেশ্যের একটি নিরাপদ ফর্ম দিয়ে পুনরায় চেষ্টা করে), এবং deny (যেখানে বিকল্প পদক্ষেপের কারণ উল্লেখ থাকে)। কী কী সরবরাহ করা হয়েছে: প্রকাশিত প্যাকগুলোর মধ্যে রয়েছে openbao (kv destroy, metadata delete, mount এবং policy deletion, operator rekey, argv-তে সিক্রেট লিটারেলস, stdout-এ সিক্রেট রিড), git (বেয়ার ক্রেডেনশিয়াল ফিল, ফোর্স পুশ-কে প্লেইন পুশে রূপান্তর, পাথস্পেক ছাড়া কমিট, একটি পুরনো রিমোট হেডের ওপর পুশ), secrets (GitHub টোকেন এবং PAT, AWS কী, Slack টোকেন, Anthropic কী, PEM প্রাইভেট-কী ব্লক, যা কমান্ড এবং ফাইলের বিষয়বস্তুতে ম্যাচ করা হয়), docker (system prune --all, volume rm, image rm --force), image-tag, storage-class, সাথে beads, misc, tmux এবং argocd-topology, যা ফ্লিট-লোকাল কনভেনশন এনকোড করে। ডকুমেন্টেশনে প্রতিটি প্যাককে জেনারেল বা ফ্লিট-স্পেসিফিক হিসেবে চিহ্নিত করা হয়েছে এবং প্রতিটি রুল আইডি-র নাম দেওয়া হয়েছে। একটি new-pack কমান্ডের মাধ্যমে প্যাক স্ক্যাফোল্ডিং প্রদান করা হয়েছে যা একটি প্যাক এবং তার রিগ্রেশন টেস্ট একসাথে লেখে, এবং একটি রিলিজ গেট একটি ডিনাই-রিগ্রেশন করপাস তৈরি করে সেই রুলগুলো রিপোর্ট করে যা আগে কভার করত কিন্তু এখন আর করে না। ইনস্টল এবং ব্যবহার: বাইনারিটি শুধুমাত্র একটি Rust টুলচেইনের মাধ্যমে সোর্স থেকে বিল্ড করা যেতে পারে, অথবা রিলিজ অ্যাসেট হিসেবে সংগ্রহ করা যেতে পারে। একটি ইনস্টল স্ক্রিপ্ট বাইনারি এবং প্যাকগুলোকে রুট-মালিকানাধীন হিসেবে স্থাপন করে এবং হুকটি রেজিস্টার করে; এটি ইচ্ছাকৃতভাবে একটি পরিচিত ধ্বংসাত্মক কমান্ড হুকের মাধ্যমে পাঠিয়ে এনফোর্সমেন্ট প্রমাণ করে এবং যতক্ষণ না কমান্ডটি ডিনাইড হয়ে ফিরে আসে ততক্ষণ সফলতার রিপোর্ট করে না, কারণ একটি অর্ধেক সম্পন্ন ইনস্টলেশন ঠিক একটি কার্যকর ইনস্টলেশনের মতোই আচরণ করবে। ড্রাই-রান এবং আনইনস্টল অপশন উপলব্ধ রয়েছে। মানুষের ব্যবহারের জন্য check কমান্ডটি সর্বদা জিরো এক্সিট করে, তাই এর স্ট্যাটাসের পরিবর্তে আউটপুটটি পার্স করা উচিত। ঘোষিত সীমাবদ্ধতা: README-তে স্পষ্টভাবে বলা হয়েছে যে icg প্রম্পট ইনজেকশন বা ম্যালিশিয়াস রিপোজিটরির বিরুদ্ধে সুরক্ষা দেয় না, কে কল করছে তা জানে না (কোনো আইডেন্টিটি, TTY বা প্রিভিলেজ চেক নেই), ChatGPT ওয়েব, Codex ক্লাউড টাস্ক বা claude.ai-এর মতো ক্লাউড-হোস্টেড এজেন্ট সেশনে পৌঁছাতে পারে না, এবং kubectl মিউটেশন, ওয়ার্কফ্লো ফাইল বা Kubernetes Job এবং CronJob অবজেক্ট কভার করে না, যা আলাদা অর্গানাইজেশন-লেভেল এনফোর্সমেন্টের জন্য রাখা হয়েছে। একটি এনভায়রনমেন্ট ভেরিয়েবল গার্ডটিকে নিষ্ক্রিয় করতে পারে; এটি সীমাবদ্ধ করার পরিবর্তে অডিট করা হয়, তাই একজন এজেন্ট এটি ঠিক তেমন সহজভাবেই সেট করতে পারে যেমন একজন ব্যবহারকারী পারেন। আপডেট ফ্লো-র ট্রাস্ট-পয়েন্টার ট্রানজিশনটি এখনও এন্ড-টু-এন্ড পরীক্ষা করা হয়নি এবং এটিকে অপ্রমাণিত হিসেবে বর্ণনা করা হয়েছে। বর্তমান অবস্থা: README-তে বলা হয়েছে যে ইঞ্জিন, প্যাকস, উভয় ফ্রন্ট-এন্ড (হুক এবং PATH র‍্যাপার), রিলিজ-ইনটিগ্রিটি মেশিনারি এবং ৫২টি ফাইলের ৫২৬টি পাসিং টেস্ট কাজ করছে, যা প্রায় ২৫,৮০০ লাইনের Rust কোড এবং ১৭টি ডিপেন্ডেন্সি নিয়ে গঠিত এবং এর জন্য কোনো C টুলচেইনের প্রয়োজন নেই। এটি v0.1.4-কে বর্তমান রিলিজ হিসেবে উল্লেখ করেছে এবং v0.1.3-কে আপগ্রেড করার রিলিজ হিসেবে বর্ণনা করেছে, কারণ এটি একটি গার্ড বাইপাস বন্ধ করেছে যেখানে heredoc বডির একটি অ্যাপোস্ট্রফি লেক্সারকে কমান্ডের বাকি অংশ হারাতে বাধ্য করত। রিপোজিটরিটি একটি সেলফ-হোস্টেড গিট ইনস্ট্যান্সের MIT-লাইসেন্সপ্রাপ্ত রিড-অনলি মিরর।