面向 AI 编程代理的高性能命令拦截钩子,在危险命令执行前予以阻断,保护工作目录与基础设施不被意外摧毁。
核心定位#
dcg 解决的核心问题是:Claude Code、Codex CLI、Gemini CLI 等 AI 编码代理在自主执行 shell 命令时,可能误触发 rm -rf、git reset --hard、DROP TABLE、kubectl delete namespace 等不可逆的毁灭性操作。项目以 Pre-Tool-Use Hook 的形式嵌入各 AI 代理的执行链路,在命令实际到达 shell 之前完成拦截与决策。
能力边界:dcg 不替代沙箱或权限隔离机制,而是在命令发出后、执行前的最后一道防线。它覆盖 git 文件系统操作、数据库、容器编排、云资源、CI/CD 等超过 50 个安全规则包,并能通过三层扫描流水线检测 heredoc 和内联脚本中隐藏的危险命令。对于超时或解析失败的场景,默认 Fail-Open 放行以保证工作流不被阻塞。
命令拦截与检测能力#
- 零配置防护:开箱即用,无需额外配置即可拦截危险 git / 文件系统命令
- 50+ 安全规则包(Security Packs):覆盖 database(PostgreSQL 等)、kubernetes、docker、AWS/GCP/Azure、Terraform、备份工具、消息队列、监控、支付、搜索引擎、CI/CD 等领域
- 三层扫描流水线:Tier 1 Trigger(<100μs, RegexSet)→ Tier 2 Extract(<1ms, 内容提取)→ Tier 3 AST(<5ms, 语法树匹配)
- Heredoc / 内联脚本扫描:可检测
python -c "os.remove(...)"及嵌入式 shell 脚本中的危险操作 - 递归 Shell 分析:对提取到的 bash 内容递归进入完整评估流水线
- 智能上下文检测:区分数据上下文(如
grep "rm -rf")与执行上下文(如rm -rf /)
性能与可靠性#
- 亚毫秒级延迟:SIMD 加速快速路径过滤,hook 几乎无感
- 双正则引擎 + RegexSet:O(n) 批量匹配,lazy-compiled 惰性编译
- Fail-Open 设计:超时、解析错误时默认放行,不阻塞工作流(可配置为严格模式)
- 可配置超时:通过
DCG_HOOK_TIMEOUT_MS控制 hook 超时预算(默认 200ms)
AI 代理适配#
- 多代理支持:Claude Code、Codex CLI (0.125.0+)、Gemini CLI、GitHub Copilot CLI、Cursor IDE、OpenCode、Aider(有限)、Continue(检测)
- 代理专用 Profile:按代理类型(trust_level)配置不同 allowlist / pack 策略
- Agent 协议适配:自动检测各代理 hook payload 格式差异(如 Codex 的
turn_id字段、exit code 2 协议)
运维与工作流特性#
- Allow-Once 临时放行:生成短码,24 小时内或一次性放行被阻断的命令
- Rebase Recovery Mode:自动检测 rebase 进行状态,临时放行
git checkout -- .等恢复操作 - Explain 模式:详细展示命令为何被阻断/放行的完整决策链路
- 仓库扫描模式:
dcg scan理解文件结构(Dockerfile、GitHub Actions、Makefile 等),从代码中提取可执行命令并评估 - pre-commit 集成:
dcg scan install-pre-commit一键安装
配置体系#
- 分层配置:系统级(
/etc/dcg/config.toml)→ 用户级(~/.config/dcg/config.toml)→ 项目级(.dcg.toml)→ 环境变量(DCG_*),逐层覆盖 - 自定义 Pack:支持通过 YAML 创建组织专属规则包
- 全局决策模式:
DCG_POLICY_DEFAULT_MODE可设为 deny / warn / log
架构与实现要点#
使用 Rust Edition 2024(需 nightly 工具链),原始实现为 Python 已被完全取代。核心扫描流水线三层架构逐层深入,仅在上一层命中时才进入下一层,保证常见安全命令的极低延迟。提取到的 bash 内容会递归回到完整流水线重新评估。模块化 Pack 系统将规则按分类组织(core / database / kubernetes / cloud / containers 等),用户可通过 YAML 格式创建自定义 pack。仓库含 fuzz/ 目录(模糊测试)、benches/ 和 perf/baselines/(性能基准)、action/ 目录(疑似 GitHub Action 集成,细节待确认)。
安装与快速开始#
快速安装(推荐):
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode
Easy Mode 自动检测平台、下载预编译二进制、配置所有支持的 AI 代理钩子。
从源码构建(需 Rust nightly):
git clone https://github.com/Dicklesworthstone/destructive_command_guard
cd destructive_command_guard
cargo build --release
cp target/release/dcg ~/.local/bin/
支持平台:Linux (x86_64 / ARM64)、macOS (Intel / Apple Silicon)、Windows (WSL)
CLI 常用命令#
dcg test "rm -rf ./build" # 测试命令是否被阻断
dcg explain "git reset --hard" # 查看阻断原因与完整决策链路
dcg allowlist add core.git:reset-hard -r "reason" # 永久放行特定命令
dcg allow-once <code> # 使用短码临时放行
dcg scan --staged # 扫描暂存文件中的危险命令
dcg scan install-pre-commit # 安装 pre-commit hook
dcg update # 更新 dcg
关键环境变量#
| 变量 | 作用 |
|---|---|
DCG_BYPASS=1 | 单次命令绕过所有保护 |
DCG_PACKS | 逗号分隔启用 pack |
DCG_DISABLE | 逗号分隔禁用 pack |
DCG_VERBOSE | 日志详细级别 0-3 |
DCG_CONFIG | 指定配置文件路径 |
DCG_POLICY_DEFAULT_MODE | 全局默认决策模式 (deny/warn/log) |
DCG_HOOK_TIMEOUT_MS | hook 超时预算(默认 200ms) |
待确认信息#
- 开源许可证类型:仓库含 LICENSE 文件但 README 未标注具体类型
- 最新发布版本号:README 提及 v0.5.0、v0.2.7 等历史版本,当前最新需查看 Releases 页
- 独立官网/文档站:文档以仓库内
docs/目录形式维护,未见外部文档站 - GitHub Action 集成详情:仓库含
action/目录,具体用法待确认 - Windows 原生支持:当前仅支持 WSL,原生支持计划待确认
- Aider / Continue 的具体支持程度:标注为"有限"和"检测"级,功能边界待确认