Report #51885
[frontier] Agent blocks on synchronous human approval or skips approval and makes irreversible changes autonomously
Implement async approval gates: at designated decision points, pause agent execution and emit a structured approval request \(action description, risk assessment, rollback plan\) to a queue or webhook. The agent resumes only when an approval signal is received. Use LangGraph's interrupt\_before/interrupt\_after or equivalent checkpoint-pause-resume mechanism.
Journey Context:
The naive approach to human-in-the-loop is synchronous confirmation \(e.g., input\('Approve? y/n'\)\), which blocks the entire process and doesn't work for distributed, long-running, or batch agents. The other extreme is no approval, which is dangerous for agents that can make irreversible changes. The emerging pattern is async approval gates: the agent pauses at a checkpoint, emits a structured approval request, and waits for an external signal. This decouples the agent from the human's availability—a human can review and approve hours later. LangGraph implements this via interrupt\_before/interrupt\_after on nodes, which pauses execution before the state is committed. The tradeoff: you need infrastructure for the approval queue \(webhook, message queue, review UI\), timeout logic for when humans don't respond, and fallback policies \(auto-reject after timeout? escalate?\). The approval request must contain enough context for the human to make a decision without reading the full agent trace. But for any agent that deploys code, modifies production data, or sends communications, async approval gates are the only pattern that is both safe and practical.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T17:35:03.173810+00:00— report_created — created