Genel Bakış
İlkeler kategorilere ayrılır:block-— ajanı devam etmekten durdur.warn-— ajenta ek bağlam sağla, böylece kendini düzeltebilsin.sanitize-— ajent görmeden önce araç çıktısından hassas verileri temizle.
Ad Alanları
Her ilke bir<namespace>/<name> slotunda bulunur. Yerleşik ilkeler failproofai/ ad alanına aittir — örneğin, failproofai/sanitize-jwt. Ad alanı, benzer kısa adlara sahip özel veya üçüncü taraf ilkeleri yüklerken çakışmaları önler.
Yapılandırmanızda yerleşik bir ilkeye kısa adı veya tam adı ile başvurabilirsiniz; her iki form da aynı ilkeyi çözer:
/ yoksa, failproofai bunu varsayılan failproofai ad alanına ait olarak davranır. Zaten / içeren adlar (örneğin myorg/foo, custom/my-hook) olduğu gibi tutulur.
require-— koşullar karşılanana kadar Stop olayını engelle.
Tehlikeli komutlar
Ajentlerin geri alınması zor olan veya ana bilgisayar sistemine zarar verebilecek işlemleri çalıştırmasını önleyin.block-sudo
Olay: PreToolUse (Bash)Varsayılan: Herhangi bir
sudo komutunu reddeder.
sudo anahtar sözcüğünü içeren çağırışları engeller. Model eşleştirme ham dize yerine ayrıştırılmış komut jetonlarında yapılır; shell operatörü enjeksiyonu yoluyla atlatmayı önler.
Parametreler:
Örnek:
sudo systemctl status nginx izin verilir, ancak sudo rm /etc/hosts reddedilir.
Desenler ham komut dizesi değil, ayrıştırılmış jetonlara karşı eşleştirilir. Bu, shell operatörleri yoluyla atlatmayı önler (örneğin
sudo systemctl status x; rm -rf / kodu sudo systemctl status * ile eşleşmez).block-rm-rf
Olay: PreToolUse (Bash)Varsayılan:
rm -rf, rm -fr ve benzer yinelemeli silme formlarını reddeder.
Parametreler:
Örnek:
block-curl-pipe-sh
Olay: PreToolUse (Bash)Varsayılan:
curl <url> | bash, curl <url> | sh, wget <url> | bash ve benzer desenleri reddeder.
Parametresi yok.
block-failproofai-commands
Olay: PreToolUse (Bash)Varsayılan: failproofai’nin kendisini kaldıracak veya devre dışı bırakacak komutları reddeder (örneğin
npm uninstall failproofai, failproofai policies --uninstall).
Parametresi yok.
Altyapı komutları
Kodlama ajanlarının altyapı CLI’larını çalıştırmasını veya CI/CD ardışık düzenlerini tetiklemesini durdurun. Bu kategorideki tüm ilkeler isteğe bağlı (defaultEnabled: false) — kubectl, terraform vb. çağırması gereken ajanlar, ilkeyi etkinleştirmediğiniz sürece kesilmeyecektir. Etkinleştirildiğinde, eşleştirilen CLI’nın her çağırması allowPatterns içindeki bir giriş ile eşleşmediği sürece reddedilir.
Desen dilbilgisi block-sudo ile aynıdır: jetonlar ayrıştırılmış argv’ye karşı eşleştirilir, * bir jeton için joker karakterdir ve herhangi bir shell operatörü (&&, ||, |, ;) içeren veya gömülü shell metakarakterleri olan komutlar, enjeksiyon atlatmalarını önlemek için beyaz liste eşleştirmesinden önce reddedilir.
block-kubectl
Olay: PreToolUse (Bash)Varsayılan: Herhangi bir
kubectl çağırışını reddeder.
Parametreler:
Örnek:
kubectl get pods izin verilir ancak kubectl apply -f deploy.yaml reddedilir.
block-terraform
Olay: PreToolUse (Bash)Varsayılan: Herhangi bir
terraform veya tofu (OpenTofu) çağırışını reddeder.
Parametreler:
Örnek:
block-aws-cli
Olay: PreToolUse (Bash)Varsayılan: Herhangi bir
aws CLI çağırışını reddeder.
Parametreler:
Örnek:
block-gcloud
Olay: PreToolUse (Bash)Varsayılan: Herhangi bir
gcloud (Google Cloud) CLI çağırışını reddeder.
Parametreler:
Örnek:
block-az-cli
Olay: PreToolUse (Bash)Varsayılan: Herhangi bir
az (Azure) CLI çağırışını reddeder.
Parametreler:
Örnek:
block-helm
Olay: PreToolUse (Bash)Varsayılan: Herhangi bir
helm çağırışını reddeder.
Parametreler:
Örnek:
block-gh-pipeline
Olay: PreToolUse (Bash)Varsayılan: Durumu değiştiren veya ardışık düzenler tetikleyen aşağıdaki
gh CLI alt komutlarını reddeder:
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 pr view, gh pr list, gh run list, gh release view ve gh api repos/.../... gibi salt okunur gh alt komutları bu ilke tarafından eşleştirilmez — iş akışı denetimleri için rutinlik olarak gereklidir (failproofai’nin kendi require-ci-green-before-stop dahil).
Parametreler:
Örnek:
Sırlar (sanitizers)
Ajentlerin kimlik bilgilerini kontekst veya çıktılarında sızmasını durdurun. Sanitizer ilkeleri PostToolUse olaylarında devreye girer. Claude bir Bash komutu çalıştırdığında, bir dosya okuduğunda veya herhangi bir aracı çağırdığında, bu ilkeler çıktı Claude’a döndürülmeden önce incelenir. Gizli bir desen algılanırsa, ilke çıktının geri dönmesini engelleyen bir reddetme kararı verir.sanitize-jwt
Olay: PostToolUse (tüm araçlar)Varsayılan: JWT jetonlarını (
. ile ayrılmış üç base64url segmenti) gizler.
Parametresi yok.
sanitize-api-keys
Olay: PostToolUse (tüm araçlar)Varsayılan: Yaygın API anahtarı biçimlerini gizler: Anthropic (
sk-ant-), OpenAI (sk-), GitHub PAT’ları (ghp_), AWS erişim anahtarları (AKIA), Stripe anahtarları (sk_live_, sk_test_) ve Google API anahtarları (AIza).
Parametreler:
Örnek:
sanitize-connection-strings
Olay: PostToolUse (tüm araçlar)Varsayılan: Gömülü kimlik bilgileri içeren veritabanı bağlantı dizelerini gizler (örneğin
postgresql://user:password@host/db).
Parametresi yok.
sanitize-private-key-content
Olay: PostToolUse (tüm araçlar)Varsayılan: PEM bloklarını gizler (
-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY----- vb.).
Parametresi yok.
sanitize-bearer-tokens
Olay: PostToolUse (tüm araçlar)Varsayılan:
Authorization: Bearer <token> başlıklarını gizler; burada jeton 20 veya daha fazla karakterdir.
Parametresi yok.
Ortam
Hassas ortam yapılandırmasını ajanlar tarafından okunmasından veya açığa çıkmasından koruyun.block-env-files
Olay: PreToolUse (Bash, Read)Varsayılan:
cat .env, dosya yolu olarak .env ile Read araç çağrıları vb. aracılığıyla .env dosyalarını okumasını reddeder.
.envrc veya diğer ortam-komşu dosyaları engelleme — yalnızca tam olarak .env adındaki dosyaları engelle.
Parametresi yok.
protect-env-vars
Olay: PreToolUse (Bash)Varsayılan: Ortam değişkenlerini yazdıran komutları reddeder:
printenv, env, echo $VAR.
Parametresi yok.
Dosya erişimi
Ajentleri proje sınırları içinde ve hassas dosyalardan uzak tutun.block-read-outside-cwd
Olay: PreToolUse (Read, Bash)Varsayılan: Proje kökü dışındaki dosyaları okumasını reddeder. Sınır
CLAUDE_PROJECT_DIR (Claude Code tarafından oturum başına bir kez ayarlanır) ve bu değişken ayarlanmadığında oturumun geçerli çalışma dizinine geri döner. Canlı cwd yerine proje kökünü kullanmak, Claude cd yaptıktan sonra bile sınırın kararlı kalmasını sağlar.
Parametreler:
Örnek:
block-secrets-write
Olay: PreToolUse (Write, Edit)Varsayılan: Özel anahtarlar ve sertifikalar için yaygın olarak kullanılan dosyalara yazılışı reddeder:
id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Parametreler:
Örnek:
Git
Geri alınması zor olan kazara itişleri, zorla-itişleri ve dal hatalarını önleyin.block-push-master
Olay: PreToolUse (Bash)Varsayılan:
git push origin main ve git push origin master komutlarını reddeder.
Parametreler:
Örnek:
block-work-on-main
Olay: PreToolUse (Bash)Varsayılan: Çalışma ağacı
main veya master üzerindeyken git commit, git merge, git rebase ve git cherry-pick komutlarını reddeder. Dal oluşturma ve geçiş (git checkout, git checkout -b, git switch, git switch -c) etkilenmez.
Parametreler:
block-force-push
Olay: PreToolUse (Bash)Varsayılan:
git push --force ve git push -f komutlarını reddeder.
İlke spesifik parametresi yok. Alternatifleri önermek için çapraz kesme hint kullanın:
warn-git-amend
Olay: PreToolUse (Bash)Varsayılan: Claude’u
git commit --amend çalıştırırken dikkatli ilerlemeye bilgilendirir. Komut engellenmez.
Parametresi yok.
warn-git-stash-drop
Olay: PreToolUse (Bash)Varsayılan: Claude’u
git stash drop çalıştırmadan önce onaylamaya bilgilendirir. Komut engellenmez.
Parametresi yok.
warn-all-files-staged
Olay: PreToolUse (Bash)Varsayılan: Claude’u
git add -A veya git add . çalıştırdığında sahneye koydukları şeyleri gözden geçirmeye bilgilendirir. Komut engellenmez.
Parametresi yok.
Veritabanı
Yıkıcı SQL işlemlerini veritabanınıza yürütülmeden önce yakalayın.warn-destructive-sql
Olay: PreToolUse (Bash)Varsayılan: Claude’u
DROP TABLE, DROP DATABASE veya WHERE şartı olmayan DELETE içeren SQL çalıştırmadan önce onaylamaya bilgilendirir.
Parametresi yok.
warn-schema-alteration
Olay: PreToolUse (Bash)Varsayılan: Claude’u
ALTER TABLE ifadeleri çalıştırmadan önce onaylamaya bilgilendirir.
Parametresi yok.
Uyarılar
Ajentlere potansiyel olarak riskli ancak yıkıcı olmayan işlemlerden önce ekstra bağlam sağlayın.warn-large-file-write
Olay: PreToolUse (Write)Varsayılan: Claude’u 1024 KB’den büyük dosyaları yazmadan önce onaylamaya bilgilendirir. Parametreler:
Örnek:
Hook işleyicisi yükler üzerinde 1 MB stdin sınırı uygular. Bu ilkeyi küçük içerikle test etmek için
thresholdKb değerini 1024’in altında bir değere ayarlayın.warn-package-publish
Olay: PreToolUse (Bash)Varsayılan: Claude’u
npm publish çalıştırmadan önce onaylamaya bilgilendirir.
Parametresi yok.
warn-background-process
Olay: PreToolUse (Bash)Varsayılan: Claude’u
nohup, &, disown veya screen aracılığıyla arka plan işlemleri başlatırken dikkatli olmaya bilgilendirir.
Parametresi yok.
warn-global-package-install
Olay: PreToolUse (Bash)Varsayılan: Claude’u
npm install -g, yarn global add veya sanal ortam olmadan pip install çalıştırmadan önce onaylamaya bilgilendirir.
Parametresi yok.
Paket yöneticileri
Ajanın hangi paket yöneticilerini kullanmasına izin verildiğini zorunlu kılın.prefer-package-manager
Olay: PreToolUse (Bash)Varsayılan: Devre dışı. Etkinleştirildiğinde,
allowed listesinde olmayan paket yöneticisi komutlarını engeller ve Claude’u komut yöneticisi kullanarak komutu yazmaya söyler.
Algılar: pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo.
Yerleşik engel listesi şunları kapsar: pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo. Bu listede olmayan yöneticileri eklemek için
blocked kullanın.
Örnek yapılandırma:
pip install flask ve pdm install flask her ikisi de reddedilir; Claude’a bunun yerine uv veya bun kullanması söylenir. uv beyaz listede olduğu ve önce kontrol edildiği için uv pip install flask gibi komutlar izin verilir.
AI davranışı
Ajanların sıkışıp kalması veya beklenmeyen davranması durumlarını algılayın.warn-repeated-tool-calls
Olay: PreToolUse (tüm araçlar)Varsayılan: Aynı araç aynı parametrelerle 3+ kez çağrılırsa Claude’u yeniden düşünmeye bilgilendirir — ajanın bir döngüde sıkışmasının yaygın bir işaretidir. Parametresi yok.
İş akışı
Disiplinli bir oturum sonu iş akışı uygulayın. Bu ilkeler Stop olayında devreye girer ve aynı ajan, her koşul karşılanana kadar durmaktan yoksun bırakılır. Doğal bir bağımlılık zinciri izlerler: commit → push → PR → CI. Bir ilke reddederse, zincirdeki sonraki ilkeler atlanır (reddetme kısa devre). Tüm iş akışı ilkeleri başarısız-açık dur: gerekli araç kullanılamıyorsa (örneğingh kurulu değil, git uzaktan yoktur), ilke bir bilgi iletisi ile izin verir; kontrol neden atlanmadığını açıklar.
CLI başına Stop semantiği
Stop uygulaması yedi desteklenen CLI arasında biraz farklı görünür; çünkü her biri farklı bir “ajan bitişi” hook sözleşmesi ortaya koyar. Sonuç aynıdır — ajan bir iş akışı kapısı başarısız iken durmaktan kurtulmaz — ancak mekanikler farklıdır. Aşağıdaki tablo özetler; birrequire-*-before-stop ilkesini etkinleştirmeden önce anlamanın değerine sahip Pi’de yalnızca kullanıcı tarafından görülebilir bir garip durum vardır.
Pi sınırlaması. Pi’nin
AgentEndEvent (Claude’un Stop hook’unun yukarı akış eşdeğeri) hiçbir Result türü yoktur — Pi’nin ajan döngüsü zaten çıkmış olduğu süredir. Pi, Claude / Copilot / Cursor / OpenCode’un yapabildiği şekilde aynı döngüyü yeniden denemeye zorlanamazı. failproofai kapıyı Pi’nin before_agent_start olayına kaydırır (sonraki kullanıcı iletişim sonrasında devreye girer) — iş akışı kontrolü hala uygulanır, yalnızca mevcut sıra yerine sonraki sıra üzerinde.Bunu pratikte ne anlama gelir:- Pi durundan sonra, reddetme nedeni oturum kimliği tarafından bellek içinde anahtarlanmış şekilde yakalanır. Aynı Pi işlemi içinde gönderdiğiniz çok sonraki istişare bunu boşaltır: LLM sistem komutunun üstünde
MANDATORY ACTION REQUIREDyönergesini görür, commits (veya pushes / açıklık PR / CI’yi bekler) ve ancak o zaman istediğiniz şeye devam eder. Yakalanan reddetme nedeni tek atış — bir kez boşaltıldıktan sonra kapı açıktır. - Kapı Pi’nin işlem ömrü tarafından sınırlandırılır. Turlar arasında Pi’yi
Ctrl+Cyaparsanız veya çıkarsanız, bellek içi giriş işlemle birlikte bırakılır ve kapı kaçırılır. Claude, Copilot, Cursor ve OpenCode’un aynı sınırı vardır (ajanı öldürün ve kapı kaçırılır) — Pi sadece bunu daha görünür hale getirir; çünkü ajan kapı devreye girmeden önce görünen şekilde çıkar. - Beklemede olan bir reddetme herhangi bir nedenle
session_shutdownüzerine de temizlenir (new/resume/fork/quit), bu nedenle önceki oturumdan eski bir kapı, aynı Pi işlemi içinde başlatılan yeni bir oturuma sızamaz.
Stop ilkelerinizi desteklenen diğer beş CLI’den birinin altında çalıştırın. Pi yukarı akışını gelecek bir Result türü ile izliyoruz; AgentEndEvent üzerinde bu boşluğu kapatmamıza izin verecektir.require-commit-before-stop
Olay: StopVarsayılan: Commit edilmemiş değişiklikler (değiştirilmiş, sahnelenmiş veya izlenmeyen dosyalar) olduğunda durmasını reddeder. Çalışma dizini temiz olduğunda bilgi iletisi döndürür. Parametresi yok.
require-push-before-stop
Olay: StopVarsayılan: Push edilmemiş commits olduğunda veya mevcut dal uzaktan izleme dalı olmadığında durmasını reddeder. Gerekirse izleme dalı oluşturmak için
git push -u önerir. Yapılandırılmış uzaktan yoksa başarısız-açık.
Parametreler:
Örnek:
require-pr-before-stop
Olay: StopVarsayılan: Geçerli dal için çekme isteği yoksa veya mevcut PR birleştirilmeden kapatılmışsa durmasını reddeder. Claude’u
gh pr create ile bir PR oluşturmaya bilgilendirir. PR birleştirildiğinde, ilke izin verir (çalışma gönderildi) ve ileti daldan geçmeye ipuç verir (git checkout main && git pull).
Parametresi yok.
Bu ilke GitHub CLI (
gh) kurulu ve doğrulanmış olmasını gerektirir.
Çekme isteklerine okuma erişimi için repo kapsamına sahip kişisel erişim belirteci ile gh auth login çalıştırın. gh kurulu değilse veya doğrulanmamışsa, ilke başarısız-açık ve nedeni Claude’a raporlar.require-no-conflicts-before-stop
Olay: StopVarsayılan: Geçerli dal temel dala temiz şekilde birleştirilemezse durmasını reddeder. İlke önce dal için GitHub’da
OPEN bir PR’ın olduğunu onaylar — biri olmadan, birleştirme hedefi yoktur; bu nedenle tüm ilke kısa devre ve izin verir. OPEN PR onaylandıktan sonra iki bağımsız sonda çalışır:
- Yerel —
git merge-tree --write-tree --name-only origin/<baseBranch> HEAD. Çatışmada, reddetme iletişi çatışmalı dosyaları adlandırır; böylece Claude tam olarak ne çözeceğini bilir. - GitHub — zaten ön kontrol içinde alınan
gh pr view --json mergeable,statesonucunu yeniden kullanır. Eski yerelorigin/<baseBranch>kaçıracağı çatışmaları yakalar (örneğin, birisi son getirmeden bu yanamainüzerinde çatışan bir PR indirdi).CONFLICTINGsonuç reddeder.UNKNOWNsonuç da reddeder ve Claude’u tekrar kontrol etmeden ~10 saniye beklemesini bilgilendirir — durmaya tekrar denemeden önce bu yanlış negatifleri önler.
gh kurulu değil, dal için PR yoktur, PR’ın durumu OPEN değildir (örneğin MERGED, CLOSED) veya gh pr view ayrıştırılamayan çıktı döndürür. Ayrıca origin/<baseBranch> yerel olarak eksik olduğunda veya hiçbir komit tabanın ilerisinde olmadığında da başarısız-açık — bu Katman 1 açılışları yine de izin vermeden önce önbelleğe alınan PR birleştirilebilirliğini danışır.
Parametreler:
Bu ilke için GitHub CLI (
gh) gereklidir. İlke bir OPEN PR’ın var olduğunu doğrulamak için gh pr view kullanır — gh olmadan, ilke kısa devre ve izin verir. Çekme isteklerine okuma erişimi için repo kapsamına sahip kişisel erişim belirteci ile gh auth login çalıştırın.require-ci-green-before-stop
Olay: StopVarsayılan: Geçerli daldaki CI kontrolleri başarısız veya hala çalışıyor olduğunda durmasını reddeder. GitHub Actions iş akışı çalıştırmalarını ve üçüncü taraf bot kontrollerini kontrol eder (örneğin CodeRabbit, SonarCloud, Codecov).
skipped, cancelled ve neutral sonuçlarını başarısız olmayan olarak işler (sonuncusu örneğin dış katkıda bulunan PR’larında Socket Security uyarılarını kapsar; uygulama kasıtlı olarak başarı/başarısız yerine neutral raporlar). Tüm kontroller geçtiğinde bilgi iletişi döndürür.
Parametresi yok.
Bu ilke için GitHub CLI (
gh) kurulu ve doğrulanmış olması gerekir.
Actions iş akışı çalıştırmalarına ve Kontroller API’sine okuma erişimi için repo kapsamına sahip kişisel erişim belirteci ile gh auth login çalıştırın. gh kurulu değilse veya doğrulanmamışsa, ilke başarısız-açık ve nedeni Claude’a raporlar.Bireysel ilkeleri devre dışı bırakma
YapılandırmanızdaenabledPolicies öğesinden belirli bir ilkeyi kaldırın veya panonun Politikalar sekmesinde kapatın.
enabledPolicies içinde listelenmemiş ilkeler, policyParams girdileri var olsa bile çalışmaz.
