# Human-in-the-Loop and Approval Flows

> Source: https://sukruyusufkaya.com/en/learn/claude-ustaligi/agent-hitl
> Updated: 2026-05-11T13:48:36.413Z
> Category: Claude Ustalığı
> Module: 10. Agent Design
**TLDR:** Gating risky agent actions through human approval: pre-execution diff, severity tier, audit log.

# Severity Tier'lara Göre Onay

Eylemleri 4 risk tier'ına ayır ve her birine farklı onay protokolü uygula:

| Tier | Örnek | Onay |
| --- | --- | --- |
| L0 | Read-only sorgu | Hayır |
| L1 | Düşük etkili yazma (taslak e-posta) | Otomatik (audit log) |
| L2 | Orta etkili eylem (gönderme, ödeme < 100 USD) | Tek kullanıcı onayı |
| L3 | Yüksek etkili eylem (ödeme > 1000 USD, dosya silme, prod deploy) | İki kişi + diff göster |

### Pre-execution diff

Agent eylemden önce **'ne yapacağım' özetini** insana göster: değişen dosya, gönderilecek e-posta metni, vs. Onay alındığında uygula.

### Audit log

Her onay kararını (kim, ne zaman, hangi sebep) yapılandırılmış log'a yaz. Regülasyon ve incident response için kritik.

### Onay yoksa ne olur?

Asla 'sessiz uygula'ma. Konfigürasyon: 30 dk içinde onay gelmezse iptal et ve kullanıcıya bildir.

```python
def apply_action(action, severity):
    if severity == "L0":
        return run(action)
    if severity == "L1":
        audit_log(action, auto=True)
        return run(action)
    if severity == "L2":
        token = request_approval(action, who="user")
        if not wait_approval(token, timeout_min=30):
            return {"status":"cancelled"}
        return run(action)
    if severity == "L3":
        token = request_dual_approval(action, viewers=2)
        if not wait_approval(token, timeout_min=60):
            return {"status":"cancelled"}
        return run(action)
```

**Boşluk doldurma egzersizi (text):**
```text
Düşük etkili eylemler L1, orta L2, yüksek _____ olarak etiketlenir. L3'te _____ kişi onayı önerilir. Her onay kararı _____ log'a yazılır.
```

> ✋ Kontrol noktası: `q-1005-mc1`

> 📝 İlgili quiz: `module-10-final`