Tóm tắt
Scalex phân tích hơn 40.000 lượt chơi của một game mô phỏng người dùng duyệt lệnh cho AI coding agent. Người chơi biết trước rằng có lệnh nguy hiểm, nhưng trung bình vẫn bỏ sót 1 trong 3 threat. Bài viết không chứng minh mọi workflow agent ngoài đời đều nguy hiểm ở cùng tỷ lệ, nhưng nó cho thấy permission prompt là một ranh giới bảo mật rất yếu khi user phải duyệt nhiều lệnh quen thuộc.
Số liệu chính
Game có hơn 409.000 quyết định approve/deny. Một số kết quả đáng chú ý:
- Người chơi trung bình chỉ đạt 66,3% accuracy với threat.
- 32,9% session kết thúc điểm âm vì approve threat hoặc chặn lệnh an toàn quá nhiều.
- 35,2% người chơi bắt được mọi threat, nhưng chỉ 20,8% làm được điều đó mà không chặn quá 1 trong 5 lệnh an toàn.
- 7% approve toàn bộ prompt.
Tác giả nhấn mạnh giới hạn của dữ liệu: đây là game, khoảng 34% command trong game là threat, và người chơi bị đặt dưới áp lực thời gian. Ngoài đời, threat xuất hiện ít hơn. Nhưng vì người chơi đã được cảnh báo trước, việc họ vẫn bỏ sót nhiều lệnh đáng nghi là tín hiệu đáng xem.
Blind spot của npm run
Lệnh bị bỏ sót nhiều nhất là npm run analyze, được approve 64,7% số lần. Vấn đề không nằm ở chuỗi npm run tự nó, mà ở script trong package.json. Trong ví dụ của game, history log đã cho thấy script chạy bundle analyzer rồi pipe output qua curl tới một endpoint lạ.
Ba biến thể npm run trong game bị bỏ sót tổng cộng 52,5% số lần, cao hơn nhiều so với 28,4% cho các threat exfiltration khác. Bài học thực tế là command quen thuộc có thể che payload đã được agent hoặc attacker ghi vào file trước đó.
Vì sao dev nên quan tâm
Human-in-the-loop chỉ hữu ích khi phần còn lại của hệ thống đã giảm blast radius. Nếu agent có thể sửa package.json, thêm script, chạm vào secret, rồi xin user approve một command nhìn quen, prompt xác nhận không còn đủ mạnh.
Các biện pháp nên xem lại trong workflow agent:
- Chạy agent trong sandbox có giới hạn filesystem và network egress.
- Tách secret khỏi workspace mặc định của agent.
- Xem diff và file history liên quan trước khi approve npm run, make, bash, hoặc script wrapper.
- Dùng allowlist theo task thay vì hỏi user cho từng command sau khi agent đã có quyền sửa file.
- Log và review các lệnh bị approve, đặc biệt là lệnh có thể chạy code gián tiếp.
Kết luận
Bài viết không nói rằng developer luôn bấm nhầm. Nó nói rằng mô hình bảo mật dựa vào sự chú ý liên tục của con người sẽ mòn rất nhanh. Với AI coding agent, permission prompt nên được coi là lớp UX cuối cùng, không phải lớp phòng thủ chính.