destructive_command_guard 是什么?

Destructive Command Guard(dcg)是 Dicklesworthstone 维护的 Rust hook,在 AI 编码代理执行 shell 命令之前做规则匹配,拦截可能删除文件、改写 Git 历史、破坏数据库或基础设施的命令。

⭐ 1,787 Stars 🍴 70 Forks Rust NOASSERTION 作者: Dicklesworthstone
来源:github.com/Dicklesworthstone/destructive_command_guard 查看 GitHub 仓库 → 📘 使用教程 →

为什么值得关注

旧稿只写了‘零配置保护’,没有说明默认只启用哪些 pack、失败时是否放行、Codex 最低版本和绕过方式;这些配置直接决定保护是否成立。

来源:github.com/Dicklesworthstone/destructive_command_guard/releases/tag/v…

核心功能

命令执行前 hook

dcg 接收代理 hook 的命令数据,分类真实执行上下文,再返回允许、询问或拒绝结果;Codex CLI 0.125.0+ 有专门输出格式。

来源:github.com/Dicklesworthstone/destructive_command_guard
模块化安全包

项目提供 50 多个 pack,覆盖文件系统、Git、数据库、容器、Kubernetes、云和 Terraform;无配置时只启用 core.filesystem、core.git 与 system.disk。

来源:github.com/Dicklesworthstone/destructive_command_guard
内嵌脚本扫描

三层扫描流程可抽取 heredoc,以及 python -c、bash -c 等内联载荷,再把内部命令交回全部规则包检查。

来源:github.com/Dicklesworthstone/destructive_command_guard
策略和审计

规则可设置 deny、warn、ask 或 log;dcg explain 显示最终解析出的策略,dcg scan 可检查仓库中的可执行上下文并输出真正的 SARIF。

来源:github.com/Dicklesworthstone/destructive_command_guard

技术架构

dcg 由 agent hook 接收 JSON,先辨认宿主与命令字段,再用快速过滤、上下文分类和规则引擎检查外层命令及 heredoc/inline payload。规则按 pack 分组,策略层把命中转换为 deny、warn、ask 或 log。它只看准备执行的命令文本与上下文,不理解整个程序的业务语义。

来源:github.com/Dicklesworthstone/destructive_command_guard

项目知识图谱

知识图谱:项目核心节点(中心)+ 核心功能(内环六边形)+ 关键技术依赖(外环 chip) Codex CLI 0.125.0+,或其他受支持代理Codex CLI 0.12… 预编译 Linux、macOS、Windows 二进制预编译 Linux、m… 源码构建需要 Rust 1.95+ 或仓库固定的 nightly-2026-06-06源码构建需要 Ru… 命令执行前 hook 模块化安全包 内嵌脚本扫描 策略和审计 destructive_command_… 项目本体 核心功能 关键依赖

技术栈

语言Rust框架AI 编码代理的 PreToolUse/tool hook
Codex CLI 0.125.0+,或其他受支持代理预编译 Linux、macOS、Windows 二进制源码构建需要 Rust 1.95+ 或仓库固定的 nightly-202…
用户级 hook 与 ~/.config/dcg/config.toml;项目可增加只收紧策略的 .dcg.toml
来源:github.com/Dicklesworthstone/destructive_command_guard

快速上手

macOS 可先用 brew install dicklesworthstone/tap/dcg 安装二进制,再运行 dcg install 注册检测到的代理 hook。安装后先执行 dcg explain --format json 核对生效策略,并在可丢弃仓库测试一个应允许的普通命令和一个应拒绝的破坏性命令。使用官方 curl 安装脚本前应先阅读脚本和校验说明。
来源:github.com/Dicklesworthstone/destructive_command_guard

使用场景

适合给 Codex、Claude Code、Gemini CLI 等代理增加命令级第二道检查,尤其是含未提交修改或可访问生产工具的环境。无人值守任务应把 unverified_decision 设为 deny,并评估 general.fail_closed;同时保留 Git 提交、备份、最小权限和代理自身沙箱。

来源:github.com/Dicklesworthstone/destructive_command_guard

优势与局限

优势

  • 同一规则层覆盖多种编码代理
  • 默认保护高风险文件系统、Git 和磁盘操作
  • 支持内嵌脚本、项目扫描和自定义 pack
  • 安装器要求 SHA256 校验,并支持额外签名验证

局限

  • 畸形或过大的原始 hook JSON 默认 fail-open
  • DCG_BYPASS、allow-once、永久 allowlist 或删除 hook 都能绕过保护
  • 默认不会开启全部数据库、容器和云规则包
  • 自定义许可含 OpenAI/Anthropic rider,不能简单称作标准 MIT 开源许可
来源:github.com/Dicklesworthstone/destructive_command_guard

最新版本

截至 2026-09-23,最新版本是 v0.14.4,发布于 2026-09-16。该版修复 SQL 关键字作为文件名、POSIX --、已证明安全的临时变量、bun/deno 内联载荷、带连字符 Git 可执行名和重复 hook key 等误判,并让 dcg explain 报告最终策略模式。

来源:github.com/Dicklesworthstone/destructive_command_guard/releases/tag/v…

实测与证据

status: docs-only  |  checked_at: 2026-09-23  |  environment: 只核对官方 README、LICENSE、Codex 集成说明与 v0.14.4 release  |  limitations: 未下载安装 dcg,未修改本机 hook,未执行阻断测试、dcg scan、dcg explain、绕过或 fail-closed 测试  |  observed_output: 官方最新版本为 v0.14.4,发布于 2026-09-16;Codex 支持要求 0.125.0+;README 明确畸形原始 hook JSON 默认允许并记录审计警告

来源:github.com/Dicklesworthstone/destructive_command_guard/releases/tag/v…

同类项目对比

Codex 自身的 sandbox 与 approval policy 在进程层限制文件系统和网络,并决定何时需要批准;dcg 在命令执行前按具体危险模式和规则包做判断,还能覆盖多个代理。两者检查层次不同:沙箱负责权限边界,dcg 负责识别高风险命令形状,实际使用应叠加而不是互相替代。

来源:developers.openai.com/codex/security

总结评价

dcg 可以补上编码代理的命令模式检查,但安装完成不等于保护完成。上线前必须核对 hook 绝对路径、实际启用的 pack、fail-open 与 unverified 策略,并在隔离环境验证允许和拒绝两条路径。

来源:github.com/Dicklesworthstone/destructive_command_guard

常见问题

安装 dcg 后,代理还能执行破坏性命令吗?

仍有可能。它可被 bypass、allow-once、allowlist 或删除 hook 绕过,也可能存在未覆盖模式或配置错误。

为什么 hook 里要写 dcg 的绝对路径?

代理 hook 的 PATH 可能与终端不同。绝对路径可避免找不到二进制后保护失效。

dcg 默认会对无法解析的 hook 输入拒绝执行吗?

不会。原始 hook JSON 无法解析时默认 fail-open;可显式启用 general.fail_closed=true。

dcg 是标准 MIT 许可证吗?

不是。其许可标题和正文包含 OpenAI/Anthropic Rider,采用前需要阅读完整限制。

资料与核验范围
本文依据项目公开资料整理。版本、安装命令和功能边界可能随上游更新,请以所列来源和项目当前版本为准。 资料核对时间: 2026-09-23 13:55.

参考材料:README、GitHub API、依赖文件