Symptom
When a graph pauses on interrupt_after, stream_mode="checkpoints" never emits the checkpoint saved at that pause. A client that resumes from the last streamed id runs the paused node again.
Evidence what you'll see
- The report's print is
streamed checkpoints (step, next): [(-1, ['__start__']), (0, ['one'])]whilesaved head checkpoint (step, next): (1, ['two']). - The same gap appears as a
checkpointevent onstream_mode="debug". interrupt_beforedoes not have this problem: the paused checkpoint shows up on the stream.
Why it happens
The checkpoint event is only produced at the start of the next tick() (libs/langgraph/langgraph/pregel/_loop.py:641-642). after_tick() saves the checkpoint (:743) and then raises GraphInterrupt for interrupt_after (:745-749), so that next tick never runs.
Affected versions
langgraph 1.2.12 and main at 9a0394d88, Linux, Python 3.13.11. Reproduced with stream and astream. Package block also names langchain_core 1.6.6, langsmith 0.14.2, langgraph_sdk 0.4.5.
Fix steps
0 of 2 done
Your check marks stay in this browser only.
How to check it worked
- The streamed checkpoints end with the same pair as
get_state_history(),(1, ['two'])in the report's graph, matchinginterrupt_before.
If it still fails
- The linked issue does not name a release after
1.2.12that emits theinterrupt_aftercheckpoint. - A 7 Oct 2026 comment asked to be assigned and did not report a merged change.
Sources and credit
Summarized in our own words from these public reports. Credit goes to their authors.
Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change
Hit an error we don't cover? Submit it