langchain-ai/langgraph
Build resilient agents.
30 Releases
Latest: 3d ago
langgraph==1.2.51.2.5Latest
📋 Changes
- release(langgraph): 1.2.5 (#8062)
- fix(langgraph): merge `lc_versions` config metadata (#8052)
- release(cli): 0.4.28 (#8041)
- fix: updateState bug for deltaChannel on empty thread (#8011)
- chore: migrate Python type checking to ty (#8002)
- chore(deps-dev): bump types-requests from 2.33.0.20260408 to 2.33.0.20260518 in /libs/langgraph (#7977)
- chore(deps): bump the minor-and-patch group in /libs/langgraph with 14 updates (#7975)
langgraph-cli==0.4.29cli==0.4.29
📋 Changes
- release(cli): 0.4.29 (#8046)
- feat(cli): add support for passing certfile and cert key to run dev server under HTTPS (#8031)
langgraph-cli==0.4.28cli==0.4.28
📋 Changes
- release(cli): 0.4.28 (#8041)
- chore(deps): bump starlette from 1.0.0 to 1.0.1 in /libs/cli (#8005)
- chore: migrate Python type checking to ty (#8002)
- chore(deps): bump the minor-and-patch group in /libs/cli with 4 updates (#7962)
- chore(deps): bump typescript from 5.9.3 to 6.0.3 in /libs/cli/js-monorepo-example (#7672)
- chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /libs/cli/js-examples in the major group across 1 directory (#7966)
- chore(deps-dev): bump mypy from 1.20.2 to 2.1.0 in /libs/cli in the major group (#7968)
- chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example with 7 updates (#7959)
- + 3 more
langgraph==1.2.41.2.4
📋 Changes
- release(langgraph): 1.2.4 (#7991)
- test(sdk-py): add factory-graph integration test exercising the server factory path (#7978)
- fix(langgraph): keep _on_started backward-compatible with overrides predating cause (#7987)
langgraph==1.2.31.2.3
📋 Changes
- release(langgraph): 1.2.3 (#7945)
- feat(langgraph): wire RemoteGraph.interleave to sdk-py interleave_projections (#7938)
- feat(langgraph): add v3 streaming support to RemoteGraph (#7927)
- feat(langgraph): name tool-dispatched subagents via lc_agent_name (#7928)
- fix(langgraph): rename ProtocolEvent.eventId to event_id to match the wire field (#7942)
- fix(langgraph): merge instead of overwrite in ensure_config for callbacks, tags, metadata, configurable (#7926)
- fix(langgraph): [LSD-1507] Distinguish between user cancelled and other cancellations (#7920)
- fix(cli): bump api bound to 0.10.0 (#7922)
- + 3 more
langgraph-sdk==0.4.2sdk==0.4.2
📋 Changes
- release(sdk-py): 0.4.2 (#7955)
- fix(sdk-py): percent-encode thread_id in v3 stream transport default paths (#7954)
langgraph-sdk==0.4.1sdk==0.4.1
📋 Changes
- release(sdk-py): 0.4.1 (#7944)
- feat(sdk-py): extract stream decoders and add interleave_projections (#7935)
- feat(langgraph): add v3 streaming support to RemoteGraph (#7927)
- fix(sdk-py): make `tools_agent` fake model stateless (#7930)
langgraph-sdk==0.4.0sdk==0.4.0
📋 Changes
- release(sdk-py): 0.4.0 (#7923)
- feat(sdk-py): add thread stream helpers (#7833)
- feat(sdk-py): wire websocket stream selection (#7832)
- feat(sdk-py): add websocket stream transports (#7830)
- feat(sdk-py): harden streaming reconnects (#7829)
- feat(sdk-py): add sync scoped subgraphs (#7828)
- feat(sdk-py): add sync messages and tool calls (#7827)
- feat(sdk-py): add sync thread stream core (#7826)
- + 9 more
langgraph-cli==0.4.27cli==0.4.27
📋 Changes
- release(cli): 0.4.27 (#7925)
- fix(cli): pin internal_docker deploy images by digest (#7924)
- fix(cli): bump api bound to 0.10.0 (#7922)
- chore(deps): bump the uv group across 2 directories with 1 update (#7853)
- chore(deps): bump idna from 3.11 to 3.15 in /libs/cli (#7865)
- chore(deps): bump turbo from 2.9.7 to 2.9.14 in /libs/cli/js-monorepo-example (#7868)
- chore(deps): bump langsmith from 0.6.3 to 0.7.1 in /libs/cli/js-monorepo-example (#7854)
- chore(deps): bump langsmith from 0.7.32 to 0.8.0 in /libs/cli (#7791)
- + 3 more
langgraph==1.2.21.2.2
📋 Changes
- chore(langgraph): bump version to 1.2.2 (#7914)
- fix(langgraph): assign stable IDs to id=None BaseMessages before DeltaChannel checkpoint writes (#7913)
- release(checkpoint): 4.1.1 (#7890)
langgraph-sdk==0.3.15sdk==0.3.15
📋 Changes
- release(checkpoint): 4.1.1 (#7890)
- release(sdk-py): 0.3.15 (#7891)
- fix(sdk-py): percent-encode caller-supplied identifiers in URL paths (#7893)
- release(langgraph): 1.2.1 (#7883)
- chore(deps): bump idna from 3.11 to 3.15 in /libs/sdk-py (#7863)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/sdk-py (#7764)
- chore(deps): bump langsmith from 0.7.31 to 0.8.0 in /libs/sdk-py (#7789)
- release: bump alpha packages to official versions (#7775)
- + 3 more
langgraph-checkpoint==4.1.1checkpoint==4.1.1
📋 Changes
- release(checkpoint): 4.1.1 (#7890)
- fix(checkpoint): restrict lc:2 envelope revival to default constructor (#7892)
- chore(deps): bump idna from 3.11 to 3.15 in /libs/checkpoint (#7860)
- chore(deps): bump langsmith from 0.7.31 to 0.8.0 in /libs/checkpoint (#7784)
langgraph==1.2.11.2.1
📋 Changes
- release(langgraph): 1.2.1 (#7883)
- feat(langgraph): add `before_builtins` opt-in for stream transformers (#7882)
- chore(deps): bump idna from 3.11 to 3.15 in /libs/langgraph (#7866)
- fix(langgraph): keep tool results out of v3 messages (#7838)
- chore(deps): bump langsmith from 0.7.31 to 0.8.0 in /libs/langgraph (#7788)
langgraph==1.2.01.2.0
📋 Changes
- release: bump alpha packages to official versions (#7775)
- feat(langgraph): durable error-handler resume across host crashes (#7773)
- feat(langgraph): add set_node_defaults() to StateGraph (#7747)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/langgraph (#7766)
- chore(deps): bump mistune from 3.2.0 to 3.2.1 in /libs/langgraph (#7733)
- chore(langgraph): bump langchain-core to 1.4.0 (#7767)
- feat(checkpoint): force delta channel snapshot after max supersteps since last snapshot (#7746)
- test(langgraph): de-flake heartbeat progress test (#7735)
- + 7 more
langgraph-prebuilt==1.1.0prebuilt==1.1.0
📋 Changes
- release: bump alpha packages to official versions (#7775)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/prebuilt (#7763)
- chore(langgraph): bump langchain-core to 1.4.0 (#7767)
- chore(deps): bump ty from 0.0.23 to 0.0.33 in /libs/sdk-py (#7666)
- feat(checkpoint-sqlite): override get_delta_channel_history with streaming walk (#7702)
- chore(deps-dev): bump the minor-and-patch group across 1 directory with 3 updates (#7698)
- release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
- release: alpha bump langgraph 1.2.0a6 (#7697)
langgraph-cli==0.4.26cli==0.4.26
📋 Changes
- release(cli): 0.4.26 (#7772)
- fix(cli): add support for prerelease api_versions (#7771)
- chore(deps): bump the uv group across 2 directories with 1 update (#7749)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/cli (#7765)
- chore(deps): bump langchain-core from 1.3.0 to 1.3.3 in /libs/cli (#7753)
langgraph-checkpoint-sqlite==3.1.0checkpointsqlite==3.1.0
📋 Changes
- release: bump alpha packages to official versions (#7775)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/checkpoint-sqlite (#7760)
- chore(deps): bump langchain-core from 1.2.28 to 1.3.3 in /libs/checkpoint-sqlite (#7751)
- chore: remove keepset helper (#7745)
- chore(langgraph): add guide/conformance for delta channel checkpointer (#7736)
langgraph-checkpoint-postgres==3.1.0checkpointpostgres==3.1.0
📋 Changes
- release: bump alpha packages to official versions (#7775)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/checkpoint-postgres (#7761)
- chore(deps): bump langchain-core from 1.3.2 to 1.3.3 in /libs/checkpoint-postgres (#7754)
- fix(checkpoint-postgres): add column aliases to seed-blob branch of delta stage-2 UNION ALL (#7728)
langgraph-checkpoint==4.1.0checkpoint==4.1.0
📋 Changes
- release: bump alpha packages to official versions (#7775)
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /libs/checkpoint (#7762)
- chore(deps): bump langchain-core from 1.3.2 to 1.3.3 in /libs/checkpoint (#7752)
- feat(checkpoint): force delta channel snapshot after max supersteps since last snapshot (#7746)
- fix(checkpoint): specify allowed_objects in Reviver (#7743)
- chore: remove keepset helper (#7745)
- chore(langgraph): add guide/conformance for delta channel checkpointer (#7736)
- docs(checkpoint): mark DeltaChannel and delta-history APIs as beta (#7732)
- + 3 more
langgraph-cli==0.4.25cli==0.4.25
📋 Changes
- release: bump cli version (#7734)
- feat(cli): support studio deploy (#7394)
- chore(deps): bump the minor-and-patch group in /libs/cli with 4 updates (#7674)
- chore(deps): bump the minor-and-patch group in /libs/cli/js-examples with 8 updates (#7673)
- chore(deps): bump the minor-and-patch group in /libs/cli/js-monorepo-example with 7 updates (#7671)
- chore: update x links to langchain_oss (#7645)
langgraph-sdk==0.3.14sdk==0.3.14
📋 Changes
- release(sdk-py): 0.3.14 (#7712)
- feat(sdk-py): add return_minimal to threads update (#7704)
- release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
- release: alpha bump langgraph 1.2.0a6 (#7697)
- release: alpha bump prebuilt 1.1.0a2, langgraph 1.2.0a5 (#7682)
- release: alpha bump prebuilt 1.1.0a1, langgraph 1.2.0a4 (#7679)
- feat(langgraph): dispatch stream_events(version='v3') on Pregel (#7677)
- release: alpha bump (a3) for langgraph, checkpoint, checkpoint-postgres (#7678)
- + 19 more
langgraph-checkpoint-sqlite==3.1.0a1checkpointsqlite==3.1.0a1
📋 Changes
- feat(checkpoint-sqlite): override get_delta_channel_history with streaming walk (#7702)
- release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
- feat: public get_writes_history saver API + delta cadence rework (#7699)
- chore(deps): bump the minor-and-patch group in /libs/checkpoint-sqlite with 2 updates (#7668)
- release: alpha bump (a3) for langgraph, checkpoint, checkpoint-postgres (#7678)
- release: alpha for timers (#7647)
- chore: update x links to langchain_oss (#7645)
- release(checkpoint): 4.0.3 (#7625)
- + 23 more
langgraph==1.2.0a71.2.0a7
📋 Changes
- release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
- feat: public get_writes_history saver API + delta cadence rework (#7699)
langgraph==1.2.0a61.2.0a6Pre-release
📦 `DeltaChannel` (beta)
- Use `snapshot_frequency=K` to write a full snapshot every K steps and bound read latency:
- ```python
- from typing import Annotated, Sequence
- from typing_extensions import TypedDict
- from langgraph.channels import DeltaChannel
- def list_reducer(messages: list[str], writes: Sequence[list[str]]) -> list[str]:
- return [*messages, *(item for write in writes for item in write)]
- class State(TypedDict):
- + 4 more
📦 Per-node timeouts
- ```python
- from langgraph.types import RetryPolicy, TimeoutPolicy
- builder.add_node(
- "call_model",
- call_model,
- timeout=TimeoutPolicy(run_timeout=120),
- retry_policy=RetryPolicy(max_attempts=3),
- )
- + 22 more
📦 Node-level error handlers
- ```python
- from langgraph.errors import NodeError
- from langgraph.types import Command, RetryPolicy
- def payment_error_handler(state: State, error: NodeError) -> Command:
- return Command(
- update={"status": f"compensated: {error.error}"},
- goto="finalize",
- )
- + 9 more
📦 Graceful shutdown
- ```python
- import signal
- from langgraph.runtime import RunControl
- from langgraph.errors import GraphDrained
- control = RunControl()
- signal.signal(signal.SIGTERM, lambda *_: control.request_drain("sigterm"))
- try:
- result = graph.invoke(inputs, config, control=control)
- + 8 more
✨ New event streaming API (beta)
- ```python
- run = graph.stream_events(input, version="v3")
- for state in run.values: # one snapshot per superstep
- print(state)
- print(run.output) # final state
- print(run.interrupted, run.interrupts)
- ```
- `run.output`, `run.interrupted`, and `run.interrupts` are populated regardless of which transformers are registered, so the "run to completion and read the result" path stays one line.
📦 Per-LLM streams with typed sub-projections
- ```python
- async for chat in graph.astream_events(input, version="v3").messages:
- async for token in chat.text:
- print(token, end="", flush=True)
- tool_calls = await chat.tool_calls.collect()
- final = await chat.output # finalized AIMessage
- ```
- This is the recommended path for token-level streaming to a UI in 1.2. Content-block streaming requires v3 end-to-end, including any inner graphs.
📦 Built-in projections
- | Projection | What it carries |
- | ------------------ | ----------------------------------------------------------------- |
- | `run.values` | full state snapshot per superstep (also drives `run.output` etc.) |
- | `run.messages` | one `ChatModelStream` per LLM call |
- | `run.lifecycle` | subgraph started / completed / failed payloads |
- | `run.subgraphs` | navigation handles for direct-child subgraphs |
- Other channels are opt-in — register them via `compile(transformers=[...])` or the call-site `transformers=` on `stream_events`:
- | Transformer | Adds |
- + 13 more
📦 Custom transformers
- ```python
- from typing import Any
- from langgraph.stream import StreamTransformer, StreamChannel
- class TokenCounter(StreamTransformer):
- """Surface per-call token usage for chat models at the run scope."""
- required_stream_modes = ("messages",)
- def __init__(self, scope: tuple[str, ...] = ()) -> None:
- super().__init__(scope)
- + 22 more
📦 Migration notes
- v3 is opt-in via `version="v3"`; `version="v1"` and `version="v2"` are unchanged.
- The protocol is in beta and may change before stabilization.
langgraph-checkpoint-postgres==3.1.0a4checkpointpostgres==3.1.0a4
📋 Changes
- release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
- feat: public get_writes_history saver API + delta cadence rework (#7699)
- chore(deps): bump the minor-and-patch group in /libs/checkpoint-postgres with 2 updates (#7665)
langgraph-checkpoint==4.1.0a4checkpoint==4.1.0a4
📋 Changes
- release: alpha bump (a4) for langgraph, checkpoint, checkpoint-postgres (#7701)
- feat: public get_writes_history saver API + delta cadence rework (#7699)
langgraph==1.2.0a51.2.0a5
📋 Changes
- release: alpha bump prebuilt 1.1.0a2, langgraph 1.2.0a5 (#7682)
- fix(langgraph): coerce dict/str writes in _messages_delta_reducer (#7680)
langgraph==1.2.0a41.2.0a4
📋 Changes
- release: alpha bump prebuilt 1.1.0a1, langgraph 1.2.0a4 (#7679)
langgraph==1.2.0a31.2.0a3
📋 Changes
- feat(langgraph): dispatch stream_events(version='v3') on Pregel (#7677)
- release: alpha bump (a3) for langgraph, checkpoint, checkpoint-postgres (#7678)
- chore(langgraph): use two phase read to avoid unnecessary data transport (#7660)
- fix(langgraph): make NodeTimeoutError retryable by default (#7659)
- fix(langgraph): arrival-ordered interleave for StreamChannel projections (#7643)
- feat(langgraph): add node-level error handlers (#7233)
- feat: allow graph to graceful shutdown/drain by request (#7274)
- release: alpha for timers (#7647)
- + 17 more
langgraph-prebuilt==1.1.0a2prebuilt==1.1.0a2
📋 Changes
- release: alpha bump prebuilt 1.1.0a2, langgraph 1.2.0a5 (#7682)
- fix(prebuilt): scope `ToolCallTransformer` projection to its own namespace (#7681)
