AI

LangGraph JS 1.7.0 Adds Strict Resume Mode and Per-Interrupt IDs

LangGraph JS 1.7.0 introduces stricter interrupt validation and unique identifiers for each interrupt in a task, improving control flow reliability.

3 min readSource: LangGraph JS Releases

Curated by Kandala Guruprasad. Drafted with AI and checked against the source.

LangGraph JS 1.7.0 Adds Strict Resume Mode and Per-Interrupt IDs

TL;DR

  • Each interrupt in a task now receives its own unique ID based on namespace hash and answer count, with the first interrupt retaining its original ID for backward compatibility
  • Strict resume mode, enabled via the __pregel_strict_resume configurable key, rejects stale answers and throws UnknownInterruptError with detailed error reasons (not_pending, empty_map, or ambiguous)
  • Tasks can now preserve multiple simultaneous interrupts from subgraphs with parallel flows, rather than keeping only the last one
  • Command({ resume: false }) and other falsy resume values now reach interrupt() instead of throwing EmptyInputError, enabling more flexible control flow
Version
1.7.0
Release date
November 5, 2026
SDK update
@langchain/langgraph-sdk@1.13.0

What changed in interrupt handling

LangGraph JS 1.7.0 modifies how interrupts are tracked and resumed within tasks. Each interrupt raised after a task has already received answers now gets its own unique identifier, computed as the namespace hash plus the answer count. The task's first interrupt retains its original ID to maintain backward compatibility. When resuming a graph, if the resume map contains no entry for the task's next interrupt, the system falls back to using the first ID, ensuring older saved states continue to work.

Nodes that are retried by their retry policy will now reuse the task's existing answers instead of requesting new ones from interrupts, reducing redundant prompts and improving efficiency when retries occur.

Strict resume mode for validation

A new strict resume mode can be enabled by setting the private configurable key __pregel_strict_resume. When active, the root graph validates resume commands before processing. If a Command({ resume }) references an interrupt that is no longer pending, provides an empty map, or names a single value when multiple interrupts are pending, the system throws UnknownInterruptError and avoids writing any state changes.

The error message includes a reason field that specifies which condition failed: not_pending indicates the interrupt is no longer active, empty_map signals an empty resume object, and ambiguous means the map is underspecified for the current state. The error also includes interruptIds (the IDs being referenced) and pendingIds (the IDs still waiting for answers), helping developers diagnose mismatches. Without the __pregel_strict_resume key, resume operations behave as before, preserving backward compatibility.

Multiple simultaneous interrupts preserved

LangGraph JS 1.7.0 fixes a limitation where tasks that raised multiple interrupts at once—such as a subgraph executing parallel interrupt flows—would only retain the last interrupt. The system now keeps all interrupts from such concurrent operations, allowing graphs with parallel branches to maintain full control flow information. This change ensures that resuming after parallel interrupts can address all pending questions rather than losing earlier ones.

In addition, Command({ resume: false }) and other falsy resume values now pass through to the interrupt() function instead of throwing EmptyInputError. This allows for more nuanced control flow where false or null values can signal specific resumption behavior without triggering exceptions.

Backward compatibility and migration

The changes in 1.7.0 are designed to maintain backward compatibility with existing graphs and saved interrupt states. IDs generated by earlier versions continue to function correctly. When a resume map has no entry for a task's next interrupt, the system attempts to match using the first interrupt ID from the prior version, allowing seamless transitions for applications with stored state.

Developers who want stricter validation and error detection for interrupt mismatches can opt into the new behavior by setting __pregel_strict_resume. Those without this configurable key will see no change in resume behavior, giving teams control over when to adopt the stricter semantics. Related updates to @langchain/langgraph-sdk@1.13.0 and other accompanying packages were also released in this cycle.

Source

LangGraph JS Releaseshttps://github.com/langchain-ai/langgraphjs/releases/tag/%40langchain%2Flanggraph%401.7.0

AI-assisted, verified against the source. This post was drafted with AI from the primary source linked above and checked automatically against it. For anything you depend on, read the original.

  • #langgraph
  • #javascript
  • #agentic
  • #graphautomation
  • #statemanagement

More in AI