开源项目

destructivecommandguard

destructivecommandguard

针对AI编码agent的防护工具,在agent执行危险git/shell命令前拦截并阻断,支持Claude Code、Codex、Gemini CLI、Cursor等主流agent。亮点是零配置即可生效,内置50+安全规则包覆盖数据库、K8s、云服务等场景,支持heredoc/inline脚本扫描和CI集成,性能极佳(亚毫秒级)。今日新增1295星,热度极高,适合避免AI agent误操作导致的数据丢失。

README

dcg (Destructive Command Guard - 破坏性命令防护)

Destructive Command Guard - 保护你的代码免受意外破坏

Coverage License: MIT

一个高性能的 AI 编程代理钩子,在破坏性命令执行前将其拦截,保护你的工作在 Claude Code、Codex CLI、Gemini CLI、Copilot CLI、VS Code Copilot Chat、Cursor、Hermes Agent、Grok (xAI) 及类似工具中不被意外删除。

支持: Claude Code, Codex CLI 0.125.0+, Gemini CLI, GitHub Copilot CLI, VS Code Copilot Chat, Cursor IDE, Hermes Agent, Grok (xAI)(原生 ~/.grok/hooks/ 外加 Claude 兼容层),Antigravity CLI (agy)(通过 dcg install --agy 的原生 ~/.gemini/config/hooks.json),OpenCode(通过社区插件),Pi(通过扩展配方),Aider(有限 – 仅 git 钩子),Continue(仅检测)

快速安装

curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode

适用于 Linux、macOS 以及通过 WSL 运行的 Windows。自动检测你的平台,下载正确的二进制文件,并配置支持的代理钩子,包括 Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI、VS Code Copilot Chat(通过 VS Code 的 Claude 钩子兼容性)、Cursor IDE、Hermes Agent 和 Grok (xAI)(通过 dcg install --grok 原生 ~/.grok/hooks/dcg.json,或通过 Grok 自动拾取的 Claude 兼容层)。原生 Windows 请使用下面的 PowerShell 安装程序。

Windows(原生,PowerShell)
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.ps1"))) -EasyMode -Verify

安装原生 dcg.exe,验证 SHA256 校验和(以及当 cosign 存在时的 Sigstore/cosign 签名),将其添加到用户 PATH-EasyMode),运行自检(-Verify),并为检测到的代理钩子(Claude Code、Codex CLI、Gemini CLI、GitHub Copilot CLI、Cursor IDE 和 Hermes Agent)进行配置。Copilot 配置在用户级别 %COPILOT_HOME%\hooks(或 %USERPROFILE%\.copilot\hooks),这样每个工作空间都受到保护。在 Windows 上,windows.filesystemwindows.system 包默认启用,因此 del /srd /sRemove-Item -Recurse -Forceformatvssadmin delete shadows 开箱即被阻止。使用 -Version vX.Y.Z 固定版本。


TL;DR (快速概览)

问题:AI 编程代理(Claude、Codex、Gemini、Copilot 等)偶尔会运行灾难性命令,如 git reset --hardrm -rf ./srcDROP TABLE users——在几秒钟内销毁数小时未提交的工作。

解决方案:dcg 是一个高性能钩子,在破坏性命令 执行之前 拦截它们,并提供清晰的解释和更安全的替代方案。

为什么要使用 dcg?

功能 作用
零配置保护 开箱即拦截危险的 git/文件系统命令
50+ 安全包 数据库、Kubernetes、Docker、AWS/GCP/Azure、Terraform 等
亚毫秒级延迟 SIMD 加速过滤——你几乎感觉不到它的存在
Heredoc/内联脚本扫描 捕获 python -c "os.remove(...)" 以及嵌入的 shell 脚本
智能上下文检测 不会拦截 grep "rm -rf"(数据),但会拦截 rm -rf /(执行)
丰富的终端输出 人类可读的拒绝面板、规则上下文和提示(stderr)
代理安全流 机器可读的钩子输出保留在 stdout,丰富的 UI 留在 stderr
原生 Codex 支持 Codex CLI 0.125.0+ 收到最小的 stdout JSON 拒绝信息,当前客户端可靠地执行
优雅降级 在 CI、管道、哑终端和无颜色环境下输出纯文本
CI 扫描模式 预提交钩子和 CI 集成,在代码审查中捕获危险命令
故障开放设计 永远不会因超时或解析错误而阻断你的工作流
解释模式 dcg explain "command" 精确显示为何某个命令被阻止

快速示例

# AI 代理尝试运行:
$ git reset --hard HEAD~5

# dcg 拦截并阻止:
════════════════════════════════════════════════════════════════
BLOCKED  dcg
────────────────────────────────────────────────────────────────
原因:  git reset --hard 销毁未提交的更改

命令: git reset --hard HEAD~5

提示: 考虑先使用 'git stash' 保存你的更改。
════════════════════════════════════════════════════════════════

启用更多保护

# ~/.config/dcg/config.toml
[packs]
enabled = [
    "database.postgresql",    # 拦截 DROP TABLE, TRUNCATE
    "kubernetes.kubectl",     # 拦截 kubectl delete namespace
    "cloud.aws",              # 拦截 aws ec2 terminate-instances
    "containers.docker",      # 拦截 docker system prune
]

代理特定配置

dcg 自动检测哪个 AI 编程代理正在调用它,并可应用代理特定配置。trust_level 字段是一个建议标签,记录在 JSON 输出和日志中——它不直接改变规则评估。行为差异来自其他配置文件字段:

选项 效果
disabled_packs 从评估中移除规则包
extra_packs 向评估中添加规则包
additional_allowlist 添加绕过拒绝规则的命令模式
disabled_allowlist 当为 true 时,忽略所有允许列表条目
# 更信任 Claude Code —— 更宽的允许列表,更少的包
[agents.claude-code]
trust_level = "high"
additional_allowlist = ["npm run build", "cargo test"]
disabled_packs = ["kubernetes"]

# 限制未知代理 —— 额外规则,无允许列表绕过
[agents.unknown]
trust_level = "low"
extra_packs = ["strict_git", "database"]  # 真实包/类别 ID(参见 `dcg packs`)
disabled_allowlist = true

extra_packs / disabled_packs 接受与 [packs] enabled / disabled 相同的包和类别 ID——类别 ID(如 "database")会扩展到所有 database.* 子包。使用 dcg packsdocs/packs/README.md 中列出的 ID;"paranoid" 是一个毕业模式,而不是一个包,所以请启用真实的 strict_git 包来获得更严格的 git 规则。

有关支持的代理、信任级别和配置选项的完整文档,请参阅 docs/agents.md

Codex 支持

dcg 现在将 Codex CLI 视为一流的钩子目标,而不仅仅是 Claude 形状的兼容路径。安装程序在检测到 PATH 上有 codex 或存在 ~/.codex/ 目录时,会自动为 Codex CLI 0.125.0+ 进行配置。

Codex 行为 dcg 处理
钩子配置 合并一个 PreToolUse Bash 钩子到 ~/.codex/hooks.json
拒绝的命令 退出码 0,在 stdout 上输出最小的 hookSpecificOutput 拒绝信息;人类警告留在 stderr
允许的命令 退出码 0,stdout 和 stderr 均为空
已有钩子 保留共存的钩子,确保 dcg 排在 Bash 的第一位,并拒绝覆盖格式错误的 JSON
验证 通过子进程协议测试以及可选的真实 Codex E2E 测试套件覆盖

Codex 的钩子输入有意接近 Claude Code 的钩子输入,但 Codex 拒绝钩子输出中的未知字段。dcg 从非空的 turn_id 字段检测 Codex 负载,并仅输出 Codex 文档化的拒绝字段,这样被阻止的命令报告为被阻止而不是钩子失败。有关协议细节、手动探测和故障排除,请参阅 docs/codex-integration.md


起源与作者

该项目最初是 Jeffrey Emanuel 的一个 Python 脚本,他意识到 AI 编程代理虽然非常有用,但偶尔会运行灾难性命令,销毁数小时未提交的工作。原始实现是一个简单但有效的钩子,在执行之前拦截危险的 git 和文件系统命令。

  • Jeffrey Emanuel - 原始概念和 Python 实现 (source);之后极大地扩展了 Rust 版本,增加了模块化包系统(50+ 安全包)、heredoc/内联脚本扫描、三层架构、上下文分类、允许列表、扫描模式和双正则引擎
  • Darin Gordon - 初始 Rust 移植,包含性能优化

Darin 的初始 Rust 移植保持了与原始 Python 实现的模式兼容性,同时通过 SIMD 加速过滤和惰性编译的正则模式实现了亚毫秒级执行。Jeffrey 随后极大地扩展了 Rust 代码库,增加了上述功能。

逃生口 / 绕过

如果 dcg 阻止了你真正需要运行的命令:

方法 范围 如何操作
环境变量绕过 单条命令 DCG_BYPASS=1 <command>
一次允许码 单条命令 从阻止消息中复制短码,运行 dcg allow-once <code>
永久允许列表 规则或命令 dcg allowlist add core.git:reset-hard -r "reason"
移除钩子 所有命令 删除或注释掉 ~/.claude/settings.json(或对应代理的等效文件)中的 dcg 条目

DCG_BYPASS=1 在该次调用中禁用所有保护。请谨慎使用,对于反复出现的需求,优先使用允许列表。

模块化包系统

dcg 使用模块化“包”系统按类别组织破坏性命令模式。包可以在配置文件中启用或禁用。

类别 ID 会扩展到其子包。enabled 中列出裸类别会打开该类别下的每个包:enabled = ["database"] 激活 database.postgresqldatabase.mysql 以及该类别下的其他包。你仍然可以通过 disabled = ["database.redis"] 关闭单个子包。相同的扩展适用于代理配置文件的 extra_packs / disabled_packs。请始终使用来自 dcg packs / docs/packs/README.md 的真实包或类别 ID——像 "paranoid" 这样的名称是一个毕业模式,而不是一个包。

  • 完整包 ID 索引:docs/packs/README.md
  • 规范描述 + 模式计数:dcg packs --verbose

默认启用(无配置文件)

没有配置文件时,dcg 仅启用那些防止最具灾难性、不可恢复错误的包:

  • core.filesystem - 临时目录外的危险 rm -rf (始终启用;不可禁用)
  • core.git - 破坏性 git 命令,会丢失未提交的工作、重写历史或销毁 stash (始终启用;不可禁用)
  • system.disk - mkfsdd 到设备、fdiskpartedmdadmlvm 移除、wipefs (默认开启;可以通过 disabled = ["system.disk"] 关闭)

Windows 上,额外两个包默认开启,因此新安装无需配置即可阻止灾难性的原生 Windows 操作:

  • windows.filesystem - cmd del /srd /sformat <drive>: 和 PowerShell Remove-Item -Recurse -Force(以及别名)、Clear-ContentClear-RecycleBin *(仅在 Windows 上默认开启;可以通过 disabled = ["windows.filesystem"]["windows"] 关闭)*
  • windows.system - vssadmin delete shadows / wmic shadowcopy delete(卷影复制销毁)、diskpartFormat-VolumeClear-DiskRemove-Partitioncipher /wbcdedit /delete *(仅在 Windows 上默认开启;可以通过 disabled = ["windows.system"]["windows"] 关闭)*

更广泛的 windows.miscreg deletenet user /deletewsl --unregisterrobocopy /MIR)和 windows.powershell(注册表/提供程序删除、Remove-LocalUserDisable-ComputerRestoreRemove-VM)包在所有平台上都是可选的。在 Unix 上,windows.* 包已注册但默认关闭;可以通过 [packs] enabled = ["windows"] 启用它们(例如,在 CI 中扫描已提交的 .ps1 / .cmd 脚本)。

每个其他包——包括 database.postgresqlcontainers.docker——都是可选的,在配置文件启用之前不会激活。运行 dcg init 会写入一个起始的 ~/.config/dcg/config.toml,其 [packs] enabled 列表默认开启了 database.postgresqlcontainers.docker 作为常见示例,但那是生成的起始配置,不是无配置的默认值。通过将其添加到 [packs] enabled 来启用下方的任何包——请参见启用更多保护

存储包

  • storage.s3 - 保护免受破坏性 S3 操作,如桶删除、递归删除和 sync --delete。
  • storage.gcs - 保护免受破坏性 GCS 操作,如桶删除、对象删除和递归删除。
  • storage.minio - 保护免受破坏性 MinIO Client (mc) 操作,如桶删除、对象删除和管理操作。
  • storage.azure_blob - 保护免受破坏性 Azure Blob Storage 操作,如容器删除、blob 删除和 azcopy remove。

远程包

  • remote.rsync - 保护免受破坏性 rsync 操作,如 --delete 及其变体。
  • remote.scp - 保护免受破坏性 SCP 操作,如覆盖系统路径。
  • remote.ssh - 保护免受破坏性 SSH 操作,如远程命令执行和密钥管理。

数据库包

  • database.postgresql - 保护免受破坏性 PostgreSQL 操作,如 DROP DATABASE、TRUNCATE 和 dropdb。
  • database.mysql - MySQL/MariaDB 防护。
  • database.mongodb - 保护免受破坏性 MongoDB 操作,如 dropDatabase、dropCollection 和无条件删除。
  • database.redis - 保护免受破坏性 Redis 操作,如 FLUSHALL、FLUSHDB 和大规模键删除。
  • database.sqlite - 保护免受破坏性 SQLite 操作,如 DROP TABLE、无 WHERE 的 DELETE 和意外数据丢失。
  • database.supabase - 保护免受破坏性 Supabase CLI 操作,包括数据库重置、迁移回滚、函数/密钥/存储删除、项目移除以及基础设施变更。

容器包

  • containers.docker - 保护免受破坏性 Docker 操作,如 system prune、volume prune 和强制删除。
  • containers.compose - 保护免受破坏性 Docker Compose 操作,如 down -v(会移除卷)。
  • containers.podman - 保护免受破坏性 Podman 操作,如 system prune、volume prune 和强制删除。

Kubernetes 包

  • kubernetes.kubectl - 保护免受破坏性 kubectl 操作,如 delete namespace、drain 和大规模删除。
  • kubernetes.helm - 保护免受破坏性 Helm 操作,如无 dry-run 的 uninstall 和 rollback。
  • kubernetes.kustomize - 保护免受破坏性 Kustomize 操作,当与 kubectl delete 结合或未经审查地应用时。

云提供商包

  • cloud.aws - 保护免受破坏性 AWS CLI 操作,如 terminate-instances、delete-db-instance 和 s3 rm --recursive。
  • cloud.azure - 保护免受破坏性 Azure CLI 操作,如 vm delete、storage account delete 和 resource group delete。
  • cloud.gcp - 保护免受破坏性 gcloud 操作,如 instances delete、sql instances delete 和 gsutil rm -r。

CDN 包

  • cdn.cloudflare_workers - 保护免受破坏性 Cloudflare Workers、KV、R2 和 D1 操作(通过 Wrangler CLI)。
  • cdn.cloudfront - 保护免受破坏性 AWS CloudFront 操作,如删除 distribution、cache policy 和 function。
  • cdn.fastly - 保护免受破坏性 Fastly CLI 操作,如 service、domain、backend 和 VCL 删除。

API Gateway 包

  • apigateway.apigee - 保护免受破坏性 Google Apigee CLI 和 apigeecli 操作。
  • apigateway.aws - 保护免受破坏性 AWS API Gateway CLI 操作(REST API 和 HTTP API)。
  • apigateway.kong - 保护免受破坏性 Kong Gateway CLI、deck CLI 和 Admin API 操作。

基础设施包

  • infrastructure.ansible - 保护免受破坏性 Ansible 操作,如危险的 shell 命令和未经检查的 playbook 运行。
  • infrastructure.atmos - 保护免受破坏性 Atmos 操作,如 terraform deploy(自动批准)、clean、destroy、state rm/taint 和 helmfile destroy。
  • infrastructure.pulumi - 保护免受破坏性 Pulumi 操作,如 destroy 和带 -y(自动批准)的 up。
  • infrastructure.terraform - 保护免受破坏性 Terraform 操作,如 destroy、taint 和带 -auto-approve 的 apply。

系统包

  • system.disk - 保护免受破坏性磁盘操作,包括 dd 到设备、mkfs、分区表修改(fdisk/parted)、RAID 管理(mdadm)、btrfs 文件系统操作、device-mapper(dmsetup)、网络块设备(nbd-client)以及 LVM 命令(pvremove、vgremove、lvremove、lvreduce、pvmove)。
  • system.permissions - 保护免受危险的权限更改,如 chmod 777、对系统目录递归 chmod/chown。
  • system.services - 保护免受危险的服务操作,如停止关键服务和修改 init 配置。

CI/CD 包

  • cicd.circleci - 保护免受破坏性 CircleCI 操作,如删除上下文、移除密钥、删除 orb/命名空间或移除流水线。
  • cicd.github_actions - 保护免受破坏性 GitHub Actions 操作,如删除密钥/变量或使用 gh api DELETE 针对 /actions 端点。
  • cicd.gitlab_ci - 保护免受破坏性 GitLab CI/CD 操作,如删除变量、移除制品和取消注册运行器。
  • cicd.jenkins - 保护免受破坏性 Jenkins CLI/API 操作,如删除作业、节点、凭据或构建历史。

密钥管理包

  • secrets.aws_secrets - 保护免受破坏性 AWS Secrets Manager 和 SSM Parameter Store 操作,如 delete-secret 和 delete-parameter。
  • secrets.doppler - 保护免受破坏性 Doppler CLI 操作,如删除密钥、配置、环境或项目。
  • secrets.onepassword - 保护免受破坏性 1Password CLI 操作,如删除条目、文档、用户、组和保险库。
  • secrets.vault - 保护免受破坏性 Vault CLI 操作,如删除密钥、禁用认证/密钥引擎、撤销租约/令牌和删除策略。

平台包

  • platform.github - 保护免受破坏性 GitHub CLI 操作,如删除仓库、Gist、发布或 SSH 密钥。
  • platform.gitlab - 保护免受破坏性 GitLab 平台操作,如删除项目、发布、保护分支和 Webhook。
  • platform.kamal - 保护免受破坏性 Kamal 2.x 操作,这些操作会拆除堆栈(kamal remove)、删除附件数据目录(kamal accessory remove)、丢弃代理路由、使应用离线,或清除 kamal rollback 所依赖的镜像。
  • platform.modal - 保护免受破坏性 Modal 无服务器平台操作,如递归卷删除、带 --force 的应用停止和密钥删除。
  • platform.railway - 保护免受破坏性 Railway CLI 和 Public API 操作,这些操作可能删除项目、环境、服务、函数、卷、变量或部署。

DNS 包

  • dns.cloudflare - 保护免受破坏性 Cloudflare DNS 操作,如记录删除、区域删除和定向 Terraform destroy。
  • dns.generic - 保护免受破坏性或危险的 DNS 工具使用(nsupdate 删除、区域传输)。
  • dns.route53 - 保护免受破坏性 AWS Route53 DNS 操作,如托管区域删除和记录集 DELETE 更改。

电子邮件包

  • email.mailgun - 保护免受破坏性 Mailgun API 操作,如域删除、路由删除和邮件列表移除。
  • email.postmark - 保护免受破坏性 Postmark API 操作,如服务器删除、模板删除和发件人签名移除。
  • email.sendgrid - 保护免受破坏性 SendGrid API 操作,如模板删除、API 密钥删除和域身份验证移除。
  • email.ses - 保护免受破坏性 AWS Simple Email Service 操作,如身份删除、模板删除和配置集移除。

功能标志包

  • featureflags.flipt - 保护免受破坏性 Flipt CLI 和 API 操作。
  • featureflags.launchdarkly - 保护免受破坏性 LaunchDarkly CLI 和 API 操作。
  • featureflags.split - 保护免受破坏性 Split.io CLI 和 API 操作。
  • featureflags.unleash - 保护免受破坏性 Unleash CLI 和 API 操作。

负载均衡器包

  • loadbalancer.elb - 保护免受破坏性 AWS Elastic Load Balancing (ELB/ALB/NLB) 操作,如删除负载均衡器、目标组或从实时流量中注销目标。
  • loadbalancer.haproxy - 保护免受破坏性 HAProxy 负载均衡器操作,如停止服务或通过运行时 API 禁用后端。
  • loadbalancer.nginx - 保护免受破坏性 nginx 负载均衡器操作,如停止服务或删除配置文件。
  • loadbalancer.traefik - 保护免受破坏性 Traefik 负载均衡器操作,如停止容器、删除配置或 API 删除。

消息包

  • messaging.kafka - 保护免受破坏性 Kafka CLI 操作,如删除主题、移除消费者组、重置偏移和删除记录。
  • messaging.nats - 保护免受破坏性 NATS/JetStream 操作,如删除流、消费者、键值条目、对象和账户。
  • messaging.rabbitmq - 保护免受破坏性 RabbitMQ 操作,如删除队列/交换机、清空队列、删除 vhost 和重置集群状态。
  • messaging.sqs_sns - 保护免受破坏性 AWS SQS 和 SNS 操作,如删除队列、清空消息、删除主题和移除订阅。

监控包

  • monitoring.datadog - 保护免受破坏性 Datadog CLI/API 操作,如删除监控器和仪表盘。
  • monitoring.newrelic - 保护免受破坏性 New Relic CLI/API 操作,如删除实体或告警资源。
  • monitoring.pagerduty - 保护免受破坏性 PagerDuty CLI/API 操作,如删除服务和计划(可能破坏事件路由)。
  • monitoring.prometheus - 保护免受破坏性 Prometheus/Grafana 操作,如删除时间序列数据或仪表盘/数据源。
  • monitoring.splunk - 保护免受破坏性 Splunk CLI/API 操作,如索引移除和 REST API DELETE 调用。

支付包

  • payment.braintree - 保护免受破坏性 Braintree/PayPal 支付操作,如通过 API/SDK 调用删除客户或取消订阅。
  • payment.square - 保护免受破坏性 Square CLI/API 操作,如删除目录对象或客户(可能破坏支付流程)。
  • payment.stripe - 保护免受破坏性 Stripe CLI/API 操作,如删除 webhook 端点和客户,或在未协调的情况下轮换 API 密钥。

搜索引擎包

  • search.algolia - 保护免受破坏性 Algolia 操作,如删除索引、清除对象、移除规则/同义词和删除 API 密钥。
  • search.elasticsearch - 保护免受破坏性 Elasticsearch REST API 操作,如索引删除、按查询删除、索引关闭和集群设置更改。
  • search.meilisearch - 保护免受破坏性 Meilisearch REST API 操作,如索引删除、文档删除、delete-batch 和 API 密钥移除。
  • search.opensearch - 保护免受破坏性 OpenSearch REST API 操作和 AWS CLI 域删除。

备份包

  • backup.borg - 保护免受破坏性 borg 操作,如 delete、prune、compact 和 recreate。
  • backup.rclone - 保护免受破坏性 rclone 操作,如 sync、delete、purge、dedupe 和 move。
  • backup.restic - 保护免受破坏性 restic 操作,如忘记快照、修剪数据、移除密钥和缓存清理。
  • backup.velero - 保护免受破坏性 velero 操作,如删除备份、计划和位置。

Windows 包

原生 Windows(cmd.exe + PowerShell)破坏性命令保护。windows.filesystemwindows.systemWindows 上默认开启(Unix 上关闭/可选);windows.miscwindows.powershell 在所有平台上都是可选的。所有模式不区分大小写。

  • windows.filesystem - 递归/强制文件系统销毁:cmd del /srd /s / rmdir /sformat <drive>:;PowerShell Remove-Item -Recurse -Force(以及别名 rm / del / rd / ri)、Clear-ContentClear-RecycleBin。仅对尊重 -WhatIf 的 cmdlet/别名以及临时目录删除进行白名单。
  • windows.system - 灾难性磁盘/系统操作:vssadmin delete shadowswmic shadowcopy delete(卷影复制销毁——勒索软件标志性行为)、diskpartFormat-VolumeClear-DiskRemove-PartitionInitialize-Disk / Reset-PhysicalDiskcipher /wbcdedit /delete
  • windows.misc - 注册表/账户/服务/WSL/复制销毁:reg deletenet user|localgroup /deletesc deleteschtasks /deletewsl --unregister(销毁 WSL 发行版)、robocopy /MIR(镜像删除)。
  • windows.powershell - 破坏性 PowerShell cmdlet:注册表/提供程序删除(Remove-Item HKLM:\Remove-ItemPropertyRemove-PSDrive)、Remove-LocalUser / Remove-LocalGroupUnregister-ScheduledTaskDisable-ComputerRestore、强制 Stop-Computer / Restart-ComputerRemove-VM / Remove-AppxPackage

其他包

  • package_managers - 保护免受危险的包管理器操作,如发布包和移除关键系统包。
  • strict_git - 更严格的 git 保护:拦截所有强制推送、变基和历史重写操作。

~/.config/dcg/config.toml 中启用包:

[packs]
enabled = [
    # 数据库
    "database.postgresql",
    "database.redis",
    "database.supabase",

    # 容器和编排
    "containers.docker",
    "kubernetes",  # 启用所有 kubernetes 子包

    # 云提供商
    "cloud.aws",
    "cloud.gcp",

    # 密钥管理
    "secrets.aws_secrets",
    "secrets.vault",

    # CI/CD
    "cicd.jenkins",
    "cicd.gitlab_ci",

    # 消息
    "messaging.kafka",
    "messaging.sqs_sns",

    # 搜索引擎
    "search.elasticsearch",

    # 备份
    "backup.restic",

    # 平台
    "platform.github",
    "platform.railway",

    # 监控
    "monitoring.splunk",
]

自定义包

使用 YAML 文件创建你自己组织特定的安全包。自定义包允许你为内部工具、部署脚本和专有系统定义模式,而无需修改 dcg。

[packs]
custom_paths = [
    "~/.config/dcg/packs/*.yaml",      # 用户包
    ".dcg/packs/*.yaml",               # 项目本地包
]

有关详细的包编写指南、模式参考和示例,请参阅 docs/custom-packs.md

在部署之前验证你的包:

dcg pack validate mypack.yaml

Heredoc 扫描配置:

[heredoc]
# 启用 heredoc 和内联脚本扫描(python -c、bash -c 等)。
enabled = true

# 提取超时预算(毫秒)。
timeout_ms = 50

# 提取体的资源限制。
max_body_bytes = 1048576
max_body_lines = 10000
max_heredocs = 10

# 可选的语言过滤器(仅扫描这些语言)。省略表示“全部”。
# languages = ["python", "bash", "javascript", "typescript", "ruby", "perl", "go"]

# 优雅降级(钩子默认是故障开放)。
fallback_on_parse_error = true
fallback_on_timeout = true

针对 heredoc 扫描的 CLI 覆盖:

  • --heredoc-scan / --no-heredoc-scan
  • --heredoc-timeout <ms>
  • --heredoc-languages <lang1,lang2,...>

Heredoc 文档:

  • `docs/adr

[原 README 过长已截断]

开源项目Dicklesworthstone2026-07-12原文

相关内容