SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor

Claude Code auto mode: mặc định mới và cách dùng

Từ v2.1.283, auto mode là mặc định trong terminal và VS Code. Xem từng permission mode làm gì, và chọn mode phù hợp khi bạn không thể theo dõi server.

Những gì auto mode thay đổi vào ngày 14 August 2026

Claude Code auto mode chạy các tool call mà không dừng lại để hỏi bạn, đồng thời gửi từng hành động đến một classifier model riêng để review trước. Từ ngày 14 August 2026, đây là mode mà các session mới bắt đầu trên các plan Pro, Max và Team. Tính đến ngày 11 October 2026, tài liệu còn nêu rõ hơn: với Claude Code v2.1.283 trở lên, auto mode là mode khởi động tích hợp cho các session terminal tương tác và VS Code trên mọi plan và provider. Bạn có thể chuyển mode bất cứ lúc nào, và default bạn đã tự đặt sẽ không bị ghi đè.

Documentation hiện nêu thay đổi này như sau:

Với Claude Code v2.1.283 trở lên, auto mode là mode quyền khởi động tích hợp cho các session terminal tương tác và VS Code. Ở các version cũ hơn, đây chỉ là mode quyền khởi động tích hợp trên các plan Pro, Max và Team.

Hai quy tắc trên cùng trang đó quan trọng hơn số version. Một defaultMode bạn đặt trong ~/.claude/settings.json của mình vẫn được giữ nguyên: Claude Code có thể hỏi một lần liệu có chuyển sang auto mode hay không, và sẽ giữ setting của bạn nếu bạn từ chối. Default do tổ chức triển khai thông qua managed settings cũng được giữ nguyên. Bài đăng thông báo cho biết auto mode ban đầu vẫn là opt-in trên các plan Enterprise và Claude API. Từ v2.1.283, tài liệu không còn nêu ngoại lệ đó đối với các session terminal và VS Code, dù một tổ chức đã áp dụng cấu hình HIPAA vẫn bắt đầu ở Manual mode.

Nếu chạy Claude Code trên VPS (virtual private server), thay đổi này quan trọng hơn so với khi chạy trên laptop. Permission prompt là một checkpoint cần có người ngồi trước bàn phím. Trên một máy remote, thường bạn không có mặt ở đó, nên mode mà session bắt đầu sẽ là mode được giữ trong nhiều giờ. claude -p không tương tác tuân theo quy tắc khác: chúng vẫn bắt đầu ở default nếu bạn không truyền mode, trừ khi dùng third-party provider hoặc tắt telemetry; trong các trường hợp đó, v2.1.285 trở lên sẽ bắt đầu ở auto.

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

Có 6 chế độ. Tên ở đầu mỗi dòng là giá trị bạn ghi trong settings hoặc truyền cho --permission-mode. Cả 6 chế độ đều do chính Claude Code thực thi, không phải 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 của bạn vẫn chạy mà không cần prompt. CLI (command line interface) gọi chế độ này là Manual và chấp nhận manual làm alias kể từ Claude Code v2.1.200.
  • plan: Claude đọc file và chạy command để thăm dò, nhưng không chỉnh sửa source của bạn. Các thao tác chỉnh sửa vẫn 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 prompt, 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 prompt.
  • auto: mọi thao tác đều chạy, nhưng classifier kiểm tra từng action trước. Các rule ask rõ ràng vẫn buộc 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 thao tác đọc file bên trong working directory của bạn, các rule allow, các Bash command read-only dựng sẵn và các call đượ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.

Trong một session, nhấn Shift+Tab để chuyển lần lượt từ default sang acceptEdits rồi sang plan. Từ auto, lần nhấn đầu tiên sẽ hạ xuống default. 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. Theo mặc định, các chế độ khác không nằm trong chu kỳ này. auto được thêm vào chu kỳ khi account của bạn đáp ứng các yêu cầu. bypassPermissions chỉ được thêm khi session được khởi động với --permission-mode bypassPermissions, --dangerously-skip-permissions hoặc --allow-dangerously-skip-permissions, hoặc với defaultMode: "bypassPermissions" trong user, --settings hoặc managed settings. dontAsk không bao giờ xuất hiện trong chu kỳ đó, vì vậy hãy đặt chế độ này bằng claude --permission-mode dontAsk.

Auto mode cũng yêu cầu model mới gần đây. Đâ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 11 October 2026, tài liệu liệt kê Claude Opus 4.6 trở lên, Sonnet 4.6 trở lên, Haiku 5.5 hoặc model Fable trên Anthropic API; danh sách này ngắn hơn trên Amazon Bedrock, Google Cloud và Microsoft Foundry. Tài liệu cũng nêu rằng 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, trước tiên hãy kiểm tra các yêu cầu đó và setting disableAutoMode. Anthropic cũng có thể tắt auto mode ở phía server. Session nhận phản hồi đó sẽ tiếp tục tắt auto mode cho đến khi kết thúc. Vì vậy, hãy khởi động session mới sau đó thay vì chờ trong session cũ.

Có 2 control có hiệu lực trong mọi chế độ, kể cả bypassPermissions: các rule deny và các rule ask rõ ràng. Đây là các đòn bẩy vẫn do bạn kiểm soát, bất kể session khởi động ở chế độ nào.

Bộ phân loại auto mode chặn những gì

Bộ phân loại là một model thứ hai đọc action đang chờ và quyết định xem 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 model phân loại riêng sẽ xem xét các action trước khi chúng chạy và 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 tác động.

Mặc định sẽ chặn các action sau, đây là những nhóm mà server operator thường gặp nhất:

  • Download 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 khiến một 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 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 lên bất kỳ branch nào của repository bạn đang làm việc

Không nên dựa vào 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 ghi rõ cần lưu ý trước khi bạn dựa vào cơ chế này. Thứ nhất, trong các request đến bộ phân loại mà Claude Code tự gửi, bộ phân loại thấy message của bạn, các tool call và nội dung CLAUDE.md của bạn; tool result bị loại bỏ. Vì vậy, text bên trong file hoặc web page mà Claude đã đọc không thể tác động trực tiếp đến bộ phân loại. Thứ hai, khi bộ phân loại 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 hỏi bạn. Phê duyệt action được hỏi sẽ tiếp tục auto mode. Các ngưỡng này không thể cấu hình. Một lần chạy non-interactive có flag -p nhưng không có --permission-prompt-tool sẽ không có ai để trả lời prompt. Tài liệu nêu rõ Claude Code không dừng lần chạy: action bị chặn sẽ không chạy, còn Claude vẫn tiếp tục làm việc.

Hành vi thứ hai đặc biệt dễ gây lỗi trên máy remote, theo 2 cách khác nhau. Một session interactive vẫn đang chạy mà chạm ngưỡng sẽ dừng ở prompt và chờ một người không nhìn vào terminal. Một lần chạy -p sẽ không bao giờ chờ, vì vậy job có thể kết thúc trong khi các bước bị chặn vẫn chưa được thực hiện. Một session Claude Code thứ hai trên cùng máy không thể thay thế người đó, vì text gửi từ session này sang session khác không bao giờ được tính là sự đồng ý của bạn và không thể trả lời permission prompt đang chờ. Do đó, session bị tạm dừng ở một prompt vẫn cần người trả lời. Thu hẹp phạm vi công việc mà agent được yêu cầu 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ó tác dụng giúp session không đi lệch sang các action quá rộng mà bộ phân loại sẽ chặn. Skill định hướng một task, còn một output style sửa trực tiếp system prompt, vì vậy style yêu cầu các thay đổi nhỏ và có phạm vi rõ ràng sẽ áp dụng cho mọi turn trong session, thay vì chỉ áp dụng cho job mà bạn gọi nó.

Vị trí của 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. Kết quả được quyết định bởi match đầu tiên theo thứ tự đó. Rule cụ thể hơn không ghi đè rule rộng hơn nếu rule rộng hơn nằm trước. Rule deny cho Bash(aws *) sẽ chặn aws s3 ls ngay cả khi bạn cũng cho phép chính xác 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ỏ qua prompt thông thường. Rule ask sẽ bật lại prompt cho command cụ thể mà bạn muốn yêu cầu 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ó checkpoint trước khi code rời khỏi máy. Lưu credential file trong deny là phần còn lại của cách này. Cách đó kết hợp với để credential tránh xa agent ngay từ đầu.

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

  • ~/.claude/settings.json: settings của user hiện tại, á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 deploy. Trên Linux, file đó là /etc/claude-code/managed-settings.json. Không có gì ghi đè được permission rule trong managed settings, kể cả command line flag.

Có một bẫy ở đây và nguyên nhân đã được ghi rõ trong tài liệu. defaultMode: "auto" không có hiệu lực khi được đặt trong .claude/settings.json hoặc .claude/settings.local.json, để repository không thể tự cấp auto mode bằng cách ship một settings file. bypassPermissions cũng bị bỏ qua khi đặt trong hai file đó. Nếu đặt auto ở đó, Claude Code sẽ quay về default tích hợp sẵn, bỏ qua mọi defaultMode trong ~/.claude/settings.json mà không in ra lỗi ở bất kỳ đâu. Với version hoặc plan có default tích hợp sẵn là Manual, session sẽ âm thầm khởi động ở mode default. 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. Cả 2 đề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í đặ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ỳ settings file 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ể ghi đè chúng.

disableAutoMode loại auto khỏi chu kỳ Shift+Tab, và session được khởi động với --permission-mode auto sẽ bắt đầu ở Manual mode. disableBypassPermissionsMode thực hiện chức năng tương tự cho bypass mode và hoạt động trong mọi scope. Vì vậy, bạn có thể đặt tùy chọn này trong ~/.claude/settings.json của mình để tự ngăn bản thân truy cập một mode mà bạn không muốn dùng lúc 2 giờ sáng trên server đang chạy production. Trên một máy được nhiều người sử dụng, hãy đặt cả 2 trong /etc/claude-code/managed-settings.json, vì user settings file thuộc về user, 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 sẵn giới hạn quyền truy cập filesystem và network của mọi lệnh Bash do Claude chạy. Hệ điều hành cũng áp dụng giới hạn đó cho các child process. 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 các tab Mode, Overrides và Config. Nếu thiếu package bắt buộc, chỉ tab Dependencies được hiển thị và liệt kê các package cần cài. Kiểm tra dependency chạy khi khởi động, nên hãy restart Claude Code sau khi cài package. Nếu không, panel vẫn báo package chưa có.

Trên Ubuntu 24.04 trở lên, policy AppArmor mặc định ngăn bubblewrap tạo user namespace cần thiết. 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 này á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ỉ resolve thành project root khi được cấu hình trong project settings. Nếu đặt cùng các dòng đó trong ~/.claude/settings.json thì . sẽ resolve thành ~/.claude. Khi đó rule denyRead tiếp tục chặn các file của project và mọi lệnh đều không đọc được code mà nó cần chỉnh sửa.

Cần biết sandbox này không bao phủ những gì. Sandbox giới hạn Bash và các child process của Bash. Các file tool tích hợp chạy bên trong process của 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ả thành phần này 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 thiết lập 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 được thông báo trước khi thực thi. Bạn đang trực tiếp sử 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à thiết lập mặc định ngày 14 August được thiết kế cho.

Một VPS dùng chung

Dùng auto cho từng user, cấu hình trong ~/.claude/settings.json riêng của từng 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 không phù hợp, 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 chạy không cần giám sát

Dùng dontAsk với danh sách allow rõ ràng 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 một lần chạy -p gặp nhiều lần classifier block sẽ không dừng: các action bị block sẽ được bỏ qua và Claude tiếp tục làm việc, nên job có thể kết thúc trong khi một số bước chưa được thực hiệ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 các thứ bạn cần bảo vệ.

FAQ

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

Auto mode trở thành mặc định vào ngày 14 tháng 8 năm 2026 cho các session mới trên gói Pro, Max và Team. Từ ngày 11 tháng 10 năm 2026, tài liệu cho biết Claude Code v2.1.283 trở lên dùng auto mode làm chế độ khởi động tích hợp cho các session terminal tương tác và VS Code trên mọi gói và provider, ngoại trừ các organization đã áp dụng cấu hình HIPAA. Các lần chạy claude -p không tương tác vẫn khởi động ở default nếu bạn không truyền mode, ngoại trừ third-party provider và các session đã tắt telemetry trên v2.1.285 trở lên. 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 organization quản lý cũng không thay đổi. Kiểm tra session thực tế đang ở chế độ nào bằng status bar. Ở auto mode, status bar hiển thị ⏵⏵ auto mode on.

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

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 lần chạy 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 sẵn sàng rebuild. bypassPermissions bỏ qua hoàn toàn các bước kiểm tra và chỉ được tài liệu khuyến nghị cho isolated environment. Claude Code từ chối khởi động ở chế độ đó khi chạy dưới root trên Linux và in --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 có user settings file hoặc command line flag nào có thể ghi đè chúng. disableAutoMode loại auto khỏi chu kỳ Shift+Tab. Session được khởi động bằng --permission-mode auto sẽ khởi động ở Manual mode. 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 chính mình.

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

Vì setting này nằm trong sai file. defaultMode: "auto" không có hiệu lực khi được đặt trong .claude/settings.json hoặc .claude/settings.local.json. Nhờ đó, một repository không thể tự cấp auto mode cho mình chỉ bằng cách chứa một settings file. Claude Code sẽ quay về default tích hợp sẵn, bỏ qua mọi defaultMode trong user settings của bạn và không in lỗi. Khi default tích hợp sẵn là Manual, session sẽ khởi động ở chế độ default. Chuyển setting sang ~/.claude/settings.json, rồi chạy /permissions để xác nhận từng rule đang hoạt động bắt nguồ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 hỗ trợ trên bất kỳ provider nào.