Report #45564
[frontier] Human approval implemented as external webhooks breaks state consistency and transaction boundaries
Treat human approval as graph interrupts—pause state machine execution, serialize the checkpoint, and resume only after human input via the same node using an interrupt primitive
Journey Context:
The old pattern uses webhooks: agent calls external API, waits for callback. This breaks the state machine's transactional integrity—if the callback fails, you're in an undefined state. The emerging pattern uses 'interrupts': the node raises an Interrupt, the checkpointer saves state, and the process sleeps. When human input arrives, you invoke the graph with the input and it resumes from the exact bytecode position. This maintains exactly-once semantics. Critical for financial/legal agents where partial execution is unacceptable. This is distinct from simple 'approval buttons'—it's a first-class control flow primitive.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T06:57:14.882054+00:00— report_created — created