<!-- https://avertgate.com/tr/docs/decisions · Nasıl çalışır -->

# Karar türleri

Her çağrı tam olarak bir karar üretir. Karar her zaman `{ decision, reason, ruleId }` biçimindedir ve denetim kaydına yazılır.

| Karar | Anlamı | Ajan ne görür? |
| --- | --- | --- |
| ALLOW | Çağrı politika ve tarayıcılardan geçti, araç çalıştırıldı. | Aracın (taranmış) sonucu. |
| BLOCK | Politika ihlali, sır/PII, injection ya da döngü. İstek aşamasında araç *çalıştırılmaz*. Yanıt aşamasında (şüpheli sonuç) araç zaten çalışmıştır; yalnızca sonuç ajandan saklanır. | Güvenli bir hata iletisi. |
| ESCALATE | Çağrı bir insanın onayını bekliyor (Slack). Onaylanırsa devam eder; reddedilir ya da zaman aşımına uğrarsa BLOCK olur. | Onay sonucuna göre sonuç ya da hata. |
| SHADOW_BLOCK | Shadow modda "engellenecekti" kararı. Çağrı *durdurulmaz*. | Normal sonuç. |
| SHADOW_ESCALATE | Shadow modda "onaya gidecekti" kararı. Çağrı durdurulmaz. | Normal sonuç. |

## Karar nesnesi

<!-- decision.json -->
```json
{
  "decision": "BLOCK",
  "reason": "argument \"amount\" = 750 exceeds max 500",
  "ruleId": "issue_refund"
}
```

`ruleId` kararı veren kuralı gösterir: çoğunlukla araç adı, ya da `loop-breaker`, `dlp_exfiltration`, `drip-exfiltration`, `ingress_prompt_injection` gibi dedektör adları.

## Engellenen çağrı ajana nasıl yansır?

MCP proxy'de ajan, engel nedenini içeren standart bir araç hatası alır. SDK'da `AvertGateSecurityError` fırlatılır; `catchErrors: true` verirseniz hata fırlatılmaz, `{ error: "..." }` olarak döner (LLM döngüsüne geri bildirim vermek için kullanışlıdır).
