> ## Documentation Index
> Fetch the complete documentation index at: https://exosphere-auto-translate-docs-20260624-1149.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Built in policies

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                                  | İlkeler                                                                                                                                      | Kanca türü  |
| ----------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
| [Tehlikeli komutlar](#tehlikeli-komutlar) | block-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commands                                                                      | PreToolUse  |
| [Altyapı komutları](#altyapı-komutları)   | block-kubectl, block-terraform, block-aws-cli, block-gcloud, block-az-cli, block-helm, block-gh-pipeline                                     | PreToolUse  |
| [Sırlar (sanitizers)](#sırlar-sanitizers) | sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokens                           | PostToolUse |
| [Ortam](#ortam)                           | block-env-files, protect-env-vars                                                                                                            | PreToolUse  |
| [Dosya erişimi](#dosya-erişimi)           | block-read-outside-cwd, block-secrets-write                                                                                                  | PreToolUse  |
| [Git](#git)                               | block-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-staged                          | PreToolUse  |
| [Veritabanı](#veritabanı)                 | warn-destructive-sql, warn-schema-alteration                                                                                                 | PreToolUse  |
| [Uyarılar](#uyarılar)                     | warn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-install                                            | PreToolUse  |
| [Paket yöneticileri](#paket-yöneticileri) | prefer-package-manager                                                                                                                       | PreToolUse  |
| [İş akışı](#iş-akışı)                     | require-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-no-conflicts-before-stop, require-ci-green-before-stop | Stop        |

* **`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:

```json theme={null}
{
  "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.

***

<Tip>
  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](/tr/configuration#hint-cross-cutting) bölümüne bakın.
</Tip>

***

## 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:**

| Param           | Tür        | Varsayılan | Açıklama                                                                                         |
| --------------- | ---------- | ---------- | ------------------------------------------------------------------------------------------------ |
| `allowPatterns` | `string[]` | `[]`       | İzin verilen tam komut önekleri. Her giriş ayrıştırılmış argv belirteçlerine karşı eşleştirilir. |

**Örnek:**

```json theme={null}
{
  "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.

<Note>
  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).
</Note>

***

### `block-rm-rf`

**Olay:** PreToolUse (Bash)\
**Varsayılan:** `rm -rf`, `rm -fr` ve benzer özyinelemeli silme formlarını reddeder.

**Parametreler:**

| Param        | Tür        | Varsayılan | Açıklama                                                         |
| ------------ | ---------- | ---------- | ---------------------------------------------------------------- |
| `allowPaths` | `string[]` | `[]`       | Özyinelemeli olarak silinmesi güvenli olan yollar (örn. `/tmp`). |

**Örnek:**

```json theme={null}
{
  "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`](#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:**

| Param           | Tür        | Varsayılan | Açıklama                             |
| --------------- | ---------- | ---------- | ------------------------------------ |
| `allowPatterns` | `string[]` | `[]`       | İzin verilen kubectl komut önekleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param           | Tür        | Varsayılan | Açıklama                                    |
| --------------- | ---------- | ---------- | ------------------------------------------- |
| `allowPatterns` | `string[]` | `[]`       | İzin verilen terraform/tofu komut önekleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param           | Tür        | Varsayılan | Açıklama                             |
| --------------- | ---------- | ---------- | ------------------------------------ |
| `allowPatterns` | `string[]` | `[]`       | İzin verilen aws CLI komut önekleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param           | Tür        | Varsayılan | Açıklama                            |
| --------------- | ---------- | ---------- | ----------------------------------- |
| `allowPatterns` | `string[]` | `[]`       | İzin verilen gcloud komut önekleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param           | Tür        | Varsayılan | Açıklama                            |
| --------------- | ---------- | ---------- | ----------------------------------- |
| `allowPatterns` | `string[]` | `[]`       | İzin verilen az CLI komut önekleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param           | Tür        | Varsayılan | Açıklama                          |
| --------------- | ---------- | ---------- | --------------------------------- |
| `allowPatterns` | `string[]` | `[]`       | İzin verilen helm komut önekleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param           | Tür        | Varsayılan | Açıklama                                                                        |
| --------------- | ---------- | ---------- | ------------------------------------------------------------------------------- |
| `allowPatterns` | `string[]` | `[]`       | Aksi takdirde reddedilecek belirli betikleştirilmiş çağrılara izin vermek için. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param                | Tür                                  | Varsayılan | Açıklama                                        |
| -------------------- | ------------------------------------ | ---------- | ----------------------------------------------- |
| `additionalPatterns` | `{ regex: string; label: string }[]` | `[]`       | Gizli olarak kabul edilecek ek regex desenleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param        | Tür        | Varsayılan | Açıklama                                                             |
| ------------ | ---------- | ---------- | -------------------------------------------------------------------- |
| `allowPaths` | `string[]` | `[]`       | Proje kökünün dışında olsa bile izin verilen kesinlik yol ön ekleri. |

**Örnek:**

```json theme={null}
{
  "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:**

| Param                | Tür        | Varsayılan | Açıklama                                                 |
| -------------------- | ---------- | ---------- | -------------------------------------------------------- |
| `additionalPatterns` | `string[]` | `[]`       | Engelleme yapılacak ek dosya adı desenleri (glob-stili). |

**Örnek:**

```json theme={null}
{
  "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:**

| Param               | Tür        | Varsayılan           | Açıklama                        |
| ------------------- | ---------- | -------------------- | ------------------------------- |
| `protectedBranches` | `string[]` | `["main", "master"]` | Doğrudan itilemeyen dal adları. |

**Örnek:**

```json theme={null}
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
```

<Tip>
  Tüm dallara itmeye izin vermek için (bu ilkeyi `enabledPolicies` öğesinden kaldırmadan devre dışı bırakmak için), `protectedBranches: []` ayarlayın.
</Tip>

***

### `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:**

| Param               | Tür        | Varsayılan           | Açıklama                                                      |
| ------------------- | ---------- | -------------------- | ------------------------------------------------------------- |
| `protectedBranches` | `string[]` | `["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`](/tr/configuration#hint-cross-cutting) özelliğini kullanın:

```json theme={null}
{
  "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:**

| Param         | Tür      | Varsayılan | Açıklama                                             |
| ------------- | -------- | ---------- | ---------------------------------------------------- |
| `thresholdKb` | `number` | `1024`     | Uyarı verilen dosya boyutu eşiği kilobayt cinsinden. |

**Örnek:**

```json theme={null}
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
```

<Note>
  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.
</Note>

***

### `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.

| Parametre | Tür       | Varsayılan | Açıklama                                                                                                                  |
| --------- | --------- | ---------- | ------------------------------------------------------------------------------------------------------------------------- |
| `allowed` | string\[] | `[]`       | İzin verilen paket yöneticisi adları. Bu listeye girmeyen algılanan yöneticiler engellenir. Boş olduğunda, ilke boştadır. |
| `blocked` | string\[] | `[]`       | 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:**

```json theme={null}
{
  "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.

| CLI                      | Kapı ne zaman çalışır        | Ne görürsünüz                                                                                                                                                                                                                                                                                                                                  |
| ------------------------ | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Claude Code              | Aynı aracı döngüsü, hemen    | Claude çalışmaya devam eder — sorunu düzeltir, sonra yeniden bitirmeyi dener. Sizin için görünen kesinti yok.                                                                                                                                                                                                                                  |
| Codex                    | Aynı aracı döngüsü, hemen    | Claude ile aynı.                                                                                                                                                                                                                                                                                                                               |
| GitHub Copilot CLI       | Aynı aracı döngüsü, hemen    | Claude 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 Agent             | Aynı aracı döngüsü, hemen    | Claude ile aynı (Cursor'ın `{followup_message}` kanalını kullanır — `loop_limit` kadar sınırlı, varsayılan 5 yeniden deneme).                                                                                                                                                                                                                  |
| Gemini CLI               | Aynı aracı döngüsü, hemen    | Claude ile aynı (Gemini'nin `AfterAgent` üzerinde `{decision:"block", reason}` kanalını kullanır).                                                                                                                                                                                                                                             |
| OpenCode                 | Aynı aracı döngüsü, hemen    | Claude 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. |

<Note>
  **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.
</Note>

### `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:**

| Param    | Tür      | Varsayılan | Açıklama          |
| -------- | -------- | ---------- | ----------------- |
| `remote` | `string` | `"origin"` | İtilecek uzak ad. |

**Örnek:**

```json theme={null}
{
  "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.

<Note>
  Bu ilke [GitHub CLI](https://cli.github.com/) (`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.
</Note>

***

### `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. **Yerel** — `git 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. **GitHub** — `gh 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:**

| Param        | Tür      | Varsayılan | Açıklama                                  |
| ------------ | -------- | ---------- | ----------------------------------------- |
| `baseBranch` | `string` | `"main"`   | Çatışmaları kontrol etmek için temel dal. |

<Note>
  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.
</Note>

***

### `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.

<Note>
  Bu ilke [GitHub CLI](https://cli.github.com/) (`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.
</Note>

***

***

## 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.

```json theme={null}
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
```

`enabledPolicies` öğesinde listelenmemiş ilkeler, `policyParams` girdileri bulunsa bile çalışmaz.
