6 Chế độ Permission trong Claude Code: default, auto, plan... Dùng sao cho an toàn?
Hiểu 6 cấp độ kiểm soát Claude Code từ thận trọng đến tự động. Chọn đúng permission mode để vừa an toàn vừa tối ưu workflow với AI coding agent.
Định nghĩa
Claude Code không phải chatbot thông thường mà là AI agent — nó có thể tự động đọc file, chạy lệnh terminal và sửa đổi codebase của bạn. 6 chế độ Permission (hay permission modes) chính là "cần gạt an toàn" cho phép bạn kiểm soát mức độ tự chủ của AI, từ việc phải xin phép từng bước (default) đến chạy tự động không cần giám sát (bypassPermissions).
Giải thích chi tiết
AI agent và vòng lặp "Xin phép"
Để hiểu permission modes, bạn cần thấy cách Claude làm việc. Claude Code hoạt động theo agent loop:
- Đọc ngữ cảnh (file, conversation history)
- Nghĩ (lập kế hoạch dùng tool nào)
- Chọn tool (
Read,Edit,Bash,MCP...) - Xin phép (tùy theo permission mode)
- Thực thi (nếu được phép)
Permission modes quyết định bước 4: Claude sẽ dừng lại hỏi bạn, tự động quyết định, hay chờ duyệt kế hoạch.
default — "Hỏi từng bước, an toàn tuyệt đối"
Chế độ mặc định khi cài đặt. Claude dừng lại hỏi ý kiến trước mọi hành động: đọc file mới, sửa code, chạy lệnh npm install, hay gọi API qua MCP.
Khi nào dùng: Người mới bắt đầu, codebase quan trọng (production), hoặc khi bạn chưa tin tưởng hoàn toàn vào quyết định của AI. Đây là "vùng an toàn" để quan sát Claude hoạt động mà không sợ ảnh hưởng hệ thống.
acceptEdits — "Tin tưởng sửa code, hỏi lệnh hệ thống"
Tự động chấp nhận các thao tác chỉnh sửa file (Edit, Write) nhưng vẫn hỏi trước khi chạy lệnh hệ thống (Bash) hoặc MCP tools (gọi API bên ngoài).
Khi nào dùng: Refactoring code nội bộ, viết nhiều file components React/Vue liên tiếp. Bạn muốn flow liền mạch khi sửa code nhưng vẫn kiểm soát khi AI chạy rm -rf hay curl | bash.
plan — "Nghĩ trước, làm sau" (Planning Mode)
Claude không thực thi ngay mà tạo một kế hoạch chi tiết (danh sách bước, file sẽ sửa, lệnh sẽ chạy) để bạn duyệt. Chỉ khi bạn phê duyệt (/approve hoặc confirm), Claude mới bắt đầu thực hiện.
Khi nào dùng: Task phức tạp (thêm tính năng mới, refactor kiến trúc), khi bạn muốn "bản vẽ" trước khi đục tường. Ngăn chặn việc Claude sửa lung tung rồi để lại codebase rối loạn.
auto — "Người giám sát tự động"
Thay vì hỏi bạn, Claude dùng một safety classifier (AI nhỏ hơn, nhanh hơn) để tự động đánh giá rủi ro của từng hành động. Hành động an toàn (đọc file, sửa code trong project) được tự động duyệt; hành động nguy hiểm (xóa file ngoài project, gọi API lạ) vẫn bị chặn hoặc đưa lên hỏi bạn.
Khi nào dùng: Task dài, lặp lại (generate 50 file boilerplate, chạy test suite nhiều lần), hoặc khi bạn cần Claude chạy nền trong khi bạn làm việc khác. Tiết kiệm thời gian chờ đợi nhưng vẫn có rào chắn an toàn.
dontAsk — "Tin tưởng tuyệt đối" (Cực kỳ nguy hiểm)
Chế độ "YOLO". Claude thực thi mọi thứ không hỏi, không kiểm tra. Nếu AI quyết định rm -rf / hay DROP TABLE users, nó sẽ làm ngay lập tức.
Khi nào dùng: Chỉ trong môi trường sandbox (container Docker cô lập, project test rác), hoặc khi bạn thực sự hiểu rủi ro và cần tốc độ tối đa. Không bao giờ dùng trên production database hay repo quan trọng.
bypassPermissions — "Chế độ máy móc" (Headless/Automation)
Dành riêng cho automation và CI/CD. Không có human-in-the-loop, không hiển thị prompt xác nhận. Claude chạy như một script, trả về kết quả qua stdout (dùng với flag -p).
Khi nào dùng: GitHub Actions tự động review PR, script batch processing, hoặc pipeline tự động hóa không có người ngồi chờ. Yêu cầu kết hợp với các rào chắn bên ngoài (readonly filesystem, backup) vì Claude sẽ không hỏi ý kiến.
Ví dụ thực tế
Team ngân hàng refactor hệ thống lõi từ Java EE sang Spring Boot
Bạn là tech lead tại một ngân hàng lớn ở Việt Nam, cần di chuyển hệ thống thanh toán cũ 15 năm tuổi sang kiến trúc hiện đại. Dùng plan mode: Claude phân tích cấu trúc monolith cũ, đề xuất roadmap (tách thành microservices, viết migration scripts, mapping database schema), bạn duyệt từng bước rồi mới cho chạy. Tránh việc AI xóa nhầm file config quan trọng chứa logic tính lãi suất đặc thù của ngân hàng trong lúc "dọn dẹp".
Founder startup làm app đặt đồ ăn cho sinh viên ĐHQG
Bạn là sinh viên khởi nghiệp tại khu vực ĐHQG-HCM, không rành code nhưng muốn nhanh có MVP giống GrabFood. Dùng acceptEdits để Claude liên tục viết components React, CSS Tailwind, xử lý logic giỏ hàng mà không bị gián đoạn. Nhưng khi Claude muốn chạy npm install some-obscure-package để xử lý thanh toán VietQR, hệ thống vẫn hỏi bạn — ngăn chặn supply chain attack (cài package độc hại đánh cắp thông tin thẻ sinh viên).
DevOps Shopee auto-review hàng trăm PR mỗi ngày
Team Shopee có 200+ PR mở liên tục từ các team khắp Đông Nam Á, senior dev không đủ người review kịp. Dùng bypassPermissions trong GitHub Action: claude -p --permission-mode bypassPermissions "review this diff for security issues and coding standards". Claude tự động phân tích, post comment lên PR nếu phát hiện lỗ hổng bảo mật hoặc vi phạm quy tắc coding convention mà không cần người ngồi chờ approve từng bước. Kết hợp với readonly filesystem để đảm bảo AI chỉ "nhìn" chứ không "sửa" trực tiếp trên repo production.
Ứng dụng theo đối tượng
Người mới bắt đầu (Sinh viên, người chuyển ngành)
- Luôn bắt đầu với
defaulthoặcplanđể quan sát cách AI "suy nghĩ". Đây là cách học hiệu quả nhất: bạn thấy Claude định làm gì trước khi nó làm, học được pattern suy nghĩ của kỹ sư phần mềm.
Developer freelance / Indie hacker
- Dùng
acceptEditsđể ship nhanh. Bạn vừa đảm bảo tốc độ (không bị ngắt quãng khi sửa code) vừa giữ an toàn (kiểm soát lệnh hệ thống). Phù hợp khi làm MVP cho khách hàng Việt Nam hoặc sửa bug nhỏ trên hệ thống WordPress/Laravel cũ.
Tech Lead / Quản lý kỹ thuật
- Dùng
plancho các thay đổi kiến trúc (architecture decisions). Bạn cần thấy "bản vẽ" trước khi team thực thi. Cũng có thể dùngautocho các task bảo trì định kỳ (update dependencies, chạy linter) để tiết kiệm thời gian team.
DevOps / Kỹ sư hạ tầng
- Dùng
bypassPermissionskết hợp với Headless Mode (claude -p) cho pipeline CI/CD. Tự động hóa việc generate documentation, kiểm tra bảo mật cơ bản, hoặc validate config Kubernetes trước khi deploy lên hệ thống của Tiki hoặc Viettel Cloud. Nhưng phải chạy trong container cô lập vì không có người giám sát.
Doanh nghiệp / Team lớn
- Cấu hình
autohoặcacceptEditslàm mặc định cho developer, nhưng giới hạnbypassPermissionschỉ cho service account trong CI. Sử dụng denylist (danh sách cấm) để chặn các lệnh nguy hiểm nhưrm -rf /,curl | bashở tầng hệ thống, bất kể permission mode là gì.
So sánh 6 chế độ Permission
| Chế độ | Tự động sửa file | Tự động chạy lệnh | Cần giám sát | Phù hợp cho | Mức độ rủi ro |
|---|---|---|---|---|---|
| default | ❌ Hỏi trước | ❌ Hỏi trước | Cao | Người mới, production | Thấp |
| acceptEdits | ✅ Tự động | ❌ Hỏi trước | Trung bình | Refactoring, viết code | Thấp-Trung bình |
| plan | ❌ (Chỉ kế hoạch) | ❌ (Chỉ kế hoạch) | Cao (review) | Kiến trúc phức tạp | Thấp |
| auto | ✅ (AI kiểm tra) | ✅ (AI kiểm tra) | Thấp | Task dài, chạy nền | Trung bình |
| dontAsk | ✅ Tự động | ✅ Tự động | Không | Sandbox, test | Cao |
| bypassPermissions | ✅ Tự động | ✅ Tự động | Không | CI/CD, automation | Cao |
Kết luận: Không có chế độ "tốt nhất" — chỉ có chế độ "phù hợp nhất cho ngữ cảnh". Hãy bắt đầu với default hoặc plan, sau đó chuyển sang acceptEdits hoặc auto khi bạn tin tưởng vào workflow. dontAsk và bypassPermissions chỉ dành cho môi trường có rào chắn bên ngoài (sandbox, readonly filesystem).
Bài viết liên quan
Cùng cụm "Khái niệm cốt lõi" (Core Concepts)
- Vòng lặp Agent: Claude Code hoạt động thế nào? — Hiểu rõ agent loop (đọc → nghĩ → dùng tool) để nắm vững cách Claude ra quyết định trước khi chọn permission mode.
- Hệ thống Tools và Permission trong Claude Code — Tìm hiểu sâu về allowlist/denylist và cách model override hoạt động song song với permission modes.
- Context Window 200K token: Hiểu và tận dụng — Context window ảnh hưởng đến việc Claude có "nhớ" được quyết định permission trong dài hạn không.
- CLAUDE.md: Hướng dẫn viết project instructions hiệu quả — Kết hợp permission modes với memory files để AI hiểu rõ quy tắc an toàn của dự án.
- Hệ thống Settings: Global, Project, Local — Cách cấu hình permission mode mặc định cho từng project hoặc toàn hệ thống.
Đọc tiếp (Level 1 — Sử dụng thực chiến)
- Workflow hàng ngày với Slash Commands — Sau khi chọn đúng permission mode, học cách dùng
/plan,/commit,/loopđể tăng tốc workflow hàng ngày. - Bắt đầu Level 1: Sử dụng thực chiến Claude Code — Chuyển từ lý thuyết sang thực hành với các kỹ thuật refactor, debug và viết code nâng cao.
Settings System trong Claude Code: Phân biệt Global, Project và Local
Tối ưu workflow AI coding với 3 tầng settings trong Claude Code: Global cho cá nhân, Project cho team, Local cho session tạm. Phân biệt rõ để tránh xung đột cấu hình.
Claude Code trên Terminal: Cách dùng CLI từ cơ bản đến automation
Hướng dẫn làm chủ Claude Code qua terminal: từ interactive mode đến headless automation, nắm vững các flag để điều khiển AI coding agent từ dòng lệnh.