TROISINH
Nền tảngKhái niệm cốt lõi

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:

  1. Đọc ngữ cảnh (file, conversation history)
  2. Nghĩ (lập kế hoạch dùng tool nào)
  3. Chọn tool (Read, Edit, Bash, MCP...)
  4. Xin phép (tùy theo permission mode)
  5. 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 automationCI/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 default hoặc plan để 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 plan cho 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ùng auto cho 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 bypassPermissions kế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 auto hoặc acceptEdits làm mặc định cho developer, nhưng giới hạn bypassPermissions chỉ 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 fileTự động chạy lệnhCần giám sátPhù hợp choMức độ rủi ro
default❌ Hỏi trước❌ Hỏi trướcCaoNgười mới, productionThấp
acceptEdits✅ Tự động❌ Hỏi trướcTrung bìnhRefactoring, viết codeThấp-Trung bình
plan❌ (Chỉ kế hoạch)❌ (Chỉ kế hoạch)Cao (review)Kiến trúc phức tạpThấp
auto✅ (AI kiểm tra)✅ (AI kiểm tra)ThấpTask dài, chạy nềnTrung bình
dontAsk✅ Tự động✅ Tự độngKhôngSandbox, testCao
bypassPermissions✅ Tự động✅ Tự độngKhôngCI/CD, automationCao

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. dontAskbypassPermissions 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)

Đọc tiếp (Level 1 — Sử dụng thực chiến)

On this page