这个项目能做什么

irreversible-command-gate (icg) 是一个小型 Rust 守护程序,旨在部署在 AI 编码代理的 harness 钩子中,用于拦截少数不可撤销的操作——例如删除密钥、强制推送覆盖历史、将凭据打印到转录文本中或清除 Docker 卷——而所有其他工具调用则原样通过。它接入 harness 的 PreToolUse 钩子:输入一个 JSON 文档,输出一个决策信封。项目文档将其描述为针对诚实但易出错的代理的底线保障,而非针对恶意代理的安全边界。 工作原理:工具调用根据工具关键字分发到规则包。首先尝试安全模式并短路;在受保护模式中,首个匹配项获胜。这种顺序确保了普通的只读工作保持静默,因为只有在没有安全模式认领输入时,规则才会触发。该引擎是确定性的,不执行网络 I/O。它在设计上采用“故障开放”模式:空的包目录、无法识别的工具或崩溃的检查都允许命令通过,理由是遗漏的违规行为是可恢复的,而陷入僵局的代理集群则不然。README 报告在热缓存上的检查中值成本约为 10 毫秒,并指出在版本证明稳定后可以使用渐进式的“故障关闭”策略。 共有四种裁决,每种对应规则可声明的一个重定向通道,且只有 deny 能真正停止命令:allow(无规则匹配或安全模式首先匹配)、warning(允许通过,但在规则无法可靠决定是否拦截时提供额外上下文)、rewrite(允许通过并更新输入,以便 harness 使用相同意图的安全形式重试)以及 deny(原因中包含替代行动方案)。 交付内容:发布的规则包包括 openbao(kv destroy、metadata delete、挂载和策略删除、operator rekey、argv 中的密钥字面量、向 stdout 读取密钥)、git(裸凭据填充、将强制推送重写为普通推送、无路径规范的提交、覆盖过时的远程 head)、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(这些编码了集群本地约定)。文档将每个包标记为通用或集群特定,并命名了每个规则 ID。通过 new-pack 命令提供包脚手架,可同时编写包及其回归测试,且发布门禁会构建 deny-回归语料库,以报告不再覆盖原有内容的规则。 安装与使用:二进制文件可通过 Rust 工具链从源码构建,或作为发布资产获取。安装脚本将二进制文件和包放置在 root 所有目录下并注册钩子;它通过发送一个已知破坏性命令来验证强制执行,除非命令返回被拒绝,否则拒绝报告成功,因为半成品安装的行为与正常工作时完全一致。提供 dry-run 和卸载选项。面向用户的 check 命令始终以零状态退出,因此应解析其输出而非状态。 声明的局限性:README 明确指出 icg 不防御提示词注入或恶意仓库,不知道调用者身份(无身份、TTY 或权限检查),无法触达云端托管的代理会话(如 ChatGPT web、Codex 云任务或 claude.ai),且不涵盖 kubectl 变更、工作流文件或 Kubernetes Job 和 CronJob 对象(这些由单独的组织级强制执行处理)。环境变量可禁用该守护程序;它被审计而非被限制,因此代理设置它的便捷程度与用户相同。更新流的信任指针转换尚未进行端到端演练,被描述为未经证实。 状态:README 指出引擎、规则包、两个前端(钩子和 PATH 包装器)、发布完整性机制以及分布在 52 个文件中的 526 个通过测试均正常工作。该 crate 包含约 25,800 行 Rust 代码,有 17 个依赖项,无需 C 工具链。当前发布版本为 v0.1.4,建议从 v0.1.3 升级,因为后者修复了一个守护程序绕过漏洞(heredoc 正文中的单引号会导致词法分析器丢失命令的其余部分)。该仓库是自托管 git 实例的 MIT 许可只读镜像。