Ana içeriğe atla

title: Yerleşik İlkeler description: “Yaygın aracı arıza modlarını yakalayan 39 yerleşik ilke” icon: shield

failproofai, yaygın aracı arıza modlarını yakalayan 39 yerleşik ilke ile birlikte gelir. Her ilke belirli bir kanca olayı türü ve araç adında çalışır. On dokuz ilke, kod yazmadan davranışını ayarlamanıza olanak tanıyan parametreleri kabul eder. Beş iş akışı ilkesi, Claude’un durması öncesinde bir commit → push → PR → CI hattını uygular.

Genel Bakış

İlkeler kategorilere ayrılmıştır:
KategoriİlkelerKanca türü
Tehlikeli komutlarblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
Altyapı komutlarıblock-kubectl, block-terraform, block-aws-cli, block-gcloud, block-az-cli, block-helm, block-gh-pipelinePreToolUse
Sırlar (sanitizers)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
Ortamblock-env-files, protect-env-varsPreToolUse
Dosya erişimiblock-read-outside-cwd, block-secrets-writePreToolUse
Gitblock-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-stagedPreToolUse
Veritabanıwarn-destructive-sql, warn-schema-alterationPreToolUse
Uyarılarwarn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-installPreToolUse
Paket yöneticileriprefer-package-managerPreToolUse
İş akışırequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-no-conflicts-before-stop, require-ci-green-before-stopStop
  • block- — aracının devam etmesini engeller.
  • warn- — aracıya kendi kendini düzeltebilmesi için ek bağlam sağlar.
  • sanitize- — aracı görmesinden önce aracın çıktısından hassas verileri temizler.

Ad Alanları

Her ilke bir <namespace>/<name> yuvasında yer alır. 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ı engeller. Yapılandırmanızda yerleşik bir ilkeye kısa adı veya tam adı ile başvurabilirsiniz; her iki form aynı ilkeye çözümlenir:
{
  "enabledPolicies": [
    "sanitize-jwt",
    "failproofai/block-rm-rf"
  ]
}
Bir adda / yoksa, failproofai onu varsayılan failproofai ad alanına ait olarak davranır. Zaten / içeren adlar (örn. myorg/foo, custom/my-hook) olduğu gibi kalır.
  • require- — koşullar karşılanana kadar Stop olayını engeller.

Her ilke, policyParams içinde isteğe bağlı bir hint alanını destekler. İpucu, Claude’un gördüğü deny veya instruct mesajına eklenerek, 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

Aracıların geri almması zor olan veya ana sisteme zarar verebilecek işlemleri çalıştırmasını engeller.

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ştirmesi ham dize yerine ayrıştırılmış komut belirteçleri üzerinde yapılır; bu, shell operatörü enjeksiyonu yoluyla bypass’ı engeller. Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]İzin verilen tam komut önekleri. Her giriş ayrıştırılmış argv belirteçlerine karşı eşleştirilir.
Örnek:
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
Bu yapılandırmayla, sudo systemctl status nginx izin verilir, ancak sudo rm /etc/hosts reddedilir.
Desenler ham komut dizesi değil, ayrıştırılmış belirteçlere karşı eşleştirilir. Bu, eklenen shell operatörleri yoluyla bypass’ı engeller (örn. sudo systemctl status x; rm -rf / sudo systemctl status * ile eşleşmez).

block-rm-rf

Olay: PreToolUse (Bash)
Varsayılan: rm -rf, rm -fr ve benzer özyinelemeli silme formlarını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
allowPathsstring[][]Özyinelemeli olarak silinmesi güvenli olan yollar (örn. /tmp).
Örnek:
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

Olay: PreToolUse (Bash)
Varsayılan: curl <url> | bash, curl <url> | sh, wget <url> | bash ve benzer desenleri reddeder.
Parametre yok.

block-failproofai-commands

Olay: PreToolUse (Bash)
Varsayılan: failproofai’ın kaldırılmasını veya devre dışı bırakılmasını sağlayacak komutları reddeder (örn. npm uninstall failproofai, failproofai policies --uninstall).
Parametre yok.

Altyapı komutları

Kodlama aracılarının altyapı CLI’lerini çalıştırmasını veya CI/CD hattını tetiklemesini engeller. Bu kategorideki tüm ilkeler opt-in (defaultEnabled: false) — kubectl, terraform vb. çağırması gereken aracılar ilkeyi etkinleştirmediğiniz sürece kesintiye uğramaz. Etkinleştirildiğinde, eşleşen CLI’nin her çağrısı komutu allowPatterns içindeki bir giriş ile eşleşmedikçe reddedilir. Desen dilbilgisi, block-sudo ile aynıdır: belirteçler ayrıştırılmış argv’ye karşı eşleştirilir, * bir belirteç için joker karttır ve herhangi bir çağrı içeren komut veya enjeksiyon bypass’ını engellemeyi tercih etmek için gömülü shell metakarakterlerine sahip belirteçler, izin listesi eşleştirmesi öncesinde reddedilir.

block-kubectl

Olay: PreToolUse (Bash)
Varsayılan: Herhangi bir kubectl çağrısını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]İzin verilen kubectl komut önekleri.
Örnek:
{
  "policyParams": {
    "block-kubectl": {
      "allowPatterns": ["kubectl get *", "kubectl describe *", "kubectl logs *"]
    }
  }
}
Bu yapılandırmayla, 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ısını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]İzin verilen terraform/tofu komut önekleri.
Örnek:
{
  "policyParams": {
    "block-terraform": {
      "allowPatterns": ["terraform plan", "terraform validate", "terraform show *"]
    }
  }
}

block-aws-cli

Olay: PreToolUse (Bash)
Varsayılan: Herhangi bir aws CLI çağrısını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]İzin verilen aws CLI komut önekleri.
Örnek:
{
  "policyParams": {
    "block-aws-cli": {
      "allowPatterns": ["aws s3 ls *", "aws sts get-caller-identity"]
    }
  }
}

block-gcloud

Olay: PreToolUse (Bash)
Varsayılan: Herhangi bir gcloud (Google Cloud) CLI çağrısını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]İzin verilen gcloud komut önekleri.
Örnek:
{
  "policyParams": {
    "block-gcloud": {
      "allowPatterns": ["gcloud auth list", "gcloud config list"]
    }
  }
}

block-az-cli

Olay: PreToolUse (Bash)
Varsayılan: Herhangi bir az (Azure) CLI çağrısını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]İzin verilen az CLI komut önekleri.
Örnek:
{
  "policyParams": {
    "block-az-cli": {
      "allowPatterns": ["az account show", "az group list"]
    }
  }
}

block-helm

Olay: PreToolUse (Bash)
Varsayılan: Herhangi bir helm çağrısını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]İzin verilen helm komut önekleri.
Örnek:
{
  "policyParams": {
    "block-helm": {
      "allowPatterns": ["helm list", "helm status *"]
    }
  }
}

block-gh-pipeline

Olay: PreToolUse (Bash)
Varsayılan: Durumu mutasyona uğratan veya hattı 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 ilkeyle eşleşmez — iş akışı kontrolleri (failproofai’ın kendi require-ci-green-before-stop dahil) için rutin olarak gereklidir. Parametreler:
ParamTürVarsayılanAçıklama
allowPatternsstring[][]Aksi takdirde reddedilecek belirli betikleştirilmiş çağrılara izin vermek için.
Örnek:
{
  "policyParams": {
    "block-gh-pipeline": {
      "allowPatterns": ["gh run rerun *"]
    }
  }
}

Sırlar (sanitizers)

Aracıların kimlik bilgilerini bağlamlarına veya çıktılarına sızmasını engeller. Sanitizer ilkeleri PostToolUse olaylarında çalışır. 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 inceler. Bir gizli desen algılanırsa, ilke çıktının geri aktarılmasını engeller.

sanitize-jwt

Olay: PostToolUse (tüm araçlar)
Varsayılan: JWT belirteçlerini (. ile ayrılmış üç base64url segmenti) gizler.
Parametre 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’ler (ghp_), AWS erişim anahtarları (AKIA), Stripe anahtarları (sk_live_, sk_test_) ve Google API anahtarları (AIza).
Parametreler:
ParamTürVarsayılanAçıklama
additionalPatterns{ regex: string; label: string }[][]Gizli olarak kabul edilecek ek regex desenleri.
Örnek:
{
  "policyParams": {
    "sanitize-api-keys": {
      "additionalPatterns": [
        { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo internal API key" },
        { "regex": "pat_[0-9a-f]{40}", "label": "Internal PAT" }
      ]
    }
  }
}

sanitize-connection-strings

Olay: PostToolUse (tüm araçlar)
Varsayılan: Gömülü kimlik bilgileri içeren veritabanı bağlantı dizelerini gizler (örn. postgresql://user:password@host/db).
Parametre yok.

sanitize-private-key-content

Olay: PostToolUse (tüm araçlar)
Varsayılan: PEM bloklarını (-----BEGIN PRIVATE KEY-----, -----BEGIN RSA PRIVATE KEY----- vb.) gizler.
Parametre yok.

sanitize-bearer-tokens

Olay: PostToolUse (tüm araçlar)
Varsayılan: Authorization: Bearer <token> başlıklarını gizler; belirteç 20 veya daha fazla karakterdir.
Parametre yok.

Ortam

Aracılar tarafından okunan veya açığa çıkarılan hassas ortam yapılandırmasını korur.

block-env-files

Olay: PreToolUse (Bash, Read)
Varsayılan: cat .env, Read araç çağrıları (dosya yolu olarak .env ile) vb. aracılığıyla .env dosyalarını okumayı reddeder.
.envrc veya diğer ortam-ilgili dosyaları engellemiyor — yalnızca tam olarak .env adlandırılan dosyaları. Parametre yok.

protect-env-vars

Olay: PreToolUse (Bash)
Varsayılan: Ortam değişkenlerini yazdıran komutları reddeder: printenv, env, echo $VAR.
Parametre yok.

Dosya erişimi

Aracıları proje sınırları içinde çalışmaya ve hassas dosyalardan uzak tutmaya devam eder.

block-read-outside-cwd

Olay: PreToolUse (Read, Bash)
Varsayılan: Proje kökünün dışında dosya okumayı reddeder. Sınır CLAUDE_PROJECT_DIR (Claude Code tarafından oturum başına bir kez belirlenir) olup, söz konusu değişken ayarlanmadığında oturum’ın geçerli çalışma dizinine geri dönüş yapılır. Canlı cwd yerine proje kökü kullanımı, Claude bir alt dizine cd yaptığında bile sınırın kararlı kalması demektir.
Parametreler:
ParamTürVarsayılanAçıklama
allowPathsstring[][]Proje kökünün dışında olsa bile izin verilen kesinlik yol ön ekleri.
Örnek:
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

Olay: PreToolUse (Write, Edit)
Varsayılan: Özel anahtarlar ve sertifikalar için yaygın olarak kullanılan dosyalara yazılmasını engeller: id_rsa, id_ed25519, *.key, *.pem, *.p12, *.pfx.
Parametreler:
ParamTürVarsayılanAçıklama
additionalPatternsstring[][]Engelleme yapılacak ek dosya adı desenleri (glob-stili).
Örnek:
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

Kazara itme, zorlamaya itme ve geri almesi zor olan dal hatalarını engeller.

block-push-master

Olay: PreToolUse (Bash)
Varsayılan: git push origin main ve git push origin master komutlarını reddeder.
Parametreler:
ParamTürVarsayılanAçıklama
protectedBranchesstring[]["main", "master"]Doğrudan itilemeyen dal adları.
Örnek:
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
Tüm dallara itmeye izin vermek için (bu ilkeyi enabledPolicies öğesinden kaldırmadan devre dışı bırakmak için), protectedBranches: [] ayarlayı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) etkilenmemiş.
Parametreler:
ParamTürVarsayılanAçıklama
protectedBranchesstring[]["main", "master"]commit/merge/rebase/cherry-pick’inin reddedildiği dal adları.

block-force-push

Olay: PreToolUse (Bash)
Varsayılan: git push --force ve git push -f komutlarını reddeder.
İlkeye özgü parametre yok. Alternatif önerileri sunmak için çapraz kesit hint özelliğini kullanın:
{
  "policyParams": {
    "block-force-push": {
      "hint": "Geçerli HEAD'inizden yeni bir dal oluşturun (örn. `git checkout -b <new-branch>`) ve bunun yerine bunu itin."
    }
  }
}

warn-git-amend

Olay: PreToolUse (Bash)
Varsayılan: git commit --amend çalıştırırken Claude’u dikkatli ilerlemeye talimat verir. Komutu engellemiyor.
Parametre yok.

warn-git-stash-drop

Olay: PreToolUse (Bash)
Varsayılan: git stash drop çalıştırmadan önce Claude’u onay vermeye talimat verir. Komutu engellemiyor.
Parametre yok.

warn-all-files-staged

Olay: PreToolUse (Bash)
Varsayılan: git add -A veya git add . çalıştırırken Claude’u sahnelediklerini gözden geçirmeye talimat verir. Komutu engellemiyor.
Parametre yok.

Veritabanı

Yıkıcı SQL işlemlerini veritabanınıza karşı yürütülmesinden önce yakalar.

warn-destructive-sql

Olay: PreToolUse (Bash)
Varsayılan: DROP TABLE, DROP DATABASE veya WHERE cümlesi olmayan DELETE içeren SQL çalıştırmadan önce Claude’u onay vermeye talimat verir.
Parametre yok.

warn-schema-alteration

Olay: PreToolUse (Bash)
Varsayılan: ALTER TABLE deyimleri çalıştırmadan önce Claude’u onay vermeye talimat verir.
Parametre yok.

Uyarılar

Aracılara potansiyel olarak riskli ancak yıkıcı olmayan işlemlerden önce ek bağlam verir.

warn-large-file-write

Olay: PreToolUse (Write)
Varsayılan: 1024 KB’den daha büyük dosyalar yazılmadan önce Claude’u onay vermeye talimat verir.
Parametreler:
ParamTürVarsayılanAçıklama
thresholdKbnumber1024Uyarı verilen dosya boyutu eşiği kilobayt cinsinden.
Örnek:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
Kanca işleyicisi yüklerde 1 MB stdin sınırı uygular. Bu ilkeyi küçük içerikle test etmek için thresholdKb öğesini 1024’ün çok altında bir değere ayarlayın.

warn-package-publish

Olay: PreToolUse (Bash)
Varsayılan: npm publish çalıştırmadan önce Claude’u onay vermeye talimat verir.
Parametre yok.

warn-background-process

Olay: PreToolUse (Bash)
Varsayılan: nohup, &, disown veya screen aracılığıyla arka plan işlemleri başlatırken Claude’u dikkatli olmaya talimat verir.
Parametre yok.

warn-global-package-install

Olay: PreToolUse (Bash)
Varsayılan: Sanal ortam olmadan npm install -g, yarn global add veya pip install çalıştırmadan önce Claude’u onay vermeye talimat verir.
Parametre yok.

Paket yöneticileri

Aracının kullanmasına izin verilen paket yöneticisini zorunlu kılar.

prefer-package-manager

Olay: PreToolUse (Bash)
Varsayılan: Devre dışı. Etkinleştirildiğinde, allowed listesinde olmayan herhangi bir paket yöneticisi komutunu engeller ve Claude’u komutu izin verilen bir yöneticisi kullanarak yeniden yazması için söyler.
Algılar: pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo.
ParametreTürVarsayılanAçıklama
allowedstring[][]İzin verilen paket yöneticisi adları. Bu listeye girmeyen algılanan yöneticiler engellenir. Boş olduğunda, ilke boştadır.
blockedstring[][]Yerleşik listeyi aşan engelleme yapılacak ek yönetici adları (örn. ['pdm', 'pipx']).
Yerleşik blok listesi şunları kapsar: pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo. Bu listeye girmeyen yöneticileri eklemek için blocked özelliğini kullanın. Örnek yapılandırma:
{
  "enabledPolicies": ["prefer-package-manager"],
  "policyParams": {
    "prefer-package-manager": {
      "allowed": ["uv", "bun"],
      "blocked": ["pdm", "pipx"]
    }
  }
}
Bu yapılandırmayla, pip install flask ve pdm install flask ikisi de reddedilir ve Claude’a bunun yerine uv veya bun kullanması söylenir. uv install flask gibi komutlar izin verilir çünkü uv izin listesindedir ve ilk olarak kontrol edilir.

AI davranışı

Aracıların takılı kalması veya beklenmedik şekilde davranması durumunda algılar.

warn-repeated-tool-calls

Olay: PreToolUse (tüm araçlar)
Varsayılan: Aynı araç 3 veya daha fazla kez özdeş parametrelerle çağrıldığında Claude’u yeniden düşünmeye talimat verir — bu sık sık aracının döngüde takılı kaldığının bir işaretidir.
Parametre yok.

İş akışı

Disiplinli bir oturum sonu iş akışını zorunlu kılar. Bu ilkeler Stop olayında çalışır ve aracının her koşul karşılanana kadar durmasını engeller. Doğal bir bağımlılık zincirini takip ederler: commit → push → PR → CI. Bir ilke reddederse, zincirdeki sonraki ilkeler atlanır (deny kısa devre yapar). Tüm iş akışı ilkeleri fail-open özelliğine sahiptir: gerekli araç kullanılamıyorsa (örn. gh yüklü değil, git uzak yok), ilke neden kontrol atlandığını açıklayan bilgilendirici bir mesajla izin verir.

CLI başına Stop semantiği

Stop uygulaması, yedi desteklenen CLI arasında biraz farklı görünür çünkü her biri farklı bir aracı bitti kanca sözleşmesi sunar. Sonuç aynıdır — aracı bir iş akışı kapısı başarısız olurken durma yolundan çekilemez — ama mekanikler farklıdır. Aşağıdaki tablo özeti verir; yalnızca Pi, bir require-*-before-stop ilkesini etkinleştirmeden önce anlaşılmaya değer kullanıcı tarafından görülen bir anlama sahiptir.
CLIKapı ne zaman çalışırNe görürsünüz
Claude CodeAynı aracı döngüsü, hemenClaude çalışmaya devam eder — sorunu düzeltir, sonra yeniden bitirmeyi dener. Sizin için görünen kesinti yok.
CodexAynı aracı döngüsü, hemenClaude ile aynı.
GitHub Copilot CLIAynı aracı döngüsü, hemenClaude ile aynı (Copilot’un {decision:"block", reason} yeniden deneme kanalını kullanır — Copilot CLI 1.0.41’e karşı ampirik olarak doğrulanmıştır).
Cursor AgentAynı aracı döngüsü, hemenClaude ile aynı (Cursor’ın {followup_message} kanalını kullanır — loop_limit kadar sınırlı, varsayılan 5 yeniden deneme).
Gemini CLIAynı aracı döngüsü, hemenClaude ile aynı (Gemini’nin AfterAgent üzerinde {decision:"block", reason} kanalını kullanır).
OpenCodeAynı aracı döngüsü, hemenClaude ile aynı (OpenCode’un client.session.prompt(...) SDK çağrısını hookSpecificOutput.additionalContext aracılığıyla yönlendirilmiş şekilde kullanır).
Pi (pi-coding-agent)Sonraki kullanıcı sırasıPi görünür şekilde durur kapı çalışırken — aracı döngüsü çıkar ve istemle dönersiniz. Kapı daha sonra bir sonraki istem gönderdiğinizde çalışır: failproofai bir MANDATORY ACTION REQUIRED yönergesi bu dönüşün sistem istemine hazırlar, LLM’ye iş akışı adımını (commit, push, vb.) istediğiniz şeyden önce tamamlamayı talimat verir.
Pi sınırlaması. Pi’nin AgentEndEvent (Claude’un Stop kancasının eşdeğeri), bir Sonuç türü yok — Pi’nin aracı döngüsü çıktığında bu çalışır. Pi, Claude / Copilot / Cursor / Gemini / OpenCode’un yapabildiği şekilde aynı döngüyü yeniden denemek için zorlanamaz. failproofai kapıyı Pi’nin before_agent_start olayına kaydırır (sonraki kullanıcı istemi sonra çalışır) böylece iş akışı kontrolü yine uygulanır, sadece geçerli değil sonraki dönüş üzerinde.Pratik olarak bunun anlamı:
  • Pi durduğunda, ret nedeni Pi oturum kimliğine göre bellek içinde yakalanır. Aynı Pi sürecinde gönderdiğiniz çok sonraki istem bunu boşaltır: LLM sistem isteminin üstünde MANDATORY ACTION REQUIRED yönergesi görür, taahhüt eder (veya iter / PR açar / CI’nin bitmesini bekler) ve sonra istediğiniz şeyler ile devam eder. Yakalanan ret nedeni tek çekişli — boşaltıldıktan sonra kapı temizlenir.
  • Kapı Pi’nin süreç yaşam döngüsüne bağlıdır. Pi’yi Ctrl+C yaparsanız veya sırasında çıkarsanız, bellek içi giriş süreçle birlikte bırakılır ve kapı kaçırılır. Claude, Copilot, Cursor, Gemini ve OpenCode’un aynı bağlı durumu vardır (aracıyı öldür ve kapı kaçırıldı) — Pi sadece onu daha görünür kılar çünkü aracı kapı çalışmadan önce görünür şekilde çıkar.
  • Bekleyen bir ret de herhangi bir nedenden session_shutdown üzerinde temizlenir (new / resume / fork / quit), bu nedenle aynı Pi sürecinde başlatılan yeni bir oturuma adli bir oturumdan kalmış bir kapı sızmaması.
Claude-stili aynı döngü yeniden denemesine gerek duyarsanız, Stop ilkelerinizi diğer altı desteklenen CLI’sinin herhangi biri altında çalıştırın. Pi upstream’ini gelecekteki bir Sonuç türü için AgentEndEvent izleyen bir şekilde takip ediyoruz; bu boşluğu kapatmamıza izin verirdi.

require-commit-before-stop

Olay: Stop
Varsayılan: İşlenmemiş değişiklikler (değiştirilmiş, hazırlanmış veya izlenmeyen dosyalar) olduğunda durmasını reddeder. Çalışma dizini temiz olduğunda bilgilendirici bir mesaj döndürür.
Parametre yok.

require-push-before-stop

Olay: Stop
Varsayılan: İtilmemiş commits olduğunda veya geçerli dal hiçbir uzak izleme dalına sahip olmadığında durmasını reddeder. Gerektiğinde bir izleme dalı oluşturmak için git push -u önerir. Hiçbir uzak yapılandırılmadığında açık olarak başarısız olur.
Parametreler:
ParamTürVarsayılanAçıklama
remotestring"origin"İtilecek uzak ad.
Örnek:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

Olay: Stop
Varsayılan: Geçerli dal için hiçbir pull isteği yok olduğunda veya varolan PR birleştirilmeden kapatıldığında durmasını reddeder. Claude’u gh pr create ile bir PR oluşturması talimat verir. PR birleştirildiğinde, ilke izin verir (çalışma sevk edilmiştir) ve mesaj dal (git checkout main && git pull) kapatması için ipucu verir.
Parametre yok.
Bu ilke GitHub CLI (gh) yüklü ve doğrulanmış olmasını gerektirir. Pull isteklerine okuma erişimi için repo kapsamına sahip bir kişisel erişim belirteci ile gh auth login çalıştırın. gh yüklü değilse veya doğrulanmazsa, ilke açık olarak başarısız olur ve nedeni Claude’a raporlar.

require-no-conflicts-before-stop

Olay: Stop
Varsayılan: Geçerli dal temel dala temiz şekilde birleşemediğinde durmasını reddeder. İlke ilk olarak dal için GitHub’da bir OPEN PR olduğunu onaylar — bir tane olmadan, birleştirme hedefi olmadığından tüm ilke kısa devre ile izin verir. OPEN PR doğrulandıktan sonra, iki bağımsız sonda çalışır:
  1. Yerelgit merge-tree --write-tree --name-only origin/<baseBranch> HEAD. Çatışmada, ret mesajı çatışan dosyaları adlandırır; bu nedenle Claude tam olarak hangi dosyaları çözeceğini bilir.
  2. GitHubgh pr view --json mergeable,state sonucunu zaten önceden belirlenmiş şekilde yeniden kullanır. Eski bir yerel origin/<baseBranch> kaçıracağı çatışmaları yakalar (örn. birisi son alma işlemi main üzerinde çatışan bir PR açtığından beri). Bir CONFLICTING sonuç reddeder. Bir UNKNOWN sonuç da reddeder ve Claude’u ~10 saniye bekletmeye ve durma denemesinden önce yeniden kontrol etmeye talimat verir — bu yanlış negatifleri engeller; GitHub yeniden hesaplarken.
Atlar tamamen (izin verir): gh yüklü değil, dal için PR yok, PR’ın durumu OPEN değil (örn. MERGED, CLOSED) veya gh pr view ayrıştırılamaz çıktı döndürdü. Ayrıca açık olarak başarısız olur; origin/<baseBranch> eksik olduğunda veya temel dışında ileriye gidiş yok — bu Katman 1 geri dönüşleri yine de yeniden konumlandırılan PR birleşebilirliği danışmak önce izin verir. Parametreler:
ParamTürVarsayılanAçıklama
baseBranchstring"main"Çatışmaları kontrol etmek için temel dal.
Bu ilke GitHub CLI (gh) gerektirir. İlke bir OPEN PR olduğunu onaylamak için gh pr view kulllanır — gh olmadan, ilke kısa devre ile izin verir. gh auth login öğesini pull isteklerine okuma erişimi için repo kapsamına sahip bir kişisel erişim belirteci ile çalıştırın.

require-ci-green-before-stop

Olay: Stop
Varsayılan: CI kontrolleri geçerli dal üzerinde başarısız olduğunda veya çalışırken durmasını reddeder. Hem GitHub Actions iş akışı çalıştırmaları hem de üçüncü taraf bot kontrolleri (örn. CodeRabbit, SonarCloud, Codecov) kontrol eder. skipped, cancelled ve neutral sonuçları başarısız olarak değerlendirir (ikinci işlem örn. Socket Güvenliği dış katkı PR’leri hakkında uyarılar, uygulama kasıtlı olarak başarısız yerine nötr raporları) İzin verdiğinde tüm kontrolleri geçerse bilgilendirici bir mesaj döndürür.
Parametre yok.
Bu ilke GitHub CLI (gh) yüklü ve doğrulanmış olmasını gerektirir. gh auth login öğesini Actions iş akışı çalıştırmaları ve Kontroller API’sine okuma erişimi için repo kapsamına sahip bir kişisel erişim belirteci ile çalıştırın. gh yüklü değilse veya doğrulanmazsa, ilke açık olarak başarısız olur ve nedeni Claude’a raporlar.


Bireysel ilkeleri devre dışı bırakma

Yapılandırmanızdaki enabledPolicies öğesinden belirli bir ilkeyi kaldırın veya pano’nun İlkeler sekmesinde kapatın.
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
enabledPolicies öğesinde listelenmemiş ilkeler, policyParams girdileri bulunsa bile çalışmaz.