# What changed in langgraph

> 22 changes in langgraph 1 from its official release notes, upgrade guides and advisories: 3 breaking, 1 security, 1 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/pypi/langgraph/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## langgraph 1

### Breaking changes

- Each bulk_update_state update now gets its own task id. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- Delta channel replay is ordered by task path. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- An update_state Overwrite that resets a DeltaChannel now snapshots that channel. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)

### Security

- LangGraph checkpoint loading has unsafe msgpack deserialization (1.0.10) — [security advisory](https://github.com/advisories/GHSA-G48C-2WQR-H844)

### New APIs and options

- PostgresSaver and AsyncPostgresSaver gain prune. (1.2.16) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.16)

### Behavior and default changes

- Every message written to a messages DeltaChannel now gets an id. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)

### Fixes and other changes

- A resumed Command's update is now applied once. (1.2.16) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.16)
- DeltaChannel keeps its value when its field changes to a plain reducer. (1.2.16) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.16)
- Other tasks now finish when a resume value is invalid. (1.2.16) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.16)
- A resumed exit run's pending writes are now saved once. (1.2.16) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.16)
- A subgraph no longer reruns its finished tasks on resume. (1.2.16) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.16)
- astream_events no longer drops control or interrupts on v1 or v2. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- Writes from a cached node are saved as if the node ran. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- A failed DeltaChannel write no longer allows saving a later checkpoint. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- An exit run from a checkpoint stays out of a newer branch after the thread has moved past it. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- A resumed exit-mode run replays its delta writes in live order. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- A run's DeltaChannel input is read back only on that run's checkpoints. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- A fork's DeltaChannel snapshot no longer starts nodes that never ran. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- A drain requested before an interrupt_before breakpoint now stops at that breakpoint. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- Exit-mode delta writes are no longer stored under the null task id. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- ToolNode no longer swallows invalid resume values. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
- Writes from an update_state input are stored on the checkpoint it updates. (1.2.15) — [release notes](https://github.com/langchain-ai/langgraph/releases/tag/1.2.15)
