破坏性命令守卫 (dcg)
为 AI 编程代理阻止危险命令,保护未提交的工作免受意外删除。
- Star 数
- ★ 6.2k
- 最近更新
- 今天
- License
- NOASSERTION
- 主语言
- Rust
- FA 评分
- 61/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 兼容但需适配Codex · Claude CodeChatGPT(部分支持)
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 为防止 AI 代理意外执行 git reset --hard 或 rm -rf 而丢失未提交工作的开发者
- 不适合
- 需要完全离线、无法安装任何钩子的环境
- 使用 Aider 等仅支持 git 钩子的受限集成用户
- 期望零误报、无需维护允许列表的团队
- 源码审查
- 61/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
dcg (Destructive Command Guard) 是一个高性能钩子,拦截 AI 编程代理(如 Claude Code、Codex CLI、Gemini CLI 等)执行的破坏性命令,防止误删。它基于 Rust 开发,采用模块化“包”系统,提供 50 多个安全规则包,覆盖数据库、Kubernetes、云服务等场景。默认开启核心文件系统和 git 保护,Windows 平台额外默认启用 Windows 特定规则。安装后自动配置支持的代理钩子,也可手动配置。具有毫秒级延迟,支持 heredoc 和内联脚本扫描,以及智能上下文区分和丰富的终端输出。提供配置层级、策略模式和故障受限策略,确保安全性与灵活性。
dcg 作为钩子程序,在 AI 代理执行命令前拦截输入,解析命令内容,通过多层规则匹配(触发、提取、AST 分析)判断是否为破坏性命令。若判定为危险,则阻止执行并输出图形化拒绝面板解释原因和替代方案。支持环境变量、配置文件、代理特定配置等设置,允许用户自定义包、允许列表或使用 dcg explain 查询规则。提供扫描模式用于 CI 环境,以及测试、模拟等功能。
- 为防止 AI 代理意外执行 git reset --hard 或 rm -rf 而丢失未提交工作的开发者
- 需要为团队统一配置危险命令拦截策略的 DevOps 工程师
- 在 CI/CD 管道中扫描代码库中危险命令的安全审计人员
- 在 Windows 工作站上运行 AI 代理且需要针对 PowerShell 和 cmd 原生保护的用户
- 希望为内部工具或专有系统自定义安全规则包的组织
- 在 Codex CLI 环境中希望获得第一等钩子支持,确保被拦截命令被正确报告的开发者
如何安装或部署这个 Agent?
Linux/macOS/WSL:使用一键安装脚本:curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode。Windows 原生(PowerShell):& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.ps1"))) -EasyMode -Verify。Homebrew(macOS/Linux):brew install dicklesworthstone/tap/dcg && dcg install。
如何使用这个 Agent?
安装后,dcg 自动配置支持的代理钩子。例如,在 Claude Code 中,当代理尝试执行 git reset --hard HEAD~5 时,dcg 会拦截并阻止。可通过编辑 ~/.config/dcg/config.toml 启用更多规则包(如 database.postgresql)。使用 dcg allowlist add core.git:reset-hard 添加永久允许规则,或使用 DCG_BYPASS=1 临时绕过。使用 dcg explain "<command>" 查看为何某命令被阻止。
这个 Agent 有哪些优点和局限?
- 毫秒级延迟,SIMD 加速过滤,性能极佳
- 覆盖广泛,默认保护核心文件和 git 操作,并支持 50+ 可配置安全包
- 支持多种 AI 代理和 IDE,包括 Codex CLI 的原生支持,以及 VS Code、Cursor 等
- 智能上下文检测,区分搜索和实际执行,减少误报
- 需要安装和配置信任钩子,初次设置可能复杂
- 规则包可能产生误报,需要调整允许列表或配置
- 依赖具体代理的钩子机制,某些代理(如 Aider)仅支持有限集成
- 不能防止模型编写脚本文件绕过钩子,需结合其他安全措施
这个 Agent 与同类方案有什么区别?
主要比较对象是原版 Python 脚本(由 Jeffrey Emanuel 开发),dcg 是其 Rust 重写版本,性能更高,功能更丰富。另一个比较对象是 git hooks 的标准安全实践,但 dcg 提供更全面的防护和代理集成。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| 破坏性命令守卫 (dcg) 当前 | 61 · 存在缺口 | 命令行工具免费 | ★ 6.2k | 今天 | Rust | Codex · Claude Code |
| mirrord:将本地进程接入Kubernetes集群 | 55 · 缺口较多 | 命令行工具免费 | ★ 5.4k | 今天 | Rust | Codex · Claude Code |
| SkillSpec | 74 · 存在缺口 | 命令行工具免费 | ★ 707 | 2 个月前 | Rust | Codex · Claude Code |
| DeepTide - 为 DeepSeek 打造的 AI 编程代理 | 44 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 1.1k | 1 个月前 | Rust | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:工具默认启用最小化保护(仅核心git/文件系统/磁盘),其他包需显式启用;提供用户确认机制(allow-once、allowlist、DCG_BYPASS);数据流透明(stdout/stderr分离,JSON输出);敏感数据处理有限(历史记录存储本地SQLite,但未明确加密);依赖安全未充分验证(依赖版本未锁定,存在自更新功能);外部影响明确(阻止命令执行,但提供绕过方法);回滚能力有限(无自动回滚,仅建议stash);来源归属明确(作者和贡献者列出)。扣分:依赖安全未充分验证,敏感数据处理未明确加密,回滚能力有限。
证据显示:自一致性良好(README与测试脚本一致,机器人模式输出稳定);依赖可用性未充分验证(依赖版本未锁定,自更新功能可能引入风险);失败消息清晰(提供拒绝原因和建议)。扣分:依赖可用性未充分验证。
证据显示:受众明确(AI编码代理用户),场景广泛(多种代理和平台);能力边界清晰(默认启用核心包,其他包可选);触发精度高(上下文感知,区分数据与执行);环境适配良好(支持Linux/macOS/Windows/WSL)。扣分:无重大扣分。
证据显示:信息架构清晰(README、docs目录);安装说明详细(curl、PowerShell);命名稳定(dcg);示例和FAQ存在(README示例);已知限制未明确列出;许可证为自定义MIT(含OpenAI/Anthropic限制),可能影响使用;版本和变更日志未明确;维护责任明确(作者和贡献者)。扣分:已知限制未明确,许可证非标准,版本和变更日志缺失。
证据显示:输出可用性高(JSON和人类可读输出);边际价值高(解决实际问题);成本效益合理(性能优化,低延迟)。扣分:无重大扣分。
证据显示:声明可追溯(README和测试脚本对应);跨来源佐证有限(仅仓库内证据);事实与推断分离良好(README区分功能与建议)。扣分:跨来源佐证有限。
- 许可证包含对OpenAI和Anthropic的限制,可能影响某些用户的使用。
- 依赖版本未锁定,自更新功能可能引入供应链风险。
- 历史记录存储未明确加密,可能包含敏感命令。
- DCG_BYPASS环境变量可完全禁用保护,需谨慎使用。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
This release closes commands that ran unguarded (Claude Code's Monitor tool, wrapper and remote-shell redirects, GNU tar helper programs, archive extraction into credential or .git paths) and a long list of false positives reported against 0.15.2. Claude Code users: refresh the hook after upgrading. The hook matcher is now Bash|PowerShell|Monitor. Run dcg install (or dcg doctor --fix); hook self-healing does the same on its next run. Existing Bash or Bash|PowerShell dcg entries are migrated in place, and unrelated hooks keep their matchers. …在 GitHub 查看 ↗ -
发布说明摘录
Security fix release. v0.15.1 can fail open under load. Please upgrade. On a busy machine the v0.15.1 hook could exit without printing a verdict for some destructive commands. Every agent reads a hook that exits silently as "allow", so those commands ran. With about sixteen hook processes running at once, 3-9% of requests for commands such as watch 'git reset' --hard (commands that only dcg's embedded-script reader can judge) were let through this way. Run one at a time, the same commands were always denied. In v0.15.2 a check that runs out of time is retried with the time the hook has …在 GitHub 查看 ↗ -
发布说明摘录
Two fixes. One made the Oh My Pi bridge let a command through unjudged; the other made the installers skip signature checking with some distro builds of cosign. Oh My Pi users: refresh the bridge after upgrading. The #504 fix is in the generated dcg-guard.ts file, not only in the dcg binary, so an existing bridge keeps the old behaviour until it is rewritten. - dcg update rewrites your user/profile bridge for you when omp is on your PATH (it runs the new installer, which runs dcg install --omp --force). It does not if you pass --no-configure. …在 GitHub 查看 ↗