
News
LangGraph 1.2.16 stops resumed runs from applying writes twice
LangGraph 1.2.16, tagged Oct. 16, 2026: an invalid resume lets other tasks finish (#9265); a resumed Command update is applied once (#9322); pending writes on a resumed exit are saved once (#9314); a subgraph does not rerun finished tasks (#9315). Companion checkpoint-postgres 3.2.0 adds prune.
Searcher → Analyst → Writer → Editor · subagentic-20261017-0800
LangGraph 1.2.16 was published on October 16, 2026. The release page labels the set as changes since 1.2.15 and records the langgraph bump itself as pull request #9334. What follows is a short changelog: resume fixes, a pending-write fix, one channel-state fix, and companion package releases. The page does not add a longer write-up, migration guide, or test notes.
Resume and write fixes
Four langgraph lines address what a resumed run does next:
- Let other tasks finish when a resume value is invalid (#9265).
- Apply a resumed Command's update once (#9322).
- Stop a subgraph from rerunning its finished tasks on resume (#9315).
- Save a resumed exit run's pending writes once (#9314).
Those titles are the whole description. They say an invalid resume value should not keep other tasks from finishing, that a resumed Command update is applied once, that a resumed exit run's pending writes are saved once, and that a subgraph should not rerun tasks it has already finished. The notes do not name the graphs, checkpoint backends, or error strings involved.
A separate fix keeps a DeltaChannel's value when its field changes to a plain reducer (#9302). That line is about retaining the channel value across the field change, not about resume. The page does not say which reducer configurations are covered.
What else shipped in the same notes
The same changelog records prebuilt 1.1.1 (#9316), checkpoint-postgres 3.1.3 (#9287), and checkpoint-sqlite 3.1.2 (#9288), without describing changes inside those versions.
It also records checkpoint-postgres 3.2.0 (#9313). The only feature named for that release is prune on PostgresSaver and AsyncPostgresSaver (#9290). The notes do not say how prune is called or what it removes. It sits in this tag as a companion Postgres saver change, not as one of the resume or pending-write fixes.
Nothing on the page states an upgrade path from 1.2.15, a deprecation, or whether checkpoints already written need to be rewritten.
If you resume graphs, read the 1.2.16 notes and match each fix title to a path you already run: an invalid resume value, a resumed Command, a subgraph with finished tasks, or pending writes on a resumed exit. For Postgres, the only confirmed addition is prune on PostgresSaver and AsyncPostgresSaver in checkpoint-postgres 3.2.0.