Skip to main content
failproofai, ortak ajent başarısızlık modlarını yakalayan 39 yerleşik ilke ile birlikte gelir. Her ilke belirli bir hook olay türü ve araç adında devreye girer. On dokuz ilke, kod yazmanıza gerek kalmadan davranışlarını ayarlamanıza izin veren parametreleri kabul eder. Beş iş akışı ilkesi, Claude’un durmadan önce commit → push → PR → CI ardışık düzenini uygular.

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:
Bir adda / 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.

Her ilke policyParams içinde isteğe bağlı bir hint alanını destekler. İpucu, Claude’un gördüğü deny veya instruct iletisine eklenir; ilke kodunu değiştirmeden işlem yapılabilir rehberlik sağlar. Yerleşik, özel ve kural ilkeleriyle çalışır. Ayrıntılar için Yapılandırma → hint bölümüne bakın.

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:
Bu yapılandırma ile 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:
Bu yapılandırma ile 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 disable
  • gh run rerun, gh run cancel
  • gh pr merge
  • gh release create, gh release delete
  • gh cache delete
  • gh 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:
Tüm dallara itişe izin vermek için (bu ilkeyi enabledPolicies öğesinden kaldırmadan etkili bir şekilde devre dışı bırakmak), protectedBranches: [] ayarını yapın.

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:
Bu yapılandırma ile 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ğin gh 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; bir require-*-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 REQUIRED yö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+C yaparsanı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.
Claude tarzı aynı döngü yeniden denemesine ihtiyacınız varsa, 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: Stop
Varsayı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: Stop
Varsayı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: Stop
Varsayı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: Stop
Varsayı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:
  1. Yerelgit 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.
  2. GitHub — zaten ön kontrol içinde alınan gh pr view --json mergeable,state sonucunu yeniden kullanır. Eski yerel origin/<baseBranch> kaçıracağı çatışmaları yakalar (örneğin, birisi son getirmeden bu yana main üzerinde çatışan bir PR indirdi). CONFLICTING sonuç reddeder. UNKNOWN sonuç da reddeder ve Claude’u tekrar kontrol etmeden ~10 saniye beklemesini bilgilendirir — durmaya tekrar denemeden önce bu yanlış negatifleri önler.
Şu durumlarda tamamen atlanır (izin verir): 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: Stop
Varsayı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ızda enabledPolicies öğ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.