Cho AI agent chạy lệnh trên máy hoặc máy chủ của bạn: giữ an toàn thế nào

Bảy bước để cho AI agent chạy lệnh mà không sợ mất dữ liệu: quyền tối thiểu, sandbox, chế độ hỏi trước, không đưa mật khẩu, nhánh git riêng, sao lưu và đọc lệnh trước khi duyệt.

Phát LâmĐăng 7 phút đọcTrung cấp
Cho AI agent chạy lệnh trên máy hoặc máy chủ của bạn: giữ an toàn thế nào
Mục lục
  1. 1. Cho quyền tối thiểu
  2. 2. Dùng sandbox (hộp cát)
  3. 3. Chế độ hỏi trước, và chế độ bỏ qua mọi thứ
  4. 4. Không đưa mật khẩu cho agent
  5. 5. Mỗi lần giao việc, một nhánh git riêng
  6. 6. Sao lưu trước khi để agent xoá
  7. 7. Đọc lệnh trước khi bấm duyệt
  8. Cho bạn nào viết code
  9. Làm gì tiếp theo

Bạn cho AI agent quyền chạy lệnh để nó tự dọn thư mục build cho nhanh. Nó gõ một lệnh xoá có dấu sao, đường dẫn hơi lệch một chút, và thư mục ảnh sản phẩm biến mất cùng lúc. Không ai ác ý ở đây. Chỉ là một cỗ máy làm đúng theo chữ, trong một căn phòng có quá nhiều cửa mở.

AI agent (công cụ AI tự đọc file, sửa file, chạy lệnh, chứ không dừng ở việc trả lời) hữu ích đúng vì nó có tay chân. Cũng vì thế bạn cần dựng rào trước khi cho nó làm. Bài này nói bằng lời thường cách làm, kèm trích tài liệu chính thức của Claude Code, Codex CLI và công cụ dòng lệnh của Google. Mình kiểm các trang đó ngày 21/10/2026, tên chế độ và cài đặt có thể đổi theo phiên bản.

1. Cho quyền tối thiểu

Nguyên tắc cũ của ngành bảo mật: chỉ cấp đúng quyền cần cho việc đang làm. Với agent, bước đầu tiên là chạy nó bằng một tài khoản bình thường, không phải tài khoản quản trị (root), và chỉ mở thư mục dự án.

Claude Code có chế độ hỏi từng bước (gọi là Manual): nó chỉ được đọc, và hỏi bạn trước khi sửa file, chạy lệnh hay ra mạng. Bạn còn có thể cấm hẳn từng thứ bằng quy tắc deny, ví dụ cấm đọc file .env hoặc cấm git push.

Một chi tiết hay bị hiểu sai: theo tài liệu, ranh giới "chỉ làm trong thư mục dự án" của Claude Code là một câu hỏi xin phép, không phải bức tường. Một lệnh Bash mà bạn đã duyệt vẫn có thể ghi vào bất cứ đâu mà tài khoản của bạn ghi được. Muốn có tường thật, cần sandbox.

2. Dùng sandbox (hộp cát)

Sandbox là một cái hộp do hệ điều hành dựng quanh các lệnh của agent: nó chỉ chạm được vào những thư mục và địa chỉ mạng bạn cho phép. Có hộp rồi, agent chạy trong đó mà không cần hỏi bạn từng lệnh, vì lệnh có làm bậy cũng không ra khỏi hộp.

Với Claude Code, sandbox mặc định đang tắt. Bạn bật bằng lệnh /sandbox. Khi bật, lệnh chỉ ghi được vào thư mục làm việc và thư mục tạm, còn mạng đi qua một cổng kiểm tra và danh sách tên miền cho phép ban đầu để trống. Tài liệu lưu ý sandbox chỉ bao các lệnh shell, còn công cụ sửa file của Claude chạy ngoài nó.

Codex CLI có ba mức sandbox: read-only (chỉ đọc), workspace-write (sửa trong thư mục làm việc, mức mặc định cho việc cục bộ) và danger-full-access (không giới hạn, tài liệu ghi là không khuyến nghị). Mặc định mạng bị tắt.

Phía Google, Gemini CLI bật sandbox bằng cờ -s hoặc biến GEMINI_SANDBOX (Docker, Podman hoặc cơ chế của hệ điều hành). Nhưng Gemini CLI nay chủ yếu dành cho khách doanh nghiệp và khoá API trả phí; công cụ mới là Antigravity CLI. Ứng dụng Antigravity có ba cấu hình dựng sẵn: Default (sandbox bật, lệnh ngoài hộp phải hỏi), Request Review (luôn hỏi) và Turbo (tắt sandbox, toàn quyền hệ thống file). Bản dòng lệnh thì không có cấu hình dựng sẵn, bạn tự đặt luật allow, deny, ask trong file cài đặt.

Hộp kính trong suốt chứa agent làm việc, các thứ quan trọng nằm ngoài rào chắn
Sandbox: agent làm việc trong hộp, của quý để ngoài.

3. Chế độ hỏi trước, và chế độ bỏ qua mọi thứ

Mỗi công cụ có một núm vặn giữa "hỏi từng bước" và "tự làm hết". Codex tách đôi: sandbox quyết định agent chạm được đâu, chính sách duyệt (on-request hoặc never) quyết định khi nào hỏi bạn. Claude Code có các chế độ default, acceptEdits, plan (chỉ đọc và lập kế hoạch), auto (một mô hình thứ hai rà soát hành động thay bạn) và bypassPermissions.

Chế độ cuối, bỏ qua mọi kiểm tra, được tài liệu ghi là chỉ dành cho container và máy ảo cô lập. Codex cũng có cờ --dangerously-bypass-approvals-and-sandbox với mô tả "cực kỳ nguy hiểm", dành riêng cho môi trường đã được cô lập từ bên ngoài. Hiểu đơn giản: chế độ "không hỏi gì" chỉ dùng trong một cái hộp mà nếu cháy thì bạn chấp nhận bỏ cả hộp. Với dự án chưa quen, cho agent lập kế hoạch trước rồi mới cho sửa.

4. Không đưa mật khẩu cho agent

Đừng dán mật khẩu, khoá API hay khoá riêng vào cuộc trò chuyện, và đừng để agent tự đọc chúng. Cấm đọc file bí mật bằng quy tắc (với Claude Code là Read(./.env)). Nếu agent cần gọi dịch vụ ngoài, tạo cho nó một khoá riêng quyền thấp, rồi thu hồi khi xong việc.

Với server thật, đừng cho agent dùng tài khoản quản trị cơ sở dữ liệu. Tạo tài khoản chỉ đọc, hoặc tốt hơn, cho nó làm trên bản sao (staging). Claude Code còn có cơ chế che khoá trong sandbox: lệnh chỉ thấy một chuỗi giữ chỗ, giá trị thật chỉ được gắn khi gửi tới tên miền bạn cho phép.

5. Mỗi lần giao việc, một nhánh git riêng

Trước khi agent đụng vào code, tạo một nhánh mới và đảm bảo thư mục đang sạch. Tài liệu Codex khuyên đúng như vậy: dùng nhánh tính năng, giữ trạng thái git sạch, commit thường xuyên, để thay đổi của agent dễ tách ra và dễ bỏ đi.

Git cũng cho bạn thấy chính xác agent đã đổi gì. Tính năng điểm lưu của Claude Code tự chụp file trước mỗi lần sửa, nhưng tài liệu ghi rõ nó chỉ theo dõi thay đổi qua công cụ sửa file, không bắt được thay đổi qua lệnh Bash, và không thay thế git.

Nhánh đường rẽ như nhánh git dẫn tới bệ làm việc, bên dưới là kho sao lưu hình trụ
Nhánh git riêng và bản sao lưu bên dưới.

6. Sao lưu trước khi để agent xoá

Chế độ "tự duyệt sửa file" của Claude Code (acceptEdits) cho phép các lệnh như rm, mv, cp trong thư mục làm việc chạy không hỏi. Tiện, nhưng nghĩa là một lệnh xoá nhầm sẽ không có ai chặn. Vậy nên trước phiên làm việc nào có thể xoá hoặc ghi đè, hãy sao lưu thư mục, và thử mở bản sao lưu xem có đọc được không. Một bản sao lưu chưa từng mở thử thì chưa chắc là sao lưu. Cách làm đầy đủ nằm ở bài Sao lưu website đúng cách: quy tắc 3-2-1 và thử khôi phục định kỳ.

7. Đọc lệnh trước khi bấm duyệt

Tài liệu Claude Code nói rõ trách nhiệm duyệt là của bạn. Nhưng nó cũng thừa nhận tình trạng quen thuộc: đến lần duyệt thứ mười, người ta bấm cho nhanh chứ không còn đọc. Cách chống mệt là cho phép sẵn những lệnh vô hại như chạy lint, chạy test, để hộp thoại nào hiện ra cũng đáng được đọc.

Khi đọc, hãy hỏi lệnh này đụng vào đâu, có xoá hay ghi đè gì không, có gửi dữ liệu ra mạng không. Cẩn thận hơn với lệnh tải nội dung từ internet về rồi chạy ngay, hoặc lệnh sinh ra từ nội dung bạn không kiểm soát như trang web hay file của người lạ, vì kẻ xấu có thể gài chỉ dẫn để đánh lừa AI (gọi là prompt injection). Vì thế Claude Code không tự duyệt curl và wget theo mặc định.

Cổng kiểm tra có cần gạt, một lệnh được soi bằng kính lúp trước khi rào chắn nâng lên
Đọc lệnh trước khi cho qua.

Cho bạn nào viết code

Các lệnh dưới đây mình đã chạy trong một thư mục thử. Riêng cờ của Codex mình xác nhận qua codex --help (bản 0.144.5), chưa chạy một phiên làm việc thật.

Chuẩn bị trước khi giao việc: sao lưu, kiểm sao lưu, rồi tạo nhánh riêng.

tar czf ~/backup-truoc-agent.tgz du-an/      # sao lưu cả thư mục
gzip -t ~/backup-truoc-agent.tgz && echo "sao luu doc duoc"
cd du-an && git switch -c ai/xuat-excel        # nhánh riêng cho agent
# ... agent làm việc ...
git diff --stat                                # xem agent đã đổi gì
git switch main && git branch -D ai/xuat-excel # không ưng thì bỏ cả nhánh

Bản sao lưu này chứa cả file .env, nên cất nơi an toàn.

Quy tắc cấm cho Claude Code, đặt trong .claude/settings.json của dự án:

{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(git push *)",
      "Bash(curl *)"
    ]
  }
}

Hãy nhớ tài liệu nói quy tắc deny khớp theo cách lệnh được viết ra, nên một lệnh viết khác đi có thể lách được. Quy tắc là lớp phụ, sandbox mới là lớp chặn thật.

Codex ở mức an toàn vừa phải: sửa trong thư mục dự án, hỏi khi cần vượt ra ngoài:

codex --sandbox workspace-write --ask-for-approval on-request

Làm gì tiếp theo

Lần tới giao việc cho agent, thử làm đủ bảy bước: tài khoản thường, sandbox, hỏi trước, cấm đọc file bí mật, nhánh riêng, sao lưu, đọc lệnh. Nếu bạn muốn dựng quy trình cho AI làm việc trên server của mình mà vẫn yên tâm, mình nhận tư vấn qua trang liên hệ. Còn nếu mới bắt đầu, đọc thêm Những vấn đề hay gặp khi dùng AI viết code và cách tránh trước.

Bảo mật full-stackQuy trình agenticWeb hardeningai-agentsandboxpermissionsclaude-codecodexantigravitygit

Nguồn tham khảo

  1. Claude Code - Security
  2. Claude Code - Permission modes
  3. Claude Code - Permissions
  4. Claude Code - Sandboxing
  5. Claude Code - Best practices
  6. Codex - Agent approvals and security
  7. Codex - Sandboxing
  8. Gemini CLI - Sandboxing
  9. Antigravity - Permissions