Autonomy With a Stop Button
Autonomous agents are useful right up to the moment they do something irreversible. EDDI 6.2.0 introduced human-in-the-loop governance: explicit approval gates at three levels of granularity, backed by timeout policies, loop detection, and state that survives a restart. Approvals are configuration, not custom application code.
Why Approval Gates Belong in the Platform
Most teams bolt approvals onto the application layer: a queue here, a webhook there, a database flag somewhere else. That approach breaks the moment a process restarts, an approver goes offline, or an agent retries the same request in a loop. EDDI puts the gate inside the conversation pipeline itself. A paused turn stays paused, competing input is rejected with a clear 409 Conflict, and every decision lands in the same audit trail as the rest of the agent lifecycle.
Three Levels of Approval
- Turn-Level Approval: A
PAUSE_CONVERSATIONaction halts the entire pipeline. Until a human resumes it, further user input returns409 Conflict, so nothing races ahead of the pending decision. - Per-Tool-Call Gating: Individual tool invocations can require human approval before they execute. Glob-pattern allow lists and exempt lists decide exactly what is gated, across built-in, HTTP, MCP, A2A, dynamic, and memory tools.
- Group Phase Approval: Multi-agent discussion phases can require human sign-off at
PHASEorTASKgranularity, so a group cannot move from planning to execution unsupervised.
Timeout Policies
Humans are not a highly available service. Every gate declares what happens when nobody responds in time:
WAIT_INDEFINITELY: The run stays paused until a human decides. Use it where an unattended action is never acceptable.AUTO_APPROVE: Proceed once the window expires. Suited to low-risk actions where oversight is a spot check rather than a hard gate.AUTO_REJECT: Deny the pending action and let the agent continue down its rejection path.ABORT: Terminate the run outright, the safest choice for irreversible or high-blast-radius operations.
Built to Survive Production
An approval system is judged on its worst day: a restart in the middle of a review, an agent that keeps asking the same question, an approver who lives in Slack rather than in your admin UI.
- No-Progress Guard: EDDI fingerprints every pause. When identical fingerprints reappear after automated decisions, it recognizes an infinite approval loop and breaks the cycle instead of burning tokens on it.
- Crash Recovery: Pending approvals survive server restarts, and timeout timers are re-armed automatically, so a rolling deployment never silently drops a decision that was in flight.
- Slack Approvals: Interactive Block Kit cards bring the decision to the approver, with redacted argument previews and approver whitelists so only authorized people can act on a card.
- MCP Approvals: External clients list pending approvals and approve or reject them through MCP tools, part of the 84 tool surface, turning your IDE or agent client into a control plane.
- Approve What Will Actually Run: An approval binds to the resolved request, and approvers of MCP and A2A calls see the target and a request fingerprint, not just a tool name.
- A Gated Platform Operator: The Platform Operator can create and change agents through EDDI's own API, and every write it attempts waits behind the same approval gate.
Governance and Compliance Fit
Human oversight is not only an operational preference, it is a regulatory requirement. Approval gates give EU AI Act Article 14 human oversight a concrete implementation: a named person authorizes a specific action, and the decision is recorded. Combined with EDDI's compliance framework and its HMAC-SHA256 audit trail, you can show an auditor not just what an agent did, but who allowed it and when.