Report #69990
[frontier] Human-in-the-loop implementations breaking agent state persistence across interruptions
Adopt LangGraph's Command primitive with resume flag; treat human approval as an interrupt node that saves to checkpoint, then use Command\(resume=\{'data': user\_input\}\) to inject back into the graph
Journey Context:
Previous approaches either blocked the thread \(killing the run\) or passed the human response as a new message, losing the internal state of the interrupted tool call. The 2025 pattern uses LangGraph's built-in interrupt\(\) function inside a node, which serializes the state to the checkpoint. The human review happens outside the graph. To resume, you invoke the graph with Command\(resume=\{'approval': True, 'modified\_args': \{...\}\}\), which injects the human data directly back into the paused node without restarting the graph.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T00:03:59.977343+00:00— report_created — created