destructive_command_guard —— 一个阻止AI Agent执行危险Git和Shell命令的安全工具
速览
基于Rust实现的高性能安全守卫,通过拦截和分析命令字符串,识别并阻止rm -rf、git push --force等危险操作。适用于CI/CD流水线、自动化脚本以及任何集成AI Agent执行shell命令的场景,有效防止数据丢失和系统损坏。
AI 深度解读
这是什么
destructive_command_guard(简称 dcg)是一个用 Rust 编写的高性能命令拦截钩子(hook),专门为 AI 编码智能体设计。它能在破坏性命令实际执行前拦截并阻止,从而防止因误操作导致的代码或数据丢失。项目在 GitHub 上获得 2358 颗星,主语言为 Rust。
dcg 支持拦截来自主流 AI 编码工具的指令,包括 Claude Code、Codex CLI (0.125.0+)、Gemini CLI、GitHub Copilot CLI、VS Code Copilot Chat、Cursor IDE、Hermes Agent、Grok (xAI)、Antigravity CLI (agy)、OpenCode、Pi、Aider(仅 git hooks)和 Continue(仅检测)。它同时兼容 Linux、macOS 和 Windows(通过 WSL 或原生 Windows PowerShell 安装)。
解决的问题
AI 编码智能体在处理复杂任务时,偶尔会执行灾难性命令,例如:
git reset --hard HEAD~5—— 丢失未提交的工作rm -rf ./src—— 删除整个源目录DROP TABLE users—— 清空数据库表kubectl delete namespace production—— 删除整个 Kubernetes 命名空间aws ec2 terminate-instances—— 终止所有 EC2 实例
这些命令一旦执行,可能几秒内摧毁数小时甚至数天的劳动成果。dcg 通过在命令发出前进行模式匹配和安全检查,阻止这类操作,并给出清除的解释和替代建议。
核心功能
1. 模块化的“包”系统
dcg 将破坏性命令模式按类别组织成“包”(pack),用户可在配置中按需启用或禁用。例如:
- 始终启用且不可禁用:
core.filesystem(危险的rm -rf)、core.git(丢失未提交、重写历史、销毁 stash 的 git 命令) - 默认启用(可关闭):
system.disk(mkfs、dd到设备、fdisk、parted、mdadm、lvm移除、wipefs) - Windows 默认启用:
windows.filesystem(del /s、rd /s、Remove-Item -Recurse -Force、Clear-Content、Clear-RecycleBin)和windows.system(vssadmin delete shadows、diskpart、Format-Volume、Clear-Disk等) - 可选启用包:
database.postgresql(DROP TABLE、TRUNCATE)、containers.docker(docker system prune)、kubernetes.kubectl(kubectl delete namespace)、cloud.aws(aws ec2 terminate-instances)、storage.s3等 50+ 个安全包。
2. 智能体感知配置
dcg 能自动识别调用它的 AI 编码工具(例如 Claude Code、Codex CLI、Gemini CLI 等),并应用不同的规则。用户可以通过 [agents.<name>] 配置信任级别、白名单和禁用包。例如:
- 对 Claude Code 可设置
trust_level = "high",放宽白名单,禁用kubernetes包。 - 对未知智能体可设置
trust_level = "low",启用paranoid额外包,并禁用白名单绕过。
3. 高性能架构
底层采用 SIMD 加速过滤和惰性编译正则表达式,实现亚毫秒级拦截。初始 Rust 版本由 Darin Gordon 从 Python 移植并优化性能,后续由 Jeffrey Emanuel 扩展了模块化包系统、heredoc/inline-script 扫描、三层架构、上下文分类、白名单、扫描模式以及双正则引擎。
4. 安装与自动配置
提供一键安装脚本(curl | bash 和 PowerShell),自动检测平台、下载正确二进制文件、验证 SHA256 和 Sigstore/cosign 签名,并自动配置支持的 AI 工具钩子(如 Claude Code 的 ~/.claude/hooks/、Codex CLI 的 ~/.codex/、Copilot CLI 的用户级钩子等)。
5. 对 Codex CLI 的一等支持
dcg 将 Codex CLI 视为一等钩子目标,安装器自动检测 codex 命令或目录,并生成 Codex 可接受的 denial 输出(忽略未知字段),确保被阻止的命令报告为“已阻止”而非“钩子失败”。
6. 绕过机制
如果用户确实需要执行某个被阻止的命令,可通过环境变量 DCG_BYPASS=1 临时关闭所有保护(建议仅用于一次性操作,常规用法应编辑白名单)。
亮点 / 与同类相比
- 覆盖面广:支持 10+ 种主流 AI 编码工具,且 agent 感知配置使其对不同工具行为差异有针对性处理,远远超出简单通用钩子。
- 模块化设计:不同于固定规则集,
dcg的“包”系统让用户按场景组合安全策略,从最灾难性的保护(核心包)到特定云/数据库/容器操作的加固(可选包),灵活性高。 - 即装即用:默认配置覆盖最常发生的灾难性错误(
rm -rf、git reset --hard、格式化磁盘等),Windows 用户还能获得原生 PowerShell/Cmd 命令保护。零配置即可上路。 - 性能优先:Rust 实现 + SIMD 加速,延迟极小,不会拖慢 AI 智能体的响应速度。相比 Python 版脚本钩子,性能提升显著。
- 验证机制:安装时验证二进制签名(SHA256 + Sigstore/cosign),确保不会被篡改。
- 社区与背景:项目源自 Jeffrey Emanuel 的 Python 脚本原型,经 Rust 重写并大幅扩展,形成了完整的安全体系。不是临时解决方案,而是面向生产环境的工具。
适合谁用 / 上手
适合人群:
- 日常使用 AI 编码智能体(Claude Code、Codex CLI、Copilot CLI 等)的开发者
- 在本地或 CI 环境中运行自动化任务的团队,担心误操作删除关键文件
- 管理多租户开发环境,希望为 AI 工具添加审计和安全层的组织
- 需要防止误操作破坏数据库、云资源或 Kubernetes 集群的工程师
上手步骤:
-
安装:在终端运行以下命令(以 Linux/macOS 为例):
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode该脚本会自动检测平台,下载对应二进制,配置支持的 AI 工具钩子(Claude Code、Codex CLI、Gemini CLI、Copilot CLI、Cursor IDE 等)。
-
验证:安装完成后,运行
dcg check或由安装器自动执行自测(带--verify标志)。 -
自定义配置:执行
dcg init生成默认~/.config/dcg/config.toml,可按需启用更多安全包(如database.postgresql、containers.docker、cloud.aws)。例如:[packs] enabled = ["database.postgresql", "containers.docker", "cloud.aws"] -
添加白名单:对于某些合法且安全的命令,可在 agent 配置的
additional_allowlist中添加,避免误拦截。 -
绕过:当确实需要执行被阻止的命令时,临时使用
DCG_BYPASS=1前缀运行命令。
更多细节可查阅项目文档的 docs/ 目录,包括针对每个支持工具的集成指南和
