SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-08-27

Claude Code auto mode: mặc định mới từ 14/8/2026

Từ 14/8/2026, auto là permission mode mặc định của Claude Code trên Pro, Max và Team. Xem các mode khác và lựa chọn an toàn khi bạn không thể theo dõi VPS.

Chế độ auto thay đổi gì vào ngày 14 August 2026

Chế độ auto của Claude Code chạy các tool call mà không dừng lại để hỏi bạn, đồng thời gửi từng action đến một classifier model riêng để review trước. Từ ngày 14 August 2026, đây sẽ là chế độ mặc định khi bắt đầu session mới trên các gói Pro, Max và Team. Bạn có thể chuyển chế độ bất kỳ lúc nào. Default bạn đã tự đặt sẽ không bị ghi đè.

Tài liệu mô tả thay đổi này như sau:

Từ ngày 14 August 2026, chế độ auto sẽ trở thành permission mode mặc định cho các session mới trên các gói Pro, Max và Team. Bạn có thể chuyển chế độ bất kỳ lúc nào. Default do bạn tự đặt vẫn được giữ nguyên, trừ khi bạn chấp nhận prompt chuyển đổi một lần. Default do tổ chức quản lý sẽ không thay đổi.

Có 2 điều khoản trong đoạn này quan trọng hơn ngày áp dụng. Một defaultMode do bạn đặt trong file settings của mình sẽ vẫn được giữ nguyên sau thay đổi. Default do tổ chức triển khai qua managed settings cũng được giữ nguyên. Bài thông báo cho biết thêm rằng auto vẫn là tùy chọn đối với các gói Enterprise và các account sử dụng API trong giai đoạn đầu của đợt rollout.

Nếu bạn chạy Claude Code trên VPS (virtual private server), nên đọc kỹ thay đổi này trước khi nó được áp dụng. Permission prompt là một checkpoint cần có người ngồi trước bàn phím. Trên máy remote, bạn thường không có mặt ở đó. Vì vậy, chế độ mà session bắt đầu sẽ là chế độ nó giữ trong nhiều giờ.

Các chế độ cấp quyền của Claude Code, từ cần giám sát nhiều nhất đến ít nhất

Có sáu chế độ. Tên ở đầu mỗi dòng là giá trị bạn ghi trong settings hoặc truyền cho --permission-mode. Cả sáu chế độ đều do chính Claude Code thực thi, không phải do model, vì việc quyết định một tool call được phép làm gì là nhiệm vụ của harness bao quanh model.

  • default: Claude hỏi trước mỗi lần dùng tool mới. Các thao tác đọc bên trong working directory vẫn chạy mà không cần hỏi. CLI (command line interface) gọi chế độ này là Manual và chấp nhận manual làm alias từ Claude Code v2.1.200.
  • plan: Claude đọc file và chạy command để tìm hiểu, nhưng không chỉnh sửa source của bạn. Các thao tác chỉnh sửa bị chặn cho đến khi bạn phê duyệt plan.
  • acceptEdits: Các thao tác chỉnh sửa file chạy mà không cần hỏi, cùng với các filesystem command mkdir, touch, rm, rmdir, mv, cp và sed. Chế độ này chỉ áp dụng cho các path bên trong working directory hoặc additionalDirectories của bạn. Mọi shell command khác vẫn yêu cầu xác nhận.
  • auto: Mọi thao tác đều chạy, nhưng classifier kiểm tra từng thao tác trước. Các rule ask rõ ràng vẫn buộc Claude phải hỏi.
  • dontAsk: Claude Code tự động từ chối mọi thao tác lẽ ra phải hỏi bạn. Chỉ các rule allow của bạn, các Bash command chỉ đọc tích hợp sẵn và các lệnh gọi được hook PreToolUse phê duyệt mới chạy. Session không bao giờ chờ input.
  • bypassPermissions: Bỏ qua prompt và các kiểm tra an toàn, bao gồm cả việc ghi vào các path được bảo vệ như .git và .claude.

Nhấn Shift+Tab trong session để chuyển lần lượt từ default sang acceptEdits rồi sang plan. Status bar hiển thị chế độ hiện tại, chẳng hạn ⏵⏵ auto mode on hoặc ⏸ manual mode on màu xám. Các chế độ khác mặc định không nằm trong vòng chuyển đổi này. auto được thêm vào vòng này khi account của bạn đáp ứng yêu cầu. bypassPermissions chỉ được thêm khi session được khởi động bằng --permission-mode bypassPermissions hoặc --dangerously-skip-permissions. dontAsk không bao giờ xuất hiện trong vòng này, nên hãy đặt chế độ đó bằng claude --permission-mode dontAsk.

Auto mode cũng cần model mới. Đây là lý do thường gặp nhất khiến chế độ này hoàn toàn không xuất hiện. Tính đến August 2026, tài liệu liệt kê Claude Opus 4.6 hoặc mới hơn, Sonnet 4.6 hoặc mới hơn và Fable 5 trên Anthropic API. Tài liệu cũng cho biết các model cũ hơn như Sonnet 4.5 không được hỗ trợ trên bất kỳ provider nào. Nếu Claude Code báo auto mode không khả dụng, nghĩa là một trong các yêu cầu đó chưa được đáp ứng. Đây không phải sự cố tạm thời, nên chờ sẽ không khắc phục được.

Có 2 cơ chế kiểm soát áp dụng trong mọi chế độ, bao gồm bypassPermissions: các rule deny và các rule ask rõ ràng. Đây là các cơ chế bạn vẫn giữ được dù session khởi động ở chế độ nào.

Classifier ở auto mode chặn những gì

Classifier là một model thứ hai. Nó đọc action đang chờ và quyết định action đó có phù hợp với yêu cầu của bạn hay không. Tài liệu mô tả nhiệm vụ này trong một câu:

Một classifier model riêng sẽ kiểm tra các action trước khi chạy, chặn mọi action vượt quá yêu cầu của bạn, nhắm đến hạ tầng không được nhận diện hoặc có vẻ bị nội dung độc hại mà Claude đã đọc chi phối.

Mặc định sẽ chặn các nhóm thường gặp nhất với người vận hành server:

  • Tải xuống và thực thi code, chẳng hạn như curl | bash
  • Deploy và migration trên production
  • Force push
  • Sửa đổi hạ tầng dùng chung
  • Mở tunnel hoặc reverse shell để service local có thể truy cập từ public Internet
  • In credential hoặc token đang hoạt động vào transcript hoặc một file

Mặc định sẽ cho phép:

  • Thao tác với file local trong working directory
  • Cài dependency được khai báo trong lock file hoặc manifest
  • HTTP request chỉ đọc
  • Push vào bất kỳ branch nào của repository bạn đang làm việc

Không nên dựa trên một bản tóm tắt như trên. Chạy claude auto-mode defaults để in toàn bộ danh sách rule dưới dạng JSON, rồi đọc bộ rule đi kèm với version bạn đã cài.

Có 2 giới hạn được tài liệu ghi rõ mà bạn cần biết trước khi dựa vào cơ chế này. Thứ nhất, classifier nhìn thấy message của bạn, các tool call và nội dung CLAUDE.md của bạn. Tool result sẽ bị loại bỏ, nên text trong file hoặc web page mà Claude đã đọc không thể tác động trực tiếp đến classifier. Thứ hai, khi classifier chặn một action 3 lần liên tiếp hoặc 20 lần trong một session, auto mode sẽ tạm dừng và Claude Code quay lại yêu cầu bạn xác nhận. Các ngưỡng này không thể cấu hình. Trong non-interactive mode với flag -p, không có ai để hệ thống yêu cầu xác nhận, nên các lần bị chặn liên tiếp sẽ hủy session thay vào đó.

Hành vi thứ hai mới là vấn đề trên một máy từ xa. Một unattended run chạm giới hạn sẽ dừng lại và chờ một người không theo dõi terminal. Một session Claude Code thứ hai trên cùng máy không thể thay thế người đó, vì nội dung được gửi từ session này sang session khác sẽ được giữ lại cho đến khi session nhận lấy nội dung, còn một session đang dừng tại permission prompt vẫn cần con người trả lời. Thu hẹp phạm vi công việc mà agent được phép thực hiện là phần còn lại của cách khắc phục. Một skill hướng agent đến thay đổi nhỏ nhất nhưng vẫn có hiệu quả giúp session không đi vào các thao tác lan rộng khiến classifier dừng lại. Skill định hướng một tác vụ, còn một output style chỉnh sửa trực tiếp system prompt, nên một style yêu cầu các thay đổi nhỏ và chính xác sẽ áp dụng cho mọi turn của session, thay vì chỉ cho job mà bạn đã gọi nó.

Vị trí các mode trong settings.json

Toàn bộ nội dung trên là một object trong file settings.

{
  "permissions": {
    "defaultMode": "auto",
    "allow": [
      "Bash(npm run test *)",
      "Bash(git status)"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(docker compose up *)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./secrets/**)",
      "Bash(curl *)"
    ]
  }
}

Các rule được đánh giá theo thứ tự: deny, rồi ask, rồi allow. Match đầu tiên theo thứ tự đó sẽ quyết định kết quả. Một rule hẹp hơn không được ưu tiên hơn rule rộng hơn nếu rule rộng hơn xuất hiện trước. Rule deny cho Bash(aws *) sẽ chặn aws s3 ls ngay cả khi bạn đã allow đúng command đó. Vì vậy, rule deny không thể có exception.

ask là loại rule phát huy tác dụng trong auto mode. Auto mode bỏ prompt thường lệ, còn rule ask sẽ bật lại prompt cho command cụ thể mà bạn muốn người dùng xác nhận. Command deploy của bạn nên đặt ở đây. Bash(git push *) cũng vậy nếu bạn muốn có một checkpoint trước khi code rời khỏi máy. Lưu các file credential trong deny là phần còn lại của cách này. Nó kết hợp với việc giữ credential ngoài tầm truy cập của agent ngay từ đầu.

Các file settings, theo thứ tự precedence từ thấp đến cao:

  • ~/.claude/settings.json: settings của user, được áp dụng cho mọi project.
  • .claude/settings.json: settings của project, được commit vào repository.
  • .claude/settings.local.json: settings riêng của bạn cho một repository, được git-ignored.
  • Managed settings, do administrator triển khai. Trên Linux, file đó là /etc/claude-code/managed-settings.json. Không có gì override được permission rule do administrator quản lý, kể cả flag trên command line.

Có một lỗi dễ mắc ở đây và nguyên nhân đã được ghi rõ trong tài liệu. defaultMode: "auto" sẽ bị bỏ qua khi xuất hiện trong .claude/settings.json hoặc .claude/settings.local.json, từ Claude Code v2.1.142 trở đi. Mục đích là ngăn repository tự bật auto mode bằng cách ship một file settings. Nếu đặt dòng đó ở đây, session sẽ khởi động trong default mode mà không in lỗi ở bất kỳ đâu. Hãy chuyển dòng đó sang ~/.claude/settings.json. Chạy /permissions để liệt kê mọi rule đang active cùng với file chứa rule đó.

Hai switch để tắt một mode

Administrator có 2 kill switch, và cả hai đều nhận chuỗi "disable" thay vì giá trị boolean.

{
  "permissions": {
    "disableAutoMode": "disable",
    "disableBypassPermissionsMode": "disable"
  }
}

Tài liệu nêu rõ vị trí cần đặt các switch này:

Để ngăn không cho sử dụng mode bypassPermissions hoặc auto, hãy đặt permissions.disableBypassPermissionsMode hoặc permissions.disableAutoMode thành "disable" trong bất kỳ file settings nào. Các tùy chọn này hữu ích nhất trong managed settings, nơi người dùng không thể override chúng.

disableAutoMode loại auto khỏi chu kỳ Shift+Tab và từ chối --permission-mode auto khi khởi động. disableBypassPermissionsMode thực hiện chức năng tương tự cho bypass mode và hoạt động từ mọi scope, nên bạn có thể đặt nó trong ~/.claude/settings.json của mình để tự khóa khỏi một mode mà bạn không muốn vô tình sử dụng lúc 2 giờ sáng trên server production. Trên máy có người khác cùng sử dụng, hãy đặt cả hai trong /etc/claude-code/managed-settings.json, vì user settings file thuộc về người dùng, còn managed settings file thì không.

Vì sao auto mode trên VPS cần isolation boundary

Classifier xem xét từng action một. Nó không kiểm soát những gì xảy ra sau khi một action đã được phê duyệt. Tài liệu nêu rõ giới hạn này:

Classifier là cơ chế kiểm soát theo từng action, không phải isolation boundary, vì vậy isolation boundary vẫn bổ sung defense in depth cho các lần chạy không có người giám sát và không bắt buộc theo cách như đối với --dangerously-skip-permissions.

Vì vậy, cách kết hợp phù hợp trên một máy chủ remote là auto mode với một môi trường mà bạn chấp nhận có thể mất, không phải bypassPermissions rồi hy vọng mọi việc ổn. Bypass mode chỉ được tài liệu hóa cho các môi trường đã được cô lập: container, máy ảo hoặc dev container không có quyền truy cập Internet, nơi Claude Code không thể gây hỏng hệ thống host. VPS đang chạy database và reverse proxy của bạn không thuộc nhóm nào trong số đó.

Ba việc có tác dụng lớn nhất trên server là. Chạy Claude Code bằng user thông thường, tuyệt đối không chạy bằng root. Chỉ cấp cho user đó một working directory và không cấp thêm dữ liệu nào đáng để đọc. Rebuild máy thay vì repair máy. Đây là lý do nên dùng một VM dùng một lần rồi xóa sau mỗi job. Các chi tiết hardening liên quan, từ tạo user đến cấu hình firewall, được trình bày trong hướng dẫn đầy đủ về việc chạy Claude Code an toàn trên VPS, nên không lặp lại ở đây.

Claude Code tự thực thi quy tắc về root. Trên Linux và macOS, nó từ chối khởi động ở bypass mode khi chạy dưới sudo hoặc bằng root:

--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons

Kiểm tra này được bỏ qua bên trong sandbox được nhận diện. Vì vậy, cách được tài liệu khuyến nghị cho công việc tự động trong container là dùng dev container chạy Claude Code bằng user không có quyền root. Nếu bạn điều khiển agent từ điện thoại hoặc laptop qua SSH, lý do tương tự cũng áp dụng cho một phiên Claude Code chạy lâu được giữ mở trong tmux: không có ai theo dõi prompt trong lúc phiên đang chạy. Tất cả việc này chỉ bắt đầu sau khi đăng nhập thành công. Nếu máy từ chối kết nối với Permission denied (publickey), output SSH ở chế độ verbose sẽ cho biết bạn đang gặp lỗi nào trong 5 lỗi đó.

Thiết lập Bash sandbox trên Ubuntu VPS

Sandbox tích hợp giới hạn quyền truy cập filesystem và network của mọi lệnh Bash mà Claude chạy. Hệ điều hành cũng áp dụng các giới hạn này cho cả process con. Trên Linux, sandbox cần 2 package.

sudo apt-get install bubblewrap socat

Khởi động Claude Code và chạy /sandbox. Panel mở ra với tab Mode và tab Overrides, cùng tab Dependencies liệt kê những dependency còn thiếu. Việc kiểm tra dependency chạy lúc khởi động. Vì vậy, hãy khởi động lại Claude Code sau khi cài package, nếu không panel vẫn báo chúng chưa được cài.

Trên Ubuntu 24.04 trở lên, policy AppArmor mặc định ngăn bubblewrap tạo user namespace mà sandbox cần. Vì vậy sandbox không khởi động được. Kiểm tra xem máy của bạn có bị ảnh hưởng không:

sysctl kernel.apparmor_restrict_unprivileged_userns

0 hoặc lỗi cho biết key không tồn tại nghĩa là không cần làm gì. 1 nghĩa là bwrap cần profile riêng:

sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'
abi <abi/4.0>,
include <tunables/global>

profile bwrap /usr/bin/bwrap flags=(unconfined) {
  userns,
  include if exists <local/bwrap>
}
EOF
sudo systemctl reload apparmor

Profile áp dụng cho chính bwrap, không áp dụng cho các lệnh mà nó chạy bên trong sandbox. Sau đó, thu hẹp boundary trong settings:

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "denyRead": ["~/"],
      "allowRead": ["."]
    },
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org"]
    }
  }
}

Block đó phải nằm trong .claude/settings.json của project, vì chỉ trong project settings thì . mới trỏ đến thư mục gốc của project. Nếu đặt các dòng tương tự trong ~/.claude/settings.json thì . sẽ trỏ đến ~/.claude, khiến rule denyRead tiếp tục chặn các file của project và mọi lệnh đều không thể đọc code mà nó cần chỉnh sửa.

Cần biết những gì sandbox không bao phủ. Sandbox giới hạn Bash và các process con của Bash. Các file tool tích hợp chạy bên trong process Claude Code. MCP (model context protocol) server và hook là các process riêng, chạy không bị giới hạn trên host. Để đặt tất cả chúng sau cùng một boundary, hãy chạy toàn bộ process Claude Code bên trong container, virtual machine hoặc package @anthropic-ai/sandbox-runtime. Tại thời điểm viết tài liệu này, package đó vẫn là bản beta research preview.

Mỗi setup phù hợp với mode nào?

Một repo riêng trên laptop của bạn

Dùng auto, kèm các rule ask cho những action bạn muốn cho phép thực hiện tiếp. Bạn đang trực tiếp dùng bàn phím, classifier fallback thực sự có thể yêu cầu bạn xác nhận, và phạm vi thiệt hại chỉ giới hạn trong một máy do bạn kiểm soát. Đây là trường hợp mà default ngày 14 tháng 8 được thiết kế cho.

Một VPS dùng chung

Dùng auto theo từng user, cấu hình trong ~/.claude/settings.json riêng của mỗi user, trên một máy mà account chạy Claude Code không phải root và không thể đọc work của các user khác. Triển khai disableBypassPermissionsMode dưới dạng "disable" trong /etc/claude-code/managed-settings.json, cùng với các deny rule bảo vệ những path dùng chung. Máy dùng chung là trường hợp rõ nhất cho thấy bypassPermissions là sai, vì boundary isolation mà mode này giả định không tồn tại: các tenant khác nằm bên trong boundary đó.

CI và session không có người giám sát

Dùng dontAsk với danh sách allow cụ thể gồm các command mà job cần. Auto-deny là failure mode đúng khi sẽ không có người nào xem prompt. Auto mode cũng chạy non-interactive, nhưng các lần classifier block lặp lại sẽ abort session -p, nên job gặp các block này sẽ fail giữa chừng, khi work mới hoàn tất một phần. Chỉ dùng bypassPermissions cho container hoặc virtual machine được rebuild từ image, và không dùng trên host đồng thời chạy những thứ bạn cần bảo vệ.

FAQ

Khi nào auto mode trở thành chế độ mặc định trong Claude Code?

Từ ngày 14 August 2026, đối với các session mới trên các gói Pro, Max và Team. Tài liệu cho biết bạn có thể chuyển chế độ bất cứ lúc nào. Chế độ mặc định do bạn tự đặt sẽ vẫn được giữ nguyên, trừ khi bạn chấp nhận prompt chuyển đổi một lần. Chế độ mặc định do tổ chức quản lý sẽ không thay đổi. Thông báo cũng nêu rằng auto mode vẫn là tùy chọn đối với các gói Enterprise và các account sử dụng API trong giai đoạn đầu của đợt triển khai. Kiểm tra status bar để biết session hiện đang ở chế độ nào. Ở auto mode, status bar hiển thị ⏵⏵ auto mode on.

Tôi có nên dùng auto mode hay bypassPermissions trên VPS không?

Dùng auto mode cùng với một isolation boundary. Classifier kiểm tra từng action trước khi chạy. Tuy nhiên, tài liệu nêu rõ đây là cơ chế kiểm soát theo từng action, không phải isolation boundary. Vì vậy, một run không có người giám sát vẫn cần container, virtual machine hoặc một máy mà bạn chấp nhận rebuild. bypassPermissions bỏ qua hoàn toàn các bước kiểm tra và chỉ được ghi nhận cho các môi trường đã được cô lập. Claude Code từ chối khởi động ở chế độ này khi chạy với root trên Linux và in ra --dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons.

Làm cách nào để ngăn mọi người trên server dùng auto mode hoặc bypass mode?

Đặt permissions.disableAutoMode và permissions.disableBypassPermissionsMode thành chuỗi "disable" trong /etc/claude-code/managed-settings.json. Managed settings có mức ưu tiên cao hơn mọi scope khác, vì vậy không settings file nào của user và không flag nào trên command line có thể ghi đè chúng. disableAutoMode loại auto khỏi chu kỳ Shift+Tab và từ chối --permission-mode auto khi khởi động. disableBypassPermissionsMode cũng hoạt động từ mọi scope, nên một user có thể đặt nó trong ~/.claude/settings.json của riêng mình.

Tại sao setting defaultMode: "auto" của tôi bị bỏ qua?

Vì nó nằm trong file không đúng. Từ Claude Code v2.1.142, defaultMode: "auto" bị bỏ qua khi được đặt trong .claude/settings.json hoặc .claude/settings.local.json. Cơ chế này ngăn repository tự cấp auto mode cho chính nó bằng cách phát hành settings file. Session khởi động ở chế độ default và không in lỗi. Chuyển setting này sang ~/.claude/settings.json, rồi chạy /permissions để xác nhận từng rule đang hoạt động đến từ file nào. Nếu auto mode vẫn không khả dụng, hãy kiểm tra yêu cầu về model: các model cũ hơn như Sonnet 4.5 không được provider nào hỗ trợ.