
Claude Code có thể tự đọc file, sửa code, chạy lệnh terminal, và thậm chí cài package, tất cả mà không cần bạn gõ tay. Điều đó nghe tiện, nhưng cũng đáng lo. Anthropic nghiên cứu phát hiện 93% lệnh permission được người dùng phê duyệt mà không đọc nội dung (Anthropic Engineering Blog, 2026). Permission modes là cơ chế Claude Code dùng để quyết định cái gì cần hỏi bạn, cái gì tự làm được, và cái gì tuyệt đối không được phép chạm vào.
Nếu bạn chưa biết Claude Code là gì, đọc bài tổng quan trước để có nền tảng.
Claude Code có 6 permission modes, từ mặc định “hỏi trước khi sửa” đến “tự làm tất cả” trong container. Mỗi mode phù hợp một ngữ cảnh khác nhau: solo dev, team, CI/CD pipeline. Auto mode dùng classifier 2 tầng với tỉ lệ false positive 0.4% để quyết định có cần hỏi bạn không. Cấu hình sai mode có thể khiến Claude tự sửa file config nhạy cảm hoặc ngược lại, làm gián đoạn workflow của bạn.

Permission Modes Trong Claude Code Là Gì?
Permission modes trong Claude Code là tập hợp các quy tắc kiểm soát hành vi tự động của agent, xác định cụ thể thao tác nào được thực hiện không cần xác nhận, thao tác nào cần hỏi người dùng. Theo tài liệu chính thức của Anthropic (2026), mỗi mode ánh xạ sang một internal flag riêng biệt trong runtime Claude Code.
Vấn đề cốt lõi là thế này: AI agent càng tự chủ thì bạn càng tiết kiệm thời gian, nhưng rủi ro cũng tăng theo. Nghiên cứu của Veracode năm 2025 cho thấy code do AI tạo ra có 2.74 lần nhiều lỗ hổng bảo mật hơn code viết tay (The Register, 2026). Permission modes là lớp kiểm soát đầu tiên để cân bằng hai yếu tố đó.
Mình nghĩ về permission modes như hệ thống phân quyền trong Linux: bạn có thể chạy mọi thứ bằng sudo, nhưng không phải lúc nào cũng nên làm vậy. Mode nào phù hợp phụ thuộc vào môi trường bạn đang làm việc, mức độ tin tưởng vào task hiện tại, và rủi ro nếu Claude làm sai.
Nếu bạn mới cài đặt Claude Code, hệ thống mặc định dùng mode “Ask Before Edits”, tức là an toàn nhất.

6 Chế Độ Permission: Từ An Toàn Đến Tự Do Hoàn Toàn?
Claude Code có đúng 6 permission modes, sắp xếp theo mức độ tự chủ tăng dần. Mỗi mode có một internal flag riêng và tập hợp thao tác được auto-approve khác nhau, theo tài liệu permissions của Anthropic (2026). Hiểu rõ 6 mode này là bước đầu tiên để cấu hình Claude Code đúng cách.
Ask Before Edits (mặc định)
Đây là mode an toàn nhất và là điểm xuất phát mặc định khi bạn cài Claude Code. Claude được phép đọc file thoải mái, nhưng mỗi khi muốn sửa, tạo, hoặc xóa file, nó sẽ hiển thị prompt hỏi xác nhận. Thao tác terminal cũng cần approval. Phù hợp khi bạn mới làm quen với Claude Code hoặc đang làm việc trên codebase production.
Auto Accept Edits
Mode này cho phép Claude tự động đọc và sửa file mà không cần hỏi. Tuy nhiên, các lệnh terminal như npm install hay git push vẫn cần bạn xác nhận thủ công. Mình dùng mode này nhiều nhất khi đang iterate nhanh trên một feature branch mới, nơi mà việc bấm “Approve” liên tục thực sự gây phân tâm.
Plan Mode
Plan Mode là mode đặc biệt: Claude chỉ được đọc, không được thay đổi bất cứ thứ gì. Đây là công cụ lý tưởng để hiểu codebase lạ trước khi bắt đầu sửa. Bạn có thể đọc thêm về cách dùng Plan Mode hiệu quả trong bài riêng. Kết hợp Plan Mode với CLAUDE.md để có context tốt trước khi cho Claude tự động hóa.
Auto Mode
Auto mode là mode mạnh nhất cho công việc hàng ngày. Claude dùng classifier AI 2 tầng để tự quyết định có cần hỏi bạn không. Phần tiếp theo của bài này sẽ đi sâu vào cơ chế classifier đó. Auto mode tiết kiệm đáng kể thời gian cho task dài như refactor toàn bộ module hay viết test suite.
Don’t Ask
Mode này chỉ auto-approve những tools đã được định nghĩa trước trong cấu hình. Mọi thứ ngoài danh sách đó đều bị chặn. Đây là lựa chọn phù hợp cho CI/CD pipeline nơi bạn muốn Claude làm đúng một tập tác vụ cố định mà không có sự linh hoạt nào thêm. Team mình dùng dontAsk trong GitHub Actions với danh sách tools được whitelist sẵn.
Xem cách team mình cấu hình Claude Code trong GitHub Actions để thấy dontAsk hoạt động trong thực tế.
Bypass Permissions
bypassPermissions bỏ qua hầu hết kiểm tra bảo mật. Anthropic chỉ khuyến nghị dùng mode này trong container hoặc VM cô lập hoàn toàn với mạng và filesystem. Đừng dùng trên máy personal hay server production.
Bypass Permissions cho phép Claude làm gần như mọi thứ, chỉ trừ các protected paths cứng được định nghĩa sẵn. Mode này được thiết kế cho các tình huống tự động hóa hoàn toàn trong môi trường cô lập, như chạy trong Docker container không có kết nối mạng ra ngoài.

Auto Mode Hoạt Động Thế Nào?
Auto mode dùng một pipeline classifier 2 tầng để quyết định có cần gián đoạn bạn hay không, với false positive rate 0.4% và false negative rate 17% trên traffic thực tế (Anthropic Engineering Blog, 2026). Đây là sự đánh đổi có chủ đích: thà để vài hành động rủi ro lọt qua còn hơn làm phiền người dùng quá nhiều.
Stage 1: Fast Filter
Tầng đầu tiên là bộ lọc nhanh, chạy với độ trễ thấp để phân loại sơ bộ từng tool call. Nếu hành động rõ ràng an toàn, Stage 1 tự approve ngay. Nếu có dấu hiệu đáng ngờ, request được đẩy lên Stage 2. Phần lớn tool calls thông thường như đọc file hay search code dừng lại ở đây.
Stage 2: Chain-of-Thought Reasoning
Tầng hai dùng model Sonnet 4.6 với chain-of-thought reasoning để phân tích sâu hơn. Quan trọng là: classifier này tự động strip toàn bộ assistant text trước khi phân tích, nhằm ngăn prompt injection từ nội dung bên ngoài. Đây là biện pháp bảo vệ trực tiếp chống lại tấn công “jailbreak qua file độc hại”.
Fallback và Escalation
Khi classifier không chắc chắn, hệ thống có cơ chế fallback rõ ràng. Nếu Claude bị block 3 lần liên tiếp, hoặc tổng cộng 20 lần trong một session, hệ thống tự động escalate lên người dùng. Cơ chế này ngăn Claude bị kẹt trong vòng lặp thử-thất bại mà không thông báo cho bạn biết.
Cách Cấu Hình Permission Rules?
Claude Code dùng cú pháp ba mức ưu tiên: deny luôn thắng ask, và ask luôn thắng allow. Rule đầu tiên khớp sẽ được áp dụng, không kiểm tra tiếp. Theo tài liệu permissions Anthropic (2026), đây là thiết kế có chủ đích để ngăn tình trạng rule mâu thuẫn gây ra lỗ hổng ngoài ý muốn.
Rules được đặt trong file CLAUDE.md hoặc thư mục .claude của project. Bạn cũng có thể dùng flag --permission-mode khi khởi động để override tạm thời.
Cú Pháp Rule Cơ Bản
{
"permissions": {
"allow": [
"Read(**)",
"Write(src/**)",
"Bash(npm run test)"
],
"deny": [
"Write(.env)",
"Write(**/*.secret)",
"Bash(rm -rf **)"
],
"ask": [
"Write(config/**)",
"Bash(git push **)"
]
}
}
Rule deny đặt trước, rule allow đặt sau, và ask nằm ở giữa cho những thứ bạn muốn kiểm tra trước khi cho phép. Glob patterns theo cú pháp chuẩn: ** khớp bất kỳ path nào, * khớp trong cùng thư mục.
Cấu Hình Qua Flag Khởi Động
# Chạy với auto mode
claude --permission-mode auto
# Chạy trong CI/CD với dontAsk
claude --permission-mode dontAsk --headless
# Chuyển mode trong session bằng Shift+Tab
Ví Dụ: Rule Cho Môi Trường Development
{
"permissionMode": "auto",
"permissions": {
"deny": [
"Write(.env*)",
"Write(**/.secrets/**)",
"Bash(curl * | bash)",
"Bash(wget * | sh)"
],
"allow": [
"Read(**)",
"Write(src/**)",
"Write(tests/**)",
"Bash(npm run *)",
"Bash(git diff **)",
"Bash(git status)"
],
"ask": [
"Bash(git push **)",
"Bash(git commit **)",
"Write(package.json)"
]
}
}
Mình dùng cấu hình tương tự cho mọi project cá nhân. Điểm mấu chốt là đặt deny cho các lệnh pipe như curl | bash vì đây là vector tấn công phổ biến nhất khi Claude bị dẫn dắt bởi nội dung độc hại từ file bên ngoài.
Protected Paths: Claude Code Không Bao Giờ Tự Sửa Gì?
Claude Code có danh sách các đường dẫn được bảo vệ cứng ở cấp runtime, không thể override dù bạn dùng mode nào, kể cả bypassPermissions. Đây là lớp bảo vệ cuối cùng để tránh Claude vô tình hay cố ý phá hoại cấu hình hệ thống hoặc tự thay đổi môi trường của mình (Anthropic, 2026).
Lý do .mcp.json được bảo vệ đặc biệt: nếu Claude có thể tự sửa file cấu hình MCP server của mình, đó là privilege escalation hoàn toàn. Claude về lý thuyết có thể thêm MCP server mới với quyền cao hơn, tạo backdoor cho session tương lai. Đây là lỗ hổng kiến trúc nghiêm trọng nếu không được chặn.
Cơ chế bảo vệ này hoạt động song song với Claude Code Hooks, lớp tự động hóa khác mà bạn có thể dùng để thêm custom validation trước khi Claude thực thi lệnh.

Nên Dùng Mode Nào Cho Từng Tình Huống?
Không có một mode nào tốt cho tất cả mọi tình huống. Lựa chọn đúng phụ thuộc vào ba yếu tố: mức độ quen thuộc với codebase, rủi ro nếu Claude làm sai, và mức độ tin tưởng vào task cụ thể đang chạy. Dưới đây là decision guide mình dùng sau hơn một năm làm việc với Claude Code hàng ngày.
Solo Developer: Lập Trình Cá Nhân
Khi làm việc một mình trên project cá nhân, mình thường dùng Auto Accept Edits cho phần lớn thời gian. Mode này đủ nhanh để không gây friction, nhưng vẫn hỏi khi Claude muốn chạy lệnh terminal. Với những task dài như refactor hay viết test, mình chuyển sang Auto Mode để Claude tự hoàn thành toàn bộ mà không cần theo dõi liên tục.
Mình chuyển sang Plan Mode khi clone một repo lạ lần đầu. Để Claude đọc và giải thích codebase trước, sau đó mới cho phép sửa, tiết kiệm rất nhiều lỗi do Claude không hiểu đúng kiến trúc.
Team: Làm Việc Nhóm
Trong môi trường team, mình khuyến nghị Ask Before Edits là default cho mọi thành viên mới. Khi họ đã hiểu rõ project, cho phép upgrade lên Auto Accept Edits. Tuyệt đối không cho phép Auto Mode hay Bypass Permissions trên repo production mà không có policy rõ ràng bằng văn bản. 88% tổ chức đã báo cáo sự cố bảo mật liên quan đến AI agent trong năm 2026 (Kiteworks, 2026).
CI/CD Pipeline
Với pipeline tự động, Don’t Ask với danh sách tools được whitelist là lựa chọn duy nhất hợp lý. Bạn không muốn pipeline bị block vì Claude gặp tool call không nằm trong kịch bản đã test. Kết hợp với flag --headless để chạy không cần TTY. Xem thêm hướng dẫn CI/CD với GitHub Actions để thấy cấu hình hoàn chỉnh.
Isolated Automation
Nếu bạn chạy Claude trong Docker container không có network access ra ngoài, không mount production data, thì Bypass Permissions là hợp lý để tối đa hóa tốc độ. Đây là cách các hệ thống test automation quy mô lớn vận hành, nơi mỗi task chạy trong một container throwaway hoàn toàn cô lập.
Cấu Hình Cho Team Và Enterprise?
Claude Code hỗ trợ managed settings cho phép admin tổ chức kiểm soát permission modes ở cấp fleet, không cần trust từng developer tự cấu hình đúng. Tính năng này đặc biệt quan trọng khi 49 CVE đã được quy cho Claude Code, trong đó 11 critical (Georgia Tech research, 2026).
Managed Settings: Khóa Modes Từ Xa
{
"managedSettings": {
"disabledModes": ["auto", "bypassPermissions"],
"defaultMode": "default",
"lockMode": true,
"allowUserOverride": false,
"auditLog": true,
"permissions": {
"deny": [
"Bash(curl * | bash)",
"Bash(wget * | sh)",
"Write(**/.env*)",
"Write(**/secrets/**)"
]
}
}
}
Với lockMode: true, developer không thể tự chuyển mode bằng Shift+Tab hay flag --permission-mode. Admin kiểm soát hoàn toàn. disabledModes loại bỏ cả Auto Mode và Bypass, giữ lại chỉ những mode an toàn cho môi trường enterprise.
Trong kiến trúc multi-agent với sub-agents, managed settings đặc biệt quan trọng vì mỗi sub-agent chạy độc lập và có thể có permission context khác nhau.
Audit Log Và Monitoring
Bật auditLog: true ghi lại mọi tool call và permission decision vào log. Đây là yêu cầu compliance cho nhiều tổ chức trong các ngành tài chính, y tế, và chính phủ. Log bao gồm timestamp, tool name, arguments, mode đang active, và kết quả approve hoặc deny.
Troubleshooting: 4 Lỗi Thường Gặp
“Claude bị block dù mình đã set allow?”
Deny rules luôn ưu tiên hơn allow rules. Nếu có deny match, allow không có tác dụng. Kiểm tra deny rules trước: cat .claude/settings.json | grep deny.
“Auto Mode approve lệnh nguy hiểm?”
Auto Mode dùng 2-stage classifier: fast filter + chain-of-thought. Nếu 3 lần liên tiếp bị deny (circuit breaker), Claude sẽ tự động suggest chuyển về Ask mode. Thêm deny rule cho các lệnh nguy hiểm: "Bash:rm -rf*", "Bash:sudo*".
“Permission rules không apply cho MCP tools?”
MCP tools cần prefix đầy đủ: mcp__server__tool. Ví dụ: "allow": ["mcp__filesystem__read_file"]. Không dùng tên tool ngắn như read_file, sẽ không match.
“Team member bypass permission của mình?”
Dùng managed settings (enterprise): server-managed settings override local + project settings. Team member không thể thay đổi. Thiết lập qua admin dashboard hoặc .claude/settings.managed.json.
Câu Hỏi Thường Gặp
Permission mode mặc định của Claude Code là gì?
Mode mặc định là Ask Before Edits (internal flag: default). Ở mode này, Claude được tự động đọc file nhưng phải hỏi xác nhận trước khi sửa, tạo, hoặc xóa file, và trước khi chạy bất kỳ lệnh terminal nào. Đây là lựa chọn an toàn nhất cho người mới bắt đầu.
Làm thế nào để chuyển permission mode nhanh trong session?
Nhấn Shift+Tab để cycle qua các modes có sẵn trong session hiện tại. Hoặc khởi động Claude Code với flag --permission-mode [mode-name]. Nếu admin đã bật lockMode: true trong managed settings, bạn sẽ không thể override bằng cách này.
Auto mode có an toàn để dùng hàng ngày không?
An toàn trong hầu hết tình huống solo development, với điều kiện bạn đã cấu hình deny rules rõ ràng cho các file nhạy cảm. False positive rate 0.4% nghĩa là cứ 250 tool calls thì có khoảng 1 lần classifier nhầm, nhưng hệ thống fallback sẽ escalate lên bạn nếu phát hiện pattern bất thường liên tiếp.
Bypass Permissions khác gì Auto Mode?
Auto mode vẫn chạy classifier để quyết định và có thể hỏi bạn trong các tình huống mơ hồ. Bypass Permissions bỏ qua hoàn toàn classifier, chỉ giữ lại hardcoded protected paths. Bypass không phù hợp cho máy cá nhân vì nó có thể cho phép Claude sửa shell config, SSH keys, hay cloud credentials nếu những file đó không nằm trong protected list.
Plan Mode có tắt tất cả write operations không?
Đúng. Plan Mode (plan flag) chỉ cho phép read operations. Claude không thể sửa, tạo, hay xóa file, và không thể chạy lệnh có side effects. Đây là mode hoàn toàn read-only, lý tưởng cho việc khám phá và phân tích codebase trước khi quyết định có nên sửa gì không.
Có thể kết hợp permission rules với Hooks không?
Có, và đây là cách team mình cấu hình cho môi trường production. Permission rules quyết định Claude có được phép thực hiện một action không. Hooks chạy trước và sau action để thêm custom validation, logging, hay notification. Hai cơ chế bổ sung cho nhau, không thay thế nhau.
Don’t Ask mode có cho phép Claude làm gì ngoài danh sách whitelist không?
Không. dontAsk mode chỉ auto-approve những tools đã được định nghĩa trong phần allow của cấu hình. Mọi tool call không có trong danh sách sẽ bị chặn hoàn toàn, không hỏi, không thực hiện. Đây là điều khác biệt so với Auto Mode, nơi classifier mới là người quyết định.
Kết Luận
Permission modes là một trong những tính năng ít được chú ý nhưng quan trọng nhất của Claude Code. Chọn đúng mode không chỉ ảnh hưởng đến tốc độ làm việc mà còn trực tiếp xác định bề mặt tấn công của AI agent trong môi trường của bạn. Với 93% lệnh permission được duyệt mà không đọc, việc cấu hình đúng từ đầu quan trọng hơn nhiều so với việc nhấn Approve một cách phản xạ.
Tóm lại: Ask Before Edits cho dự án nhạy cảm, Auto Accept Edits cho công việc hàng ngày, Auto Mode cho task dài, Don’t Ask cho CI/CD, và Bypass chỉ trong container cô lập. Plan Mode là bước đầu tốt nhất trước khi làm việc với codebase lạ.
Sau khi cấu hình permission modes xong, bước tiếp theo là tối ưu hóa. Xem hướng dẫn tiết kiệm token khi dùng Claude Code để giảm chi phí mà không mất hiệu quả. Bạn cũng nên tìm hiểu Claude Code skills để kiểm soát hành vi agent chi tiết hơn nữa.
Anthropic đang tiếp tục phát triển hệ thống permission với nhiều tính năng granular hơn. Theo dõi roadmap Claude Code để cập nhật khi có thay đổi mới.
