Tổng quan
Các chính sách được nhóm theo danh mục:| Danh mục | Chính sách | Loại Hook |
|---|---|---|
| Lệnh nguy hiểm | block-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commands | PreToolUse |
| Lệnh cơ sở hạ tầng | block-kubectl, block-terraform, block-aws-cli, block-gcloud, block-az-cli, block-helm, block-gh-pipeline | PreToolUse |
| Bí mật (sanitizers) | sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokens | PostToolUse |
| Môi trường | block-env-files, protect-env-vars | PreToolUse |
| Truy cập tệp | block-read-outside-cwd, block-secrets-write | PreToolUse |
| Git | block-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-staged | PreToolUse |
| Cơ sở dữ liệu | warn-destructive-sql, warn-schema-alteration | PreToolUse |
| Cảnh báo | warn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-install | PreToolUse |
| Trình quản lý gói | prefer-package-manager | PreToolUse |
| Quy trình làm việc | require-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-no-conflicts-before-stop, require-ci-green-before-stop | Stop |
block-— dừng agent từ việc tiếp tục.warn-— cung cấp cho agent ngữ cảnh bổ sung để nó có thể tự sửa chữa.sanitize-— xóa dữ liệu nhạy cảm từ đầu ra công cụ trước khi agent nhìn thấy nó.
Không gian tên
Mỗi chính sách tồn tại trong một khe<namespace>/<name>. Các chính sách tích hợp thuộc về không gian tên failproofai/ — ví dụ: failproofai/sanitize-jwt. Không gian tên ngăn chặn xung đột khi bạn cũng tải các chính sách tùy chỉnh hoặc của bên thứ ba có tên ngắn tương tự.
Trong cấu hình của bạn, bạn có thể tham chiếu một chính sách tích hợp bằng tên ngắn hoặc tên đủ điều kiện của nó; cả hai dạng đều giải quyết chính sách tương tự:
/, failproofai sẽ coi nó thuộc về không gian tên mặc định failproofai. Các tên đã chứa / (ví dụ: myorg/foo, custom/my-hook) được giữ nguyên.
require-— chặn sự kiện Stop cho đến khi các điều kiện được đáp ứng.
Lệnh nguy hiểm
Ngăn chặn agent chạy các hoạt động khó hoàn tác hoặc có thể làm hỏng hệ thống chủ.block-sudo
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối bất kỳ lệnh
sudo nào.
Chặn các lệnh gọi chứa từ khóa sudo. Khớp mẫu được thực hiện trên các token lệnh được phân tích cú pháp, không phải chuỗi thô, để ngăn chặn vượt qua qua injection operator shell.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Tiền tố lệnh chính xác được phép. Mỗi mục được so khớp với các token argv được phân tích. |
sudo systemctl status nginx được phép, nhưng sudo rm /etc/hosts bị từ chối.
Các mẫu được so khớp với các token được phân tích, không phải chuỗi lệnh thô. Điều này ngăn chặn vượt qua qua các operator shell được thêm vào (ví dụ:
sudo systemctl status x; rm -rf / không khớp với sudo systemctl status *).block-rm-rf
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối
rm -rf, rm -fr và các dạng xóa đệ quy tương tự.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPaths | string[] | [] | Các đường dẫn an toàn để xóa đệ quy (ví dụ: /tmp). |
block-curl-pipe-sh
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối
curl <url> | bash, curl <url> | sh, wget <url> | bash và các mẫu tương tự.
Không có tham số.
block-failproofai-commands
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối các lệnh sẽ gỡ cài đặt hoặc vô hiệu hóa failproofai (ví dụ:
npm uninstall failproofai, failproofai policies --uninstall).
Không có tham số.
Lệnh cơ sở hạ tầng
Ngăn chặn agent viết mã chạy CLI cơ sở hạ tầng hoặc kích hoạt đường dẫn CI/CD. Tất cả các chính sách trong danh mục này là tùy chọn (defaultEnabled: false) — agent cần gọi kubectl, terraform, v.v. sẽ không bị gián đoạn trừ khi bạn bật chính sách. Khi được bật, mỗi lần gọi CLI phù hợp bị từ chối trừ khi lệnh khớp với một mục trong allowPatterns.
Ngữ pháp mẫu giống như block-sudo: các token được so khớp với argv được phân tích, * là ký tự đại diện cho một token, và bất kỳ lệnh nào chứa một operator shell độc lập (&&, ||, |, ;) hoặc token có ký tự siêu shell nhúng bị từ chối trước khi khớp danh sách cho phép để ngăn chặn injection.
block-kubectl
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối bất kỳ lệnh gọi
kubectl nào.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Tiền tố lệnh kubectl được phép. |
kubectl get pods được phép nhưng kubectl apply -f deploy.yaml bị từ chối.
block-terraform
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối bất kỳ lệnh gọi
terraform hoặc tofu (OpenTofu) nào.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Tiền tố lệnh terraform/tofu được phép. |
block-aws-cli
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối bất kỳ lệnh gọi CLI
aws nào.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Tiền tố lệnh CLI aws được phép. |
block-gcloud
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối bất kỳ lệnh gọi CLI
gcloud (Google Cloud) nào.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Tiền tố lệnh gcloud được phép. |
block-az-cli
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối bất kỳ lệnh gọi CLI
az (Azure) nào.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Tiền tố lệnh CLI az được phép. |
block-helm
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối bất kỳ lệnh gọi
helm nào.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Tiền tố lệnh helm được phép. |
block-gh-pipeline
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối các lệnh phụ sau của CLI
gh thay đổi trạng thái hoặc kích hoạt đường dẫn:
gh workflow run,gh workflow enable,gh workflow disablegh run rerun,gh run cancelgh pr mergegh release create,gh release deletegh cache deletegh secret set,gh secret delete
gh chỉ đọc như gh pr view, gh pr list, gh run list, gh release view và gh api repos/.../... không được khớp bởi chính sách này — chúng thường cần thiết cho các kiểm tra quy trình làm việc (bao gồm cả require-ci-green-before-stop của failproofai).
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPatterns | string[] | [] | Các lệnh gọi kịch bản cụ thể để cho phép mặc dù chúng sẽ bị từ chối. |
Bí mật (sanitizers)
Ngăn chặn agent rò rỉ thông tin xác thực vào ngữ cảnh hoặc đầu ra của chúng. Các chính sách sanitizer được kích hoạt trên các sự kiện PostToolUse. Khi Claude chạy một lệnh Bash, đọc một tệp hoặc gọi bất kỳ công cụ nào, các chính sách này kiểm tra đầu ra trước khi nó được trả về cho Claude. Nếu phát hiện mẫu bí mật, chính sách sẽ trả về quyết định deny ngăn chặn đầu ra được truyền lại.sanitize-jwt
Sự kiện: PostToolUse (tất cả công cụ)Mặc định: Loại bỏ các token JWT (ba đoạn base64url cách nhau bằng
.).
Không có tham số.
sanitize-api-keys
Sự kiện: PostToolUse (tất cả công cụ)Mặc định: Loại bỏ các định dạng khóa API phổ biến: Anthropic (
sk-ant-), OpenAI (sk-), GitHub PATs (ghp_), khóa truy cập AWS (AKIA), khóa Stripe (sk_live_, sk_test_) và khóa API Google (AIza).
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
additionalPatterns | { regex: string; label: string }[] | [] | Các mẫu regex bổ sung để coi là bí mật. |
sanitize-connection-strings
Sự kiện: PostToolUse (tất cả công cụ)Mặc định: Loại bỏ chuỗi kết nối cơ sở dữ liệu chứa thông tin xác thực nhúng (ví dụ:
postgresql://user:password@host/db).
Không có tham số.
sanitize-private-key-content
Sự kiện: PostToolUse (tất cả công cụ)Mặc định: Loại bỏ các khối PEM (
-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY-----, v.v.).
Không có tham số.
sanitize-bearer-tokens
Sự kiện: PostToolUse (tất cả công cụ)Mặc định: Loại bỏ các tiêu đề
Authorization: Bearer <token> nơi token có 20 ký tự trở lên.
Không có tham số.
Môi trường
Bảo vệ cấu hình môi trường nhạy cảm khỏi việc bị agent đọc hoặc tiếp xúc.block-env-files
Sự kiện: PreToolUse (Bash, Read)Mặc định: Từ chối đọc các tệp
.env qua cat .env, các lệnh gọi công cụ Read có .env làm đường dẫn tệp, v.v.
Không chặn .envrc hoặc các tệp liên quan môi trường khác - chỉ các tệp được đặt tên chính xác là .env.
Không có tham số.
protect-env-vars
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối các lệnh in biến môi trường:
printenv, env, echo $VAR.
Không có tham số.
Truy cập tệp
Giữ agent hoạt động bên trong ranh giới dự án và xa khỏi các tệp nhạy cảm.block-read-outside-cwd
Sự kiện: PreToolUse (Read, Bash)Mặc định: Từ chối đọc các tệp ngoài thư mục gốc dự án. Ranh giới là
CLAUDE_PROJECT_DIR (được đặt một lần mỗi phiên bởi Claude Code), với sự hỗ trợ dự phòng cho thư mục làm việc hiện tại của phiên khi biến đó không được đặt. Sử dụng thư mục gốc dự án thay vì cwd trực tiếp có nghĩa là ranh giới vẫn ổn định ngay cả sau khi Claude cd vào một thư mục con.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowPaths | string[] | [] | Tiền tố đường dẫn tuyệt đối được phép ngay cả khi nằm ngoài thư mục gốc dự án. |
block-secrets-write
Sự kiện: PreToolUse (Write, Edit)Mặc định: Từ chối ghi vào các tệp thường được sử dụng cho khóa riêng tư và chứng chỉ:
id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
additionalPatterns | string[] | [] | Các mẫu tên tệp bổ sung (kiểu glob) để chặn. |
Git
Ngăn chặn các lần push, force-push và lỗi nhánh ngẫu nhiên khó hoàn tác.block-push-master
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối
git push origin main và git push origin master.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
protectedBranches | string[] | ["main", "master"] | Tên nhánh không thể được push trực tiếp. |
block-work-on-main
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối
git commit, git merge, git rebase và git cherry-pick khi cây làm việc trên main hoặc master. Tạo nhánh và chuyển đổi (git checkout, git checkout -b, git switch, git switch -c) không bị ảnh hưởng.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
protectedBranches | string[] | ["main", "master"] | Tên nhánh trên đó commit/merge/rebase/cherry-pick bị từ chối. |
block-force-push
Sự kiện: PreToolUse (Bash)Mặc định: Từ chối
git push --force và git push -f.
Không có tham số cụ thể chính sách. Sử dụng hint xuyên suốt để đề xuất các giải pháp thay thế:
warn-git-amend
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude tiến hành cẩn thận khi chạy
git commit --amend. Không chặn lệnh.
Không có tham số.
warn-git-stash-drop
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude xác nhận trước khi chạy
git stash drop. Không chặn lệnh.
Không có tham số.
warn-all-files-staged
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude xem xét những gì nó đang tổ chức khi chạy
git add -A hoặc git add .. Không chặn lệnh.
Không có tham số.
Cơ sở dữ liệu
Phát hiện các thao tác SQL tàn phá trước khi chúng thực thi với cơ sở dữ liệu của bạn.warn-destructive-sql
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude xác nhận trước khi chạy SQL chứa
DROP TABLE, DROP DATABASE hoặc DELETE mà không có mệnh đề WHERE.
Không có tham số.
warn-schema-alteration
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude xác nhận trước khi chạy các câu lệnh
ALTER TABLE.
Không có tham số.
Cảnh báo
Cung cấp cho agent ngữ cảnh bổ sung trước các thao tác có rủi ro nhưng không tàn phá.warn-large-file-write
Sự kiện: PreToolUse (Write)Mặc định: Hướng dẫn Claude xác nhận trước khi ghi các tệp lớn hơn 1024 KB. Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
thresholdKb | number | 1024 | Ngưỡng kích thước tệp tính bằng kilobyte trên đó cảnh báo được phát hành. |
Trình xử lý hook thực thi giới hạn stdin 1 MB trên tải trọng. Để kiểm tra chính sách này với nội dung nhỏ, hãy đặt
thresholdKb thành giá trị ít hơn 1024.warn-package-publish
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude xác nhận trước khi chạy
npm publish.
Không có tham số.
warn-background-process
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude cẩn thận khi khởi chạy các quy trình nền qua
nohup, &, disown hoặc screen.
Không có tham số.
warn-global-package-install
Sự kiện: PreToolUse (Bash)Mặc định: Hướng dẫn Claude xác nhận trước khi chạy
npm install -g, yarn global add hoặc pip install mà không có môi trường ảo.
Không có tham số.
Trình quản lý gói
Thực thi trình quản lý gói nào được agent phép sử dụng.prefer-package-manager
Sự kiện: PreToolUse (Bash)Mặc định: Tắt. Khi bật, chặn bất kỳ lệnh trình quản lý gói nào không có trong danh sách
allowed và yêu cầu Claude viết lại lệnh bằng trình quản lý được phép.
Phát hiện: pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo.
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
allowed | string[] | [] | Tên trình quản lý gói được phép. Bất kỳ trình quản lý được phát hiện nào không có trong danh sách này đều bị chặn. Khi để trống, chính sách là không hoạt động. |
blocked | string[] | [] | Tên trình quản lý bổ sung để chặn ngoài danh sách tích hợp (ví dụ: ['pdm', 'pipx']). |
blocked để thêm các trình quản lý không có trong danh sách này.
Cấu hình ví dụ:
pip install flask và pdm install flask đều bị từ chối với thông báo yêu cầu Claude sử dụng uv hoặc bun thay thế. Các lệnh như uv pip install flask được phép vì uv có trong danh sách cho phép và được kiểm tra trước tiên.
Hành vi AI
Phát hiện khi agent bị kẹt hoặc hoạt động không như mong đợi.warn-repeated-tool-calls
Sự kiện: PreToolUse (tất cả công cụ)Mặc định: Hướng dẫn Claude suy nghĩ lại khi cùng một công cụ được gọi 3 lần hoặc nhiều hơn với các tham số giống nhau - dấu hiệu phổ biến của agent bị kẹt trong vòng lặp. Không có tham số.
Quy trình làm việc
Thực thi quy trình làm việc kỷ luật ở cuối phiên. Các chính sách này được kích hoạt trên sự kiện Stop và từ chối agent dừng lại cho đến khi mỗi điều kiện được đáp ứng. Chúng tuân theo chuỗi phụ thuộc tự nhiên: commit → push → PR → CI. Nếu chính sách từ chối, các chính sách sau đó trong chuỗi sẽ bị bỏ qua (deny ngắn mạch). Tất cả các chính sách quy trình làm việc fail-open: nếu công cụ yêu cầu không có sẵn (ví dụ:gh chưa cài đặt, không có git remote), chính sách cho phép với thông báo thông tin giải thích lý do kiểm tra bị bỏ qua.
Ngữ nghĩa Stop theo CLI
Thực thi Stop trông hơi khác nhau trên bảy CLI được hỗ trợ vì mỗi CLI tiếp xúc với hợp đồng hook “agent finished” khác nhau. Kết quả là giống nhau — agent không thoát khỏi việc dừng lại khi một cổng quy trình làm việc đang thất bại — nhưng cơ học khác nhau. Bảng dưới đây tóm tắt; chỉ có Pi có một đặc điểm nhạy cảm đáng hiểu trước khi bạn bật chính sáchrequire-*-before-stop.
| CLI | Khi cổng kích hoạt | Bạn thấy gì |
|---|---|---|
| Claude Code | Cùng một vòng lặp agent, ngay lập tức | Claude tiếp tục làm việc — sửa chữa vấn đề, sau đó cố gắng kết thúc lại. Không gián đoạn hiển thị cho bạn. |
| Codex | Cùng một vòng lặp agent, ngay lập tức | Giống như Claude. |
| GitHub Copilot CLI | Cùng một vòng lặp agent, ngay lập tức | Giống như Claude (sử dụng kênh {decision:"block", reason} của Copilot — xác minh theo kinh nghiệm so với Copilot CLI 1.0.41). |
| Cursor Agent | Cùng một vòng lặp agent, ngay lập tức | Giống như Claude (sử dụng kênh {followup_message} của Cursor — bị giới hạn bởi loop_limit, mặc định 5 lần thử lại). |
| Gemini CLI | Cùng một vòng lặp agent, ngay lập tức | Giống như Claude (sử dụng kênh {decision:"block", reason} của Gemini trên AfterAgent). |
| OpenCode | Cùng một vòng lặp agent, ngay lập tức | Giống như Claude (sử dụng lệnh gọi SDK client.session.prompt(...) của OpenCode được định tuyến qua hookSpecificOutput.additionalContext). |
| Pi (pi-coding-agent) | Lần tiếp theo người dùng | Pi dừng rõ ràng khi cổng kích hoạt — vòng lặp agent của nó thoát và bạn được trả về lời nhắc. Cổng sau đó kích hoạt lần tiếp theo bạn gửi lời nhắc: failproofai thêm một chỉ thị MANDATORY ACTION REQUIRED vào lời nhắc hệ thống của lần đó, hướng dẫn LLM hoàn thành bước quy trình làm việc (commit, push, v.v.) trước khi làm những gì bạn yêu cầu. |
Giới hạn Pi.
AgentEndEvent của Pi (tương đương thượng nguồn của hook Stop của Claude) không có loại Result — khi nó kích hoạt, vòng lặp agent của Pi đã thoát. Pi không thể bị buộc phải thử lại cùng một vòng lặp như Claude / Copilot / Cursor / Gemini / OpenCode có thể. failproofai chuyển cổng sang sự kiện before_agent_start của Pi (được kích hoạt sau lời nhắc người dùng tiếp theo) để kiểm tra quy trình làm việc vẫn thực thi, chỉ là ở lần tiếp theo thay vì hiện tại.Điều này có nghĩa là gì trong thực tế:- Sau khi Pi dừng, lý do deny được lưu trong bộ nhớ được khóa theo id phiên Pi. Lời nhắc rất tiếp theo bạn gửi trong cùng một quy trình Pi xả nó: LLM thấy chỉ thị
MANDATORY ACTION REQUIREDở đầu lời nhắc hệ thống của nó, commit (hoặc push / mở PR / chờ CI) và chỉ sau đó tiếp tục với yêu cầu của bạn. Lý do deny được lưu lại là một lần — sau khi xả, cổng sạch. - Cổng được giới hạn bởi thời gian sống của quy trình Pi. Nếu bạn
Ctrl+CPi hoặc thoát giữa các lần, mục trong bộ nhớ bị xóa cùng với quy trình và cổng bị bỏ lỡ. Claude, Copilot, Cursor, Gemini và OpenCode có cách ràng buộc tương tự (giết agent và cổng bị bỏ lỡ) — Pi chỉ làm nó rõ ràng hơn vì agent rõ ràng thoát trước khi cổng kích hoạt. - Một deny đang chờ cũng bị xóa trên
session_shutdownvì bất kỳ lý do gì (new/resume/fork/quit), vì vậy cổng cũ từ một phiên trước không thể rò rỉ vào một phiên mới được bắt đầu trong cùng một quy trình Pi.
Stop của bạn dưới bất kỳ trong sáu CLI được hỗ trợ khác. Chúng tôi đang theo dõi Pi thượng nguồn cho loại Result trong tương lai trên AgentEndEvent sẽ cho phép chúng tôi đóng khoảng trống này.require-commit-before-stop
Sự kiện: StopMặc định: Từ chối dừng khi có các thay đổi chưa commit (tệp được sửa đổi, tổ chức hoặc chưa theo dõi). Trả lại thông báo thông tin khi thư mục làm việc sạch. Không có tham số.
require-push-before-stop
Sự kiện: StopMặc định: Từ chối dừng khi có các commit chưa push hoặc khi nhánh hiện tại không có nhánh remote theo dõi. Đề xuất
git push -u để tạo nhánh theo dõi nếu cần. Thất bại mở nếu không có remote được cấu hình.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
remote | string | "origin" | Tên remote để push đến. |
require-pr-before-stop
Sự kiện: StopMặc định: Từ chối dừng khi không có pull request nào tồn tại cho nhánh hiện tại, hoặc khi PR hiện có bị đóng mà không merge. Hướng dẫn Claude tạo PR bằng
gh pr create. Khi PR được merge, chính sách cho phép (công việc đã được gửi) và thông báo gợi ý chuyển đổi ra khỏi nhánh (git checkout main && git pull).
Không có tham số.
Chính sách này yêu cầu GitHub CLI (
gh) được cài đặt và xác thực.
Chạy gh auth login với token truy cập cá nhân có phạm vi repo để truy cập đọc pull request. Nếu gh không được cài đặt hoặc chưa được xác thực, chính sách thất bại mở và báo cáo lý do cho Claude.require-no-conflicts-before-stop
Sự kiện: StopMặc định: Từ chối dừng khi nhánh hiện tại không thể sạch sẽ merge vào nhánh cơ sở. Chính sách trước tiên xác nhận có một PR
OPEN trên GitHub cho nhánh — nếu không có, không có mục tiêu merge để thực thi, vì vậy toàn bộ chính sách rút ngắn để cho phép. Một khi PR OPEN được xác nhận, hai bộ thăm dò độc lập chạy:
- Cục bộ —
git merge-tree --write-tree --name-only origin/<baseBranch> HEAD. Về xung đột, thông báo deny đặt tên các tệp xung đột để Claude biết chính xác những gì cần giải quyết. - GitHub — sử dụng lại kết quả
gh pr view --json mergeable,stateđã được lấy trong kiểm tra trước. Nắm bắt các xung đột màorigin/<baseBranch>cũ cục bộ sẽ bỏ lỡ (ví dụ: ai đó đã đưa PR xung đột trênmainkể từ lần fetch cuối cùng). Kết quảCONFLICTINGtừ chối. Kết quảUNKNOWNcũng từ chối và hướng dẫn Claude chờ ~ 10 giây và kiểm tra lại trước khi cố gắng dừng lại — điều này ngăn chặn âm tính giả trong khi GitHub tính toán lại.
gh không được cài đặt, không có PR cho nhánh, trạng thái PR không phải OPEN (ví dụ: MERGED, CLOSED), hoặc gh pr view trả về đầu ra không thể phân tích. Cũng thất bại mở khi origin/<baseBranch> bị thiếu cục bộ hoặc khi không có commit trước cơ sở — những lỗi rơi qua Lớp 1 đó vẫn tham khảo khả năng merge PR được lưu trước khi cho phép.
Tham số:
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
baseBranch | string | "main" | Nhánh cơ sở để kiểm tra xung đột. |
GitHub CLI (
gh) được yêu cầu cho chính sách này. Chính sách sử dụng gh pr view để xác nhận
một PR OPEN tồn tại trước khi chạy bất kỳ bộ thăm dò xung đột nào — nếu không có gh, chính sách
rút ngắn để cho phép. Chạy gh auth login với token truy cập cá nhân có phạm vi
repo để truy cập đọc pull request.require-ci-green-before-stop
Sự kiện: StopMặc định: Từ chối dừng khi các kiểm tra CI đang thất bại hoặc vẫn đang chạy trên nhánh hiện tại. Kiểm tra cả chạy quy trình GitHub Actions và kiểm tra bot của bên thứ ba (ví dụ: CodeRabbit, SonarCloud, Codecov). Coi
skipped, cancelled và neutral kết luận là không thất bại (điều sau bao gồm ví dụ: cảnh báo Socket Security trên PR của người đóng góp bên ngoài, nơi ứng dụng cố ý báo cáo neutral thay vì success/failure). Trả lại thông báo thông tin khi tất cả các kiểm tra vượt qua.
Không có tham số.
Chính sách này yêu cầu GitHub CLI (
gh) được cài đặt và xác thực.
Chạy gh auth login với token truy cập cá nhân có phạm vi repo để truy cập đọc
chạy quy trình Actions và API Checks. Nếu gh không được cài đặt hoặc chưa được xác thực, chính sách thất bại mở và báo cáo lý do cho Claude.Vô hiệu hóa các chính sách riêng lẻ
Xóa một chính sách cụ thể khỏienabledPolicies trong cấu hình của bạn, hoặc tắt nó trên tab Chính sách của bảng điều khiển.
enabledPolicies không chạy, ngay cả khi các mục policyParams tồn tại cho chúng.
