Human-in-the-loop · the SOX gate
HITL Approvals
RED- and BLACK-tier decisions pause here until a named human approves. The platform never writes anything material without a human at the gate.
🛎️Pending
0
awaiting Approve/Reject
✓Approved · 24h
6
median wait 18 min
✗Rejected · 24h
3
rolled back to manual
⏰p95 SLA
28 min
target ≤ 30 min · RED-tier
⛔Timed-out · 7d
1
auto-escalated to manager
Try it
Simulate an approval request · global dialog pops on every tab
Pops the global Approval Dialog with the full evidence chain, proposed JE, agent reasoning, and policy rationale. Approve/Reject is event-sourced to every connected viewer.
State machine
The HITL transition graph
IDLE
no decision
REQUESTED
agent paused
WAITING
≤ 30-min SLA
APPROVED
post JE + audit
REJECTED
rollback + audit
TIMED_OUT
escalate + audit
Source:
agent/policy.py + agent/compliance.py · timeout per tier · every transition appends an audit row tagged hitl_state_change.Approvers
Named approvers · tier-capped
| Approver | Role | Cap | ✓ / ✗ | p50 wait |
|---|---|---|---|---|
| alice@kraken.com | Controller | RED | 142 · 8 | 12 min |
| bob@kraken.com | Sr. Accountant | RED | 89 · 4 | 9 min |
| finance-mgr@kraken.com | Finance Manager | BLACK | 28 · 12 | 1h 4min |
| cfo@kraken.com | CFO | BLACK | 4 · 2 | 4h 22min |
Tier-cap enforced in
agent/policy.py · BLACK-tier requests can only be resolved by approvers with tier_cap=BLACK.SLA breach handling
What happens when nobody approves
T+15
First Slack reminder pinged to all configured approvers in the channel.
T+25
Second reminder · escalation marker added to the decision payload.
T+30
Marked
TIMED_OUT · auto-escalated up one tier (RED → BLACK) · finance manager paged.T+60
If unresolved at BLACK · workflow rolled back · audit row marked
escalated_unresolved.History · all approvers
Last 7 days · all approvers · all tiers
| Timestamp | decision_id | Amount | Tier | Outcome | Approver | Wait | Mode |
|---|---|---|---|---|---|---|---|
| 2026-06-04 14:22:18Z | dec-hitl-9842 | $1,250,000.00 | RED | APPROVED | alice@kraken.com | 47m | mempool_stuck |
| 2026-06-04 13:18:01Z | dec-hitl-9841 | $750,000.00 | RED | APPROVED | bob@kraken.com | 22m | bridge_lag |
| 2026-06-04 11:04:33Z | dec-hitl-9831 | $8,420.00 | YELLOW | AUTO SKIPPED | — | 0m | gas_leakage |
| 2026-06-04 09:51:12Z | dec-hitl-9828 | $1,800,000.00 | RED | REJECTED | alice@kraken.com | 14m | timing_skew |
| 2026-06-04 08:30:48Z | dec-hitl-9825 | $510,000.00 | RED | APPROVED | bob@kraken.com | 9m | gas_leakage |
| 2026-06-04 07:18:22Z | dec-hitl-9821 | $12,500,000.00 | BLACK | REJECTED | finance-mgr@kraken.com | 87m | hallucination |
| 2026-06-03 22:42:09Z | dec-hitl-9817 | $620,000.00 | RED | TIMED OUT | — | 30m | bridge_lag |