← 返回信息流
GitHub 热榜GitHub Trending · 日·1 小时前

destructive_command_guard —— 一个阻止AI Agent执行危险Git和Shell命令的安全工具

原标题:Dicklesworthstone/destructive_command_guard
Rust2,358 stars+444 今日

速览

基于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 CodeCodex CLI (0.125.0+)、Gemini CLIGitHub Copilot CLIVS Code Copilot ChatCursor IDEHermes AgentGrok (xAI)Antigravity CLI (agy)OpenCodePiAider(仅 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.diskmkfsdd 到设备、fdiskpartedmdadmlvm 移除、wipefs
  • Windows 默认启用windows.filesystemdel /srd /sRemove-Item -Recurse -ForceClear-ContentClear-RecycleBin)和 windows.systemvssadmin delete shadowsdiskpartFormat-VolumeClear-Disk 等)
  • 可选启用包database.postgresqlDROP TABLETRUNCATE)、containers.dockerdocker system prune)、kubernetes.kubectlkubectl delete namespace)、cloud.awsaws 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 | bashPowerShell),自动检测平台、下载正确二进制文件、验证 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 -rfgit 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 集群的工程师

上手步骤

  1. 安装:在终端运行以下命令(以 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 等)。

  2. 验证:安装完成后,运行 dcg check 或由安装器自动执行自测(带 --verify 标志)。

  3. 自定义配置:执行 dcg init 生成默认 ~/.config/dcg/config.toml,可按需启用更多安全包(如 database.postgresqlcontainers.dockercloud.aws)。例如:

    [packs]
    enabled = ["database.postgresql", "containers.docker", "cloud.aws"]
    
  4. 添加白名单:对于某些合法且安全的命令,可在 agent 配置的 additional_allowlist 中添加,避免误拦截。

  5. 绕过:当确实需要执行被阻止的命令时,临时使用 DCG_BYPASS=1 前缀运行命令。

更多细节可查阅项目文档的 docs/ 目录,包括针对每个支持工具的集成指南和

查看原文 →github.com