Bỏ qua để đến nội dung

Cấu hình Auto mode

Bài viết được dịch tự động từ bài viết gốc, chưa được kiểm tra lại bởi con người. Chỉ những bài viết có dấu tick xanh cạnh tiêu đề là đã được kiểm tra.

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.

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ớiCơ chếHành vi trong auto mode
Prompt trước khi thực hiệnpermissions.askLuô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ạypermissions.denyChặn trước khi classifier được tham vấn - không gì override được
Ranh giới tạm cho session nàyNó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)

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:

ScopeFileDùng cho
Một developer~/.claude/settings.jsonTrusted infrastructure cá nhân
Toàn tổ chứcManaged settingsTrusted infrastructure phân phối cho mọi developer
Flag --settings hoặc Agent SDKJSON inlineOverride 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.

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.

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ện
  • autoMode.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.

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”
Terminal window
# In rule mặc định (environment, allow, soft_deny, hard_deny) dạng JSON
claude auto-mode defaults
# In cấu hình classifier thực sự dùng, với settings của bạn áp dụng
claude auto-mode config
# Nhận phản hồi AI cho rule allow/soft_deny/hard_deny tuỳ chỉnh
claude auto-mode critique
# Xoá tuỳ chỉnh, quay về mặc định tích hợp (chỉ ~/.claude/settings.json)
claude auto-mode reset

Chạ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.

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.

  • 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 allow rule
  • 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

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.