Auto mode cho phép Claude Code chạy mà không cần permission prompt thường xuyên, bằng cách route tool call qua một classifier (bộ phân loại) chặn mọi thứ không thể hoàn tác, có tính phá huỷ, hoặc nhắm ra ngoài môi trường của bạn. Deny rule và ask rule tường minh vẫn được đánh giá trước classifier và luôn chặn/prompt. Dùng block setting autoMode để cho classifier biết repo, bucket, domain nào tổ chức bạn tin tưởng, để nó ngừng chặn các thao tác nội bộ thường ngày.
Mặc định, classifier chỉ tin tưởng working directory và remote đã cấu hình của repo hiện tại. Hành động như push lên source-control org của công ty hoặc ghi vào cloud bucket của team sẽ bị chặn cho đến khi bạn thêm vào autoMode.environment.
Ranh giới mặc định
Phần tiêu đề “Ranh giới mặc định”Auto mode cho phép push lên bất kỳ branch nào của repo đang làm việc, kể cả default branch, và tạo pull request theo mặc định. Một branch không phải default nhưng tên gợi ý là deploy/publication target (ví dụ production, release, gh-pages) không nằm trong mặc định đó - classifier tự đánh giá push đến branch này riêng.
Nếu muốn có một điểm dừng do con người kiểm tra (human checkpoint) trước mỗi lần push hoặc pull request, thêm permission rule:
{ "permissions": { "ask": [ "Bash(git push *)", "Bash(gh pr create *)" ] }}Chọn cơ chế theo mức độ ranh giới bạn cần:
| Ranh giới | Cơ chế | Hành vi trong auto mode |
|---|---|---|
| Prompt trước khi thực hiện | permissions.ask | Luôn prompt với rule scoped theo nội dung như ví dụ trên - classifier không tự động approve được |
| Không bao giờ chạy | permissions.deny | Chặn trước khi classifier được tham vấn - không gì override được |
| Ranh giới tạm cho session này | Nói trong hội thoại, ví dụ “đừng push cho đến khi tôi review” | Classifier chặn hành động khớp, nhưng ranh giới có thể mất nếu context bị nén (compaction) |
Nơi classifier đọc cấu hình
Phần tiêu đề “Nơi classifier đọc cấu hình”Classifier đọc cùng nội dung CLAUDE.md mà Claude tự đọc, nên chỉ dẫn kiểu “không bao giờ force push” trong CLAUDE.md của project điều hướng cả Claude lẫn classifier cùng lúc.
Với rule áp dụng xuyên project (như trusted infrastructure hoặc deny rule toàn tổ chức), dùng block autoMode. Classifier đọc autoMode từ các scope sau:
| Scope | File | Dùng cho |
|---|---|---|
| Một developer | ~/.claude/settings.json | Trusted infrastructure cá nhân |
| Toàn tổ chức | Managed settings | Trusted infrastructure phân phối cho mọi developer |
Flag --settings hoặc Agent SDK | JSON inline | Override cho mỗi lần chạy tự động |
Entry từ mỗi scope được gộp lại. Developer có thể mở rộng environment, allow, soft_deny, hard_deny bằng entry cá nhân nhưng không xoá được entry managed settings cung cấp.
Định nghĩa trusted infrastructure
Phần tiêu đề “Định nghĩa trusted infrastructure”Với đa số tổ chức, autoMode.environment là field duy nhất cần đặt. Nó cho classifier biết repo, bucket, domain nào đáng tin - bất kỳ destination nào không được liệt kê đều là mục tiêu exfiltration (rò rỉ dữ liệu) tiềm ẩn.
Có ba loại entry environment:
- Context slot: mô tả tổ chức, stack, tư thế bảo mật để classifier đọc các rule khác đúng ngữ cảnh (Organization, Primary use, Cloud provider(s), Repository visibility…)
- Trust slot: nêu tên những gì classifier coi là nằm trong ranh giới tin tưởng (Trusted repo, Source control, Trusted internal domains, Trusted cloud buckets, Key internal services, Internal package registry)
- Sensitivity slot: nêu tên những gì rule bảo vệ coi là rủi ro cao (Sensitive data locations & audiences, Sensitive remote targets, Protected IaC scopes)
Để thêm entry riêng bên cạnh mặc định, đưa chuỗi literal "$defaults" vào array - entry mặc định được chèn vào đúng vị trí đó.
{ "autoMode": { "environment": [ "$defaults", "Source control: github.example.com/acme-corp and all repos under it", "Trusted cloud buckets: s3://acme-build-artifacts, gs://acme-ml-datasets", "Trusted internal domains: *.corp.example.com, api.internal.example.com", "Key internal services: Jenkins at ci.example.com, Artifactory at artifacts.example.com" ] }}Sau khi lưu settings, chạy claude auto-mode config để xác nhận rule hiệu lực đã bao gồm entry của bạn.
Entry là văn xuôi (prose), không phải regex hay tool pattern - classifier đọc chúng như rule ngôn ngữ tự nhiên. Viết theo cách bạn mô tả hạ tầng cho một kỹ sư mới. Một mục environment đầy đủ nên bao gồm: Organization, Source control, Cloud providers và trusted buckets, Trusted internal domains, Key internal services, Internal package registry, Sensitive data locations & audiences, Sensitive remote targets, Protected IaC scopes, Additional context.
Không cần điền hết ngay từ đầu. Một lộ trình hợp lý: bắt đầu với mặc định, thêm source control org và key internal services (giải quyết false positive phổ biến nhất là push lên repo của chính mình), rồi thêm trusted domain và cloud bucket, và bổ sung dần khi gặp block.
Override rule block và allow
Phần tiêu đề “Override rule block và allow”Ba field cho phép thay thế danh sách rule tích hợp sẵn của classifier:
autoMode.hard_deny: ranh giới bảo mật không điều kiệnautoMode.soft_deny: hành động phá huỷ mà user intent có thể gỡ bỏautoMode.allow: ngoại lệ cho rule soft block
Thứ tự ưu tiên bên trong classifier có bốn tier: hard_deny chặn không điều kiện → soft_deny chặn tiếp theo → allow override rule soft_deny khớp như ngoại lệ → user intent tường minh override soft block còn lại (nếu message của user mô tả trực tiếp và cụ thể đúng hành động Claude sắp làm).
Chỉ bỏ "$defaults" khi bạn thực sự muốn toàn quyền kiểm soát danh sách. Để làm an toàn, chạy claude auto-mode defaults để in rule tích hợp, copy vào settings file, rồi rà soát từng rule theo pipeline và khẩu vị rủi ro của bạn.
Route toàn bộ shell command qua classifier
Phần tiêu đề “Route toàn bộ shell command qua classifier”Mặc định, allow rule Bash/PowerShell hẹp (như Bash(npm test)) vẫn mang sang auto mode và được resolve trước khi classifier chạy - auto mode chỉ tạm ngưng rule rộng cấp quyền thực thi code tuỳ ý (như Bash(*)). Đặt autoMode.classifyAllShell thành true để tạm ngưng mọi allow rule Bash/PowerShell trong lúc auto mode active, buộc classifier đánh giá mọi shell command bất kể allow list:
{ "autoMode": { "classifyAllShell": true }}Cách này đánh đổi latency lấy độ bao phủ - một lệnh đáng lẽ được allow rule duyệt ngay giờ phải chờ quyết định của classifier.
Kiểm tra mặc định và cấu hình hiệu lực
Phần tiêu đề “Kiểm tra mặc định và cấu hình hiệu lực”# In rule mặc định (environment, allow, soft_deny, hard_deny) dạng JSONclaude auto-mode defaults
# In cấu hình classifier thực sự dùng, với settings của bạn áp dụngclaude auto-mode config
# Nhận phản hồi AI cho rule allow/soft_deny/hard_deny tuỳ chỉnhclaude auto-mode critique
# Xoá tuỳ chỉnh, quay về mặc định tích hợp (chỉ ~/.claude/settings.json)claude auto-mode resetChạy claude auto-mode config sau khi lưu settings để xác nhận rule hiệu lực đúng như mong đợi. Nếu đã viết rule tuỳ chỉnh, claude auto-mode critique review và gắn cờ entry mơ hồ, thừa, hoặc dễ gây false positive.
Rà soát denial
Phần tiêu đề “Rà soát denial”Khi auto mode từ chối một tool call, Claude Code ghi lại trong /permissions ở tab Recently denied. Nhấn r trên một hành động bị từ chối để đánh dấu retry.
Sửa một denial
Phần tiêu đề “Sửa một denial”- Destination Claude cần xuyên suốt task (package registry, internal domain, repository host): thêm vào
autoMode.environment - Lệnh muốn chạy mà không cần review từ giờ trở đi: thêm
allowrule - Hành động một lần bạn thực sự muốn: nêu ý định đó trong message tiếp theo và để Claude retry
Sửa denial lặp lại
Phần tiêu đề “Sửa denial lặp lại”Denial lặp lại cho cùng một destination thường nghĩa là classifier thiếu ngữ cảnh - thêm destination đó vào autoMode.environment, rồi chạy claude auto-mode config để xác nhận có hiệu lực. Để phản ứng với denial theo chương trình, dùng hook PermissionDenied.
lượt xem