Dicklesworthstone/destructive_command_guard
The Destructive Command Guard (dcg) is for blocking dangerous git and shell commands from being executed by agents.
Kết luận: fit · Công nghệ: cli · ai-agents · git-safety · shell-guardrails · rust
destructive_command_guard là một CLI/dev safety tool chặn các lệnh shell/git nguy hiểm trước khi agent thực thi, phù hợp cho môi trường có AI agent tự động thao tác mã nguồn. Với ~2531 sao, repo này cho thấy nhu cầu thực tế về lớp bảo vệ kiểu policy guardrail cho workflow codex/cursor/opencode và các dự án có quyền chạy lệnh.
📖 Giới thiệu chi tiết
🧩 Nó là gì?
Dicklesworthstone/destructive_command_guard là một công cụ dòng lệnh tên dcg giúp chặn các lệnh nguy hiểm trước khi chúng thật sự được chạy. Nó đặc biệt hữu ích khi bạn dùng AI coding agent như Claude Code, Codex CLI, Gemini CLI, Copilot CLI, Cursor, VS Code Copilot Chat và các công cụ tương tự để tự động thao tác code.
🎯 Giải quyết vấn đề gì? Dành cho ai?
Khi AI agent được quyền chạy lệnh trong terminal, đôi khi nó có thể vô tình chạy những lệnh rất nguy hiểm như:
git reset --hard
rm -rf ./src
docker system prune
kubectl delete namespace
Những lệnh này có thể xóa code, làm mất thay đổi chưa commit, xóa dữ liệu, hoặc phá môi trường làm việc chỉ trong vài giây.
dcg dành cho:
- Người mới dùng AI coding agent và sợ agent “lỡ tay” chạy lệnh phá hoại.
- Lập trình viên dùng
codex, Claude Code, Cursor, Gemini CLI, Copilot CLI, OpenCode, Aider... - Team muốn thêm một lớp bảo vệ an toàn khi cho agent chạy lệnh shell/git.
- Người làm dự án có dữ liệu, cấu hình, database, Docker, Kubernetes, cloud... cần tránh thao tác nhầm.
Nói đơn giản: nếu bạn để AI hoặc tool tự động chạy lệnh trên máy/dự án của mình, dcg giống như một “người gác cổng” kiểm tra trước khi lệnh được thực thi.
⚙️ Hoạt động ra sao?
Cơ chế chính của dcg:
dcgđược cài như một hook cho các AI coding agent.- “Hook” có thể hiểu đơn giản là một bước kiểm tra tự động được chạy trước khi agent thực thi lệnh.
- Khi agent chuẩn bị chạy một lệnh shell/git,
dcgsẽ đọc lệnh đó trước. - Nếu lệnh an toàn,
dcgcho đi tiếp. - Nếu lệnh có nguy cơ phá hoại,
dcgchặn lại và hiển thị lý do rõ ràng. - Ví dụ:
git reset --hard HEAD~5
Có thể bị chặn vì lệnh này làm mất các thay đổi chưa lưu/commit.
dcgcó các nhóm luật gọi là “packs”.- Mỗi pack chứa các mẫu lệnh nguy hiểm thuộc một mảng cụ thể.
- Ví dụ:
core.git: chặn lệnh git nguy hiểm.core.filesystem: chặn lệnh xóa file/thư mục nguy hiểm.system.disk: chặn lệnh thao tác ổ đĩa nguy hiểm.database.postgresql: chặn lệnh nhưDROP TABLE,TRUNCATE.kubernetes.kubectl: chặn thao tác Kubernetes nguy hiểm.cloud.aws: chặn một số lệnh AWS rủi ro.containers.docker: chặn một số lệnh Docker nguy hiểm.
- Mặc định, khi chưa cấu hình gì thêm,
dcgđã bật các luật quan trọng nhất như:core.filesystemcore.gitsystem.disk
- Trên Windows,
dcgcòn bật sẵn một số luật chặn lệnh nguy hiểm như:del /srd /sRemove-Item -Recurse -Forceformatvssadmin delete shadows
dcgcũng đủ thông minh để phân biệt ngữ cảnh:- Tìm kiếm chuỗi
"rm -rf"trong tài liệu thì không nhất thiết bị chặn. - Nhưng chạy thật
rm -rf /thì sẽ bị chặn.
- Tìm kiếm chuỗi
- Có chế độ giải thích:
dcg explain "git reset --hard HEAD~5"
Lệnh này giúp bạn biết vì sao một command bị chặn.
🆚 Khi nào nên dùng / không nên
Nên dùng dcg khi:
- Bạn dùng AI coding agent có quyền chạy terminal.
- Bạn thường làm việc với repo có nhiều thay đổi chưa commit.
- Bạn muốn tránh các lệnh “một phát là mất hết” như
rm -rf,git reset --hard,DROP TABLE. - Bạn làm việc với Docker, Kubernetes, cloud, database, Terraform hoặc hệ thống có rủi ro cao.
- Bạn muốn một lớp bảo vệ tự động thay vì chỉ dựa vào việc “đọc kỹ trước khi bấm chạy”.
Không nhất thiết cần dùng khi:
- Bạn không cho AI agent chạy lệnh nào cả.
- Bạn chỉ dùng agent để đọc/viết text, không thao tác terminal.
- Bạn đang làm trong môi trường sandbox hoàn toàn có thể xóa đi tạo lại.
- “Sandbox” là môi trường thử nghiệm tách biệt, hỏng cũng không ảnh hưởng dữ liệu thật.
- Bạn đã có quy trình bảo vệ khác rất chặt, ví dụ container tạm, VM tạm, quyền hệ thống bị giới hạn mạnh.
So với việc chỉ dùng git cẩn thận hoặc backup thủ công, dcg chủ động hơn vì nó chặn ngay trước khi lệnh nguy hiểm chạy. Tuy vậy, nó không thay thế hoàn toàn việc commit thường xuyên, backup, review lệnh và phân quyền hợp lý.
🚀 Bắt đầu nhanh
Cài nhanh trên Linux, macOS hoặc Windows qua WSL:
curl -fsSL "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.sh?$(date +%s)" | bash -s -- --easy-mode
Cài trên Windows native bằng PowerShell:
& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/Dicklesworthstone/destructive_command_guard/main/install.ps1"))) -EasyMode -Verify
Sau khi cài, dcg sẽ tự phát hiện và cấu hình hook cho các agent được hỗ trợ nếu có, ví dụ Claude Code, Codex CLI, Gemini CLI, GitHub Copilot CLI, Cursor IDE, Hermes Agent, Grok (xAI)...
Ví dụ một lệnh nguy hiểm bị chặn:
# Agent hoặc bạn thử chạy:
git reset --hard HEAD~5
# dcg sẽ chặn và giải thích tương tự:
# BLOCKED dcg
# Reason: git reset --hard destroys uncommitted changes
# Tip: Consider using 'git stash' first to save your changes.
Kiểm tra vì sao một lệnh bị chặn:
dcg explain "git reset --hard HEAD~5"
Bật thêm một số pack bảo vệ trong file cấu hình:
# ~/.config/dcg/config.toml
[packs]
enabled = [
"database.postgresql",
"kubernetes.kubectl",
"cloud.aws",
"containers.docker",
]
Nếu bạn thật sự cần bỏ qua dcg cho một lần chạy, có thể dùng:
DCG_BYPASS=1 <command>
Ví dụ:
DCG_BYPASS=1 git reset --hard HEAD~5
Hãy dùng cách này cẩn thận, vì nó tắt bảo vệ cho lần chạy đó.
✅ Điểm mạnh & ⚠️ Hạn chế
✅ Điểm mạnh:
- Dễ cài, gần như dùng được ngay.
- Chặn sẵn các lệnh nguy hiểm phổ biến như
git reset --hard,rm -rf, thao tác ổ đĩa rủi ro. - Hỗ trợ nhiều AI coding agent phổ biến: Claude Code, Codex CLI, Gemini CLI, Copilot CLI, VS Code Copilot Chat, Cursor, Hermes Agent, Grok (xAI)...
- Có hệ thống pack linh hoạt, bật thêm bảo vệ cho database, Kubernetes, Docker, cloud, Terraform...
- Có thông báo rõ ràng khi chặn lệnh, giúp người mới hiểu chuyện gì đang xảy ra.
- Có
dcg explain "command"để kiểm tra lý do một lệnh bị chặn. - Thiết kế hiệu năng cao, độ trễ rất thấp nên hầu như không làm chậm workflow.
- Có cơ chế allowlist để cho phép những lệnh bạn tin tưởng chạy thường xuyên.
- Có cách bypass khi thật sự cần, ví dụ
DCG_BYPASS=1.
⚠️ Hạn chế:
- Không phải “lá chắn tuyệt đối”; bạn vẫn cần commit thường xuyên, backup và đọc kỹ lệnh quan trọng.
- Có thể chặn nhầm một số lệnh hợp lệ nếu chúng giống mẫu nguy hiểm.
- Muốn bảo vệ sâu hơn cho database, cloud, Kubernetes, Docker... bạn có thể cần cấu hình thêm pack.
- Nếu dùng bypass quá tùy tiện, lợi ích bảo vệ sẽ giảm mạnh.
- Một số công cụ có mức hỗ trợ khác nhau; ví dụ Aider được ghi là hỗ trợ hạn chế qua git hooks, Continue chủ yếu ở mức detection.
dcgbảo vệ trước lệnh shell/git nguy hiểm, nhưng không thay thế phân quyền hệ thống, sandbox, CI kiểm tra, hay quy trình review code.