<!-- https://avertgate.com/tr/docs/policy-file · Politika -->

# Politika dosyası

Politika bir YAML dosyasıdır ve her çağrıda deterministik olarak değerlendirilir. OPA/Rego gibi ayrı bir politika dili yoktur.

## Tam örnek

<!-- policy.yaml -->
```yaml
agent: support-agent-v1

tools:
  - name: "lookup_order"
    allow: true
  - name: "issue_refund"
    allow: true
    constraints:
      amount: { max: 5000 }
    require_approval_when:
      amount: { min: 500 }
  - name: "send_email"
    allow: true
    require_approval: true
    egress_scan: true
  - name: "delete_customer"
    allow: false

defaults:
  unlisted_tools: deny
  fail_closed: true

guard_model:
  enabled: false
  provider: "typesafe"

loop_breaker:
  enabled: true
  max_identical_calls: 3
```

## Üst düzey alanlar

| Alan | Tür | Açıklama |
| --- | --- | --- |
| `agent` | string | Politikanın ait olduğu ajan kimliği. |
| `tools` | liste | Araç kuralları (aşağıda). |
| `resources` | liste | İsteğe bağlı kaynak (MCP resource) kuralları: `uri_pattern` (regex ya da alt dize), `allow`, `require_approval`. |
| `defaults` | nesne | `unlisted_tools`, `fail_closed`, `shadow_mode`. |
| `mode` / `shadow_mode` | enforce \| shadow \| dry-run | Politika düzeyinde shadow. |
| `loop_breaker` | nesne | [Döngü kırıcı](/docs/loop-breaker) ayarları. |
| `guard_model` | nesne | [AI Guard](/docs/ai-guard) ayarları. |

## Araç kuralı

| Alan | Açıklama |
| --- | --- |
| `name` | Araç adı. |
| `allow` | `false` ise araç her zaman engellenir. |
| `constraints` | Argüman kısıtları: `min`, `max`, `enum`, `regex`. İhlal = BLOCK. |
| `require_approval` | `true` ise her çağrı insan onayına gider. |
| `require_approval_when` | Koşullu onay: argüman eşiğe ulaşırsa (`min`/`max`) onaya gider. |
| `egress_scan` | `false` verilmedikçe argümanlar sır/PII için taranır (varsayılan: açık). |
| `shadow_mode` | Yalnızca bu araç için gözlem modu. |
| `max_identical` / `max_consecutive` | Bu araca özel döngü eşikleri. |

## Varsayılanlar

| Anahtar | Değer | Etki |
| --- | --- | --- |
| `unlisted_tools` | `deny` | Listede olmayan araç engellenir. **Önerilen.** |
| `fail_closed` | `true` | Denetleyici hatasında risk altındaki çağrı engellenir/onaya gider. |

> **Dikkat**: SDK'da hiç politika verilmezse izin verici bir varsayılan kullanılır: listelenmeyen araçlara izin verilir ama egress/ingress ve loop breaker açıktır. Üretimde mutlaka açık bir politika ve `unlisted_tools: deny` kullanın.

## Doğrulama

Panelin politika sayfası, kaydetmeden önce YAML'ı `POST /api/policy/validate` ile doğrular. Geçersiz politika kaydedilmez.
