> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom

title: "Özel politikalar"
description: "Agent iş akışınıza özgü bir hata modu için bir politika yazın."
icon: "shield-plus"
-------------------

`.failproofai/policies/` dizini altında `policies.js`, `policies.mjs` veya `policies.ts` ile biten bir dosya oluşturun. Kural dosyaları proje ve kullanıcı kapsamında otomatik olarak yüklenir.

## Politikayı Cloud yayınından önce test edin

<Tabs>
  <Tab title="Dashboard">
    1. Özel politikayı bir test makinesine yükleyin ve hem eşleşen bir işlemi hem de meşru bir eşleşmeyen işlemi tetikleyin.
    2. **Observe → policy** bölümüne gidin ve iki kararı karşılaştırın.
    3. Her bağlantılı oturumu açın ve olay yükünün kural için yeterli kanıt içerip içermediğini doğrulayın.
    4. Davranış doğru olduğunda, incelenen kaynağı **Admin → policy editor** bölümüne taşıyın ve bir sürüm yayınlayın.
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    failproofai policies --install --custom ./security.policies.ts \
      --cli claude --scope project
    failproofai policies
    ```

    `.failproofai/policies/` altındaki kural dosyaları `--custom` olmadan yüklenir. Doğrulama bozuk bir modülde başarısız olması gerektiğinde CI'de açık bir yükleme komutu tutun.
  </Tab>
</Tabs>

```ts theme={null}
import { customPolicies, allow, deny } from "failproofai";

customPolicies.add({
  name: "protect-production-paths",
  description: "Block writes to production configuration",
  match: { events: ["PreToolUse"] },
  fn: async (ctx) => {
    if (ctx.toolName !== "Write" && ctx.toolName !== "Edit") return allow();
    const path = String(ctx.toolInput?.file_path ?? "").replaceAll("\\", "/");
    if (path.split("/").includes("production")) {
      return deny("Writes to production configuration require approval.");
    }
    return allow();
  },
});
```

Bu, `production/config.yml`, `/srv/production/config.yml`, `/srv/production` ve `C:\\production\\config.yml` ile `Write` ve `Edit` için eşleşir. `production-backup` gibi adlarla eşleşmez çünkü `production` tam bir yol segmenti olmalıdır.

Açık bir dosyayı doğrulayın ve yükleyin:

```bash theme={null}
failproofai policies --install --custom ./security.policies.ts
```

Politika bağlamı olay türünü, normalleştirilmiş yükü, araç adını ve girdisini, oturum meta verilerini, parametreleri ve mevcut olduğunda kaynak CLI'yi içerir.

## Hata yollarını test edin

Giriş dosyasını veya içeri aktardığı herhangi bir yerel modülü değiştirdikten sonra doğrulamayı çalıştırın:

```bash theme={null}
failproofai policies --install --custom ./security.policies.ts --scope project
```

Katı CLI yolu eksik dosyalar, sözdizimi hataları, çözülmeyen içeri aktarmalar, üst düzey istisnalar ve modül yükleme zaman aşımları için başarısız olur. Zorlama sırasında, bozuk bir özel dosya günlüğe kaydedilir ve atlanır, böylece yerleşik politikalar devam edebilir. Herhangi bir yükleme uyarısını beklenen zorlama kaybı olarak kabul edin ve üretim günlüklerinde bunu uyarın.

Açık, kural ve Cloud tarafından yönetilen politikalar arasında genel olarak benzersiz adlar kullanın. Politika işlevlerini deterministik tutun, dış çağrıları kısa zaman aşımları ile sınırlayın ve her yolda kasten `allow`, `instruct` veya `deny` döndürün.

<Warning>
  Özel politika zorlama kodudur. Eksik alanları, alternatif araç adlarını ve kötü biçimlendirilmiş girdileri test edin—yalnızca beklenen eşleşmeyi değil.
</Warning>
