Loadding..

Đừng Bao Giờ Để AI Chạy rm -rf — Bảng Deny List Mà Mọi Dev Cần

Đừng Bao Giờ Để AI Chạy rm -rf — Bảng Deny List Mà Mọi Dev Cần

AI Agent chạy rm -rf / trên production lúc 2 giờ sáng — nghe như film kinh dị nhưng đây là chuyện có thật. Nếu chưa setup Deny List, mỗi lần Agent “tự ý” chạy lệnh là một lần bạn đang đánh bạc với toàn bộ hệ thống. Bài viết này là bản danh sách 47 lệnh nguy hiểm mà Agent phải hỏi bạn trước khi gõ Enter.

deny-list-terminal-commands-ai-agent

Deny List Là Gì Và Tại Sao Dev Nào Cũng Cần?

Deny List là danh sách các lệnh terminal mà AI Agent phải hỏi quyền trước khi thực thi. Deny List có độ ưu tiên cao hơn Allow List — nghĩa là khi một lệnh khớp cả hai danh sách, Agent sẽ luôn hỏi quyền trước khi chạy.

Trong thời đại AI Coding Assistant phổ biến (Claude Code, GitHub Copilot Agent, Cursor…), việc Agent tự ý chạy lệnh nguy hiểm không còn là giả thuyết — nó là rủi ro thực tế. Deny List chính là lớp bảo vệ cuối cùng giữa bạn và thảm họa.

Quy Ước Mức Độ Nguy Hiểm

Trước khi đi vào chi tiết, hãy hiểu 3 mức phân loại:

IconMức độMô tả
Cực caoCó thể gây mất dữ liệu vĩnh viễn hoặc chiếm quyền hệ thống
🔴CaoThay đổi cấu hình hệ thống hoặc ảnh hưởng phạm vi rộng
🟠Trung bìnhCó tác dụng phụ cần kiểm soát

1. Hệ Thống & File System — Phá Hủy Dữ Liệu

Đây là nhóm nguy hiểm nhất. Một lệnh sai có thể xóa sạch toàn bộ dữ liệu mà không cách nào khôi phục.

CommandÝ nghĩaMức độ
rm -rfXóa file/thư mục đệ quy, không hỏi xác nhận⛔ Cực cao
rm -rXóa thư mục đệ quy⛔ Cực cao
rmdirXóa thư mục🔴 Cao
shredXóa file vĩnh viễn, không thể khôi phục⛔ Cực cao
mkfsFormat ổ đĩa⛔ Cực cao
ddGhi đè dữ liệu raw lên disk⛔ Cực cao
chmod -R 777Mở toàn quyền truy cập đệ quy🔴 Cao
chown -RThay đổi quyền sở hữu đệ quy🔴 Cao

2. Quản Lý Hệ Thống

Nhóm lệnh có thể chiếm quyền root hoặc dừng toàn bộ hệ thống.

CommandÝ nghĩaMức độ
sudoChạy lệnh với quyền root⛔ Cực cao
suChuyển sang user khác (thường là root)⛔ Cực cao
shutdownTắt máy🔴 Cao
rebootKhởi động lại máy🔴 Cao
killDừng tiến trình theo PID🟠 Trung bình
killallDừng tất cả tiến trình theo tên🔴 Cao
pkillDừng tiến trình theo pattern🔴 Cao
launchctlQuản lý daemon/service trên macOS🔴 Cao

3. Mạng & Bảo Mật

AI Agent tải script từ internet rồi tự chạy? Đó là kịch bản ác mộng mà Deny List ngăn chặn.

CommandÝ nghĩaMức độ
curl | shTải và chạy script từ internet⛔ Cực cao
wget | bashTải và chạy script từ internet⛔ Cực cao
sshKết nối remote server🔴 Cao
scpCopy file qua SSH🔴 Cao
rsyncĐồng bộ file (có thể xóa dữ liệu đích)🟠 Trung bình
nc / netcatMở kết nối mạng raw🔴 Cao
nmapQuét port mạng🔴 Cao
iptablesThay đổi firewall rules⛔ Cực cao
ifconfigCấu hình network interface🟠 Trung bình
networksetupThay đổi cấu hình mạng macOS🔴 Cao

4. Package & Cài Đặt

Agent tự cài package global? Tự brew install? Mỗi lần cài là một lần thay đổi hệ thống.

CommandÝ nghĩaMức độ
npm install -gCài package toàn cục (global)🔴 Cao
npm uninstallGỡ bỏ package🟠 Trung bình
brew installCài phần mềm hệ thống qua Homebrew🔴 Cao
brew uninstallGỡ phần mềm hệ thống🔴 Cao
pip installCài Python package🟠 Trung bình
gem installCài Ruby gem🟠 Trung bình
apt install / apt removeCài/gỡ package (Linux)🔴 Cao
npx -yTự động cài và chạy package không hỏi🟠 Trung bình

5. Git — Thao Tác Nguy Hiểm

git push --force trên production branch? Lịch sử commit bay sạch, cả team khóc ròng.

CommandÝ nghĩaMức độ
git push --forceGhi đè lịch sử remote branch⛔ Cực cao
git push -fViết tắt của force push⛔ Cực cao
git reset --hardXóa toàn bộ thay đổi chưa commit🔴 Cao
git clean -fdXóa tất cả file untracked🔴 Cao
git checkout -- .Hủy toàn bộ thay đổi working tree🟠 Trung bình
git rebaseViết lại lịch sử commit🟠 Trung bình
git branch -DXóa branch cưỡng chế (không merge check)🟠 Trung bình
git stash dropXóa stash vĩnh viễn🟠 Trung bình

6. Database

Mất database = mất business. Không có gì phải bàn thêm.

CommandÝ nghĩaMức độ
mysql -e "DROP"Xóa database/table MySQL⛔ Cực cao
psql -c "DROP"Xóa database/table PostgreSQL⛔ Cực cao
mongosh --eval "db.drop"Xóa collection MongoDB⛔ Cực cao
redis-cli FLUSHALLXóa toàn bộ dữ liệu Redis⛔ Cực cao
redis-cli FLUSHDBXóa dữ liệu Redis database hiện tại🔴 Cao

7. Docker & Container

Container đang chạy production mà Agent prune hết? Downtime guaranteed.

CommandÝ nghĩaMức độ
docker rmXóa container🟠 Trung bình
docker rmiXóa image🟠 Trung bình
docker system pruneXóa toàn bộ tài nguyên không sử dụng🔴 Cao
docker-compose down -vDừng services và xóa volumes dữ liệu🔴 Cao
docker volume rmXóa volume (mất dữ liệu persistent)🔴 Cao

8. Eval & Script Execution

eval là cánh cửa mở toang cho code injection. AI Agent + eval = combo chết người.

CommandÝ nghĩaMức độ
evalThực thi chuỗi lệnh động (injection risk)⛔ Cực cao
execThay thế shell hiện tại bằng lệnh khác🔴 Cao
source / .Chạy script trong shell hiện tại (ảnh hưởng env)🟠 Trung bình
bash -cChạy lệnh trong subshell🟠 Trung bình
node -eChạy JavaScript inline🟠 Trung bình
python -cChạy Python inline🟠 Trung bình

9. Environment & Secrets

Agent đọc SSH key? In ra toàn bộ .env? Đây là data leak nghiêm trọng.

CommandÝ nghĩaMức độ
exportThiết lập biến môi trường (có thể ghi đè quan trọng)🟠 Trung bình
envHiển thị toàn bộ biến môi trường (lộ secrets)🟠 Trung bình
printenvIn giá trị biến môi trường🟠 Trung bình
cat ~/.ssh/*Đọc SSH private/public keys⛔ Cực cao
cat .envĐọc file chứa secrets/credentials🔴 Cao
openMở file/URL bằng app mặc định macOS🟠 Trung bình
osascriptChạy AppleScript – toàn quyền macOS🔴 Cao

Tóm Tắt Deny List — Copy-Paste Ready

Đây là bản tóm tắt gọn nhất để bạn copy thẳng vào config AI Agent:

# ===== CỰC CAO (⛔) =====
rm -rf
rm -r
shred
mkfs
dd
sudo
su
curl | sh
wget | bash
iptables
eval
git push --force
git push -f
mysql -e "DROP"
psql -c "DROP"
mongosh --eval "db.drop"
redis-cli FLUSHALL
cat ~/.ssh

# ===== CAO (🔴) =====
rmdir
chmod -R
chown -R
shutdown
reboot
killall
pkill
launchctl
ssh
scp
nc
netcat
nmap
networksetup
npm install -g
brew install
brew uninstall
apt install
apt remove
git reset --hard
git clean -fd
redis-cli FLUSHDB
docker system prune
docker-compose down -v
docker volume rm
exec
cat .env
osascript

# ===== TRUNG BÌNH (🟠) =====
kill
rsync
ifconfig
npm uninstall
pip install
gem install
npx -y
git checkout -- .
git rebase
git branch -D
git stash drop
docker rm
docker rmi
source
bash -c
node -e
python -c
export
env
printenv
open

Lưu ý: Deny List có độ ưu tiên cao hơn Allow List. Khi một lệnh khớp cả hai danh sách, Agent sẽ luôn hỏi quyền trước khi thực thi.

Print