PAGES
← all tools
◆ UNCATEGORIZED

LangGraph

cli==0.4.32 open-source

Build resilient agents.

Summary

LangGraph is an open-source, MIT-licensed orchestration framework for building stateful, long-running agents, distributed as a Python library (with a JS/TS equivalent) that you install with pip and import directly into application code rather than run as a standalone service. It handles durable execution, letting agents persist through failures and resume where they left off, and supports human-in-the-loophuman-in-the-loopHuman in the loop, involving a person in an otherwise automated workflow. The person can review, approve, correct or supply information before work continues. steps for inspecting or modifying agent state mid-run, plus checkpointed state history and streaming APIs for observability. It's aimed at developers building agentic applications rather than end users, and the README points to Deep Agents as a higher-level package built on top of it for those wanting more scaffolding out of the box. Backed by LangChain, it has 320 contributors, over 1,700 commits in the past year, and a release 22 days ago, indicating active development.

Build resilient agents.

How LangGraph helps

Will an agent pick up where it left off after a crash or restart?

persists state through checkpoints and resumes execution from the last completed step rather than starting over

How do I let a person review or edit what an agent is about to do mid-task?

exposes the agent's current state for inspection and modification at any point during a run, so a human can interrupt before it continues

Can I see what an agent's nodes are doing while a long task is still running?

streams events from individual node executions as they happen, including tool calls and state updates, instead of only returning a final result

Which step in a multi-step agent run actually changed the state, and when?

records the write history for each thread so state transitions can be audited or replayed after the fact

What happens to the rest of an agent's work when one step throws an error?

lets individual nodes catch and handle their own errors so a failure doesn't automatically propagate and kill the whole graph

How much storage does a long-running agent's conversation history consume over time?

stores only the incremental change at each step rather than the full accumulated state, keeping checkpoint size from growing unbounded as a thread continues

all 110 features, with the evidence for each →

Languages

Not documented

Features

110 capabilities across 7 areas · 3 backed by code, an API document or a real run

Built from LangGraph's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What LangGraph offers you

  • Command-line interface17
  • Client SDKs4
  • JavaScript scripting support3
  • JSON data export2
  • Scheduled jobs2
  • Scripting language support2
  • Agent-based deployment1
  • Python scripting support1
  • SaaS deployment1
  • Self-hosted deployment1
Streaming and Remote Graph Execution 4 capabilities LangGraph provides multiple transport options and protocol controls for streaming the output of graph runs to remote callers. Users can tune how events are delivered, filtered, and identified across SSE and WebSocket connections.
v3 streaming protocol support shipped Enables remote graph runs to stream events using an updated protocol with typed events and more precise filtering options. 19 releases · 3 other sources · first seen Oct 2024

Also counts toward: Client SDKs

release 19 total

  • Adds v3 streaming primitives and SSE (Server-Sent Events) transport to the Python SDK (sdk-py). prebuilt==1.1.1 · Oct 2026 · source · release history
  • Adds typed return for v3 stream_events and supports native projections for more precise event filtering. 1.2.10 · Jul 2026 · source · release history
  • Adds typed return for v3 stream_events and native projections support. 1.2.10 · Jul 2026 · source · release history
  • Adds v3 streaming protocol support to RemoteGraph, enabling richer real-time output from remote graph execution. sdk==0.4.1 · Jun 2026 · source · release history
  • Enables v3 streaming protocol support in RemoteGraph, allowing remote graphs to leverage the latest streaming features. sdk==0.4.1 · Jun 2026 · source · release history
  • Adds v3 streaming primitives and SSE transport to the Python SDK, aligning the client with the updated server-side streaming protocol. 1.2.3 · Jun 2026 · source · release history

example

  • Stream both task-level and checkpoint events to observe exactly when each node runs and when state is persisted. async for chunk in graph.astream(inputs, stream_mode=["tasks", "checkpoints"]): print(chunk) 0.4.10 · Jun 2025 · source
  • Stream a remote LangGraph deployment using the messages-tuple format, now transparently supported by RemoteGraph. from langgraph.pregel.remote import RemoteGraph remote = RemoteGraph(graph_id="my-graph", url="https://my-deployment.example.com") for chunk in remote.stream({"messages": []},… 0.2.44 · Nov 2024 · source
  • Stream a remote subgraph from a parent graph, letting the parent's stream modes flow through to the RemoteGraph automatically. from langgraph.pregel.remote import RemoteGraph remote = RemoteGraph("my-remote-graph", url="http://localhost:8000") # When invoked as a subgraph, RemoteGraph now inherits and propagates # the parent… 0.2.42 · Oct 2024 · source
Streamed output projections shipped Lets callers narrow streamed output to specific views, such as messages or tool-call events, rather than receiving everything. 16 releases · 4 other sources · first seen Aug 2024

Also counts toward: Client SDKs

release 16 total

  • Adds messages and tool call projections to the Python SDK (sdk-py) for filtered views of streamed output. prebuilt==1.1.1 · Oct 2026 · source · release history
  • Adds interleave_projections capability via extracted stream decoders in the Python SDK, enabling finer control over streamed output projection. sdk==0.4.1 · Jun 2026 · source · release history
  • Wires RemoteGraph.interleave to sdk-py interleave_projections for interleaved stream output. 1.2.3 · Jun 2026 · source · release history
  • Adds messages and tool call projections to the Python SDK, enabling filtered views of streamed agent output. 1.2.3 · Jun 2026 · source · release history
  • Wires RemoteGraph.interleave_projections to the SDK's interleave_projections, allowing interleaved stream projection control from the client. 1.2.3 · Jun 2026 · source · release history
  • Extracts stream decoders into a reusable module and adds interleave_projections stream decoder. sdk==0.4.1 · Jun 2026 · source · release history

example

  • Use interleave_projections on a RemoteGraph to merge streamed message and tool-call events into a single ordered sequence. from langgraph.pregel.remote import RemoteGraph remote = RemoteGraph( "my-agent", url="https://my-deployment.example.com", ) async for chunk in remote.astream( {"messages": [{"role": "user",… 1.2.3 · Jun 2026 · source
  • Filter a joined run stream to only receive graph state values and debug events, reducing noise in long-running pipelines. async for chunk in client.runs.join_stream(thread_id, run_id, stream_mode=["values", "debug"]): print(chunk) sdk==0.1.57 · Mar 2025 · source
  • Filter a streaming run by passing query parameters directly on the stream call, avoiding manual URL construction. async for chunk in client.stream( assistant_id, thread_id, input=input_data, params={"my_filter": "value", "limit": 10}, ): print(chunk) sdk==0.1.43 · Dec 2024 · source
  • Emit structured intermediate results from a node (e.g. progress updates) that consumers can act on before the graph finishes. # Inside a node definition: def my_node(state, *, write): write({"status": "halfway done"}) return state # Consuming the stream: for chunk in graph.stream(inputs, stream_mode="custom"): print(chunk) 0.2.23 · Sep 2024 · source
WebSocket stream transport shipped Allows graph runs to be streamed over a persistent WebSocket connection as an alternative to HTTP server-sent events. 10 releases · 2 other sources · first seen Sep 2024

Also counts toward: Client SDKs

release 10 total

  • Adds WebSocket stream transports to the Python SDK (sdk-py) for streaming agent output over WebSocket connections.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ prebuilt==1.1.1 · Oct 2026 · source · release history
  • Adds WebSocket stream transport to the Python SDK (sdk-py) as an alternative to SSE. 1.2.3 · Jun 2026 · source · release history
  • Adds WebSocket stream transport to the Python SDK for persistent, low-latency streaming connections. 1.2.3 · Jun 2026 · source · release history
  • Adds WebSocket stream transport support, enabling lower-latency bidirectional streaming as an alternative to SSE. sdk==0.4.0 · May 2026 · source · release history
  • Adds WebSocket stream selection wiring so clients can choose between SSE and WebSocket transports. sdk==0.4.0 · May 2026 · source · release history
  • Adds a merge parameter to push_ui_message enabling incremental/partial updates to existing UI messages without replacing them wholesale. 0.4.1 · Apr 2025 · source · release history

example

  • Stream a remote graph run over WebSocket for low-latency, persistent connections instead of HTTP SSE. from langgraph_sdk import get_client client = get_client(url="https://my-deployment.example.com") async for chunk in client.runs.stream( thread_id, assistant_id, input={"messages": [{"role": "user",… 1.2.3 · Jun 2026 · source
  • Stream incremental prop updates to a UI message (e.g. progressively reveal content) instead of replacing the whole message on each update. from langgraph.graph.ui import push_ui_message # First emission creates the message push_ui_message("my-component", {"status": "loading"}, message_id="msg-1") # Subsequent call merges new props into… 0.4.1 · Apr 2025 · source
Wire-format field alignment in streaming protocol shipped Keeps the SDK's streaming event field names consistent with what is actually sent over the wire, reducing confusion when inspecting raw output. 1 release · first seen Jun 2026

release

  • The ProtocolEvent.eventId field is renamed to event_id to match the wire field 1.2.3 · Jun 2026 · source · release history
Deployment and Local Development 3 capabilities LangGraph covers the path from local testing to production deployment, including HTTPS support for dev servers and faster build pipelines. These capabilities reduce friction when moving a graph from a developer machine to a hosted environment.
Prebuild image support for deployment shipped Allows deployments to start from a pre-built Docker image, cutting the time needed to deploy a graph. 5 releases · 5 other sources · first seen Jul 2024

Also counts toward: Command-line interface

release

  • Adds --image-uri flag to langgraph deploy to deploy an already-pushed container image without rebuilding.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ cli==0.4.33 · Oct 2026 · source · release history
  • Adds --image-uri flag to the CLI for specifying a container image URI in self-hosted deployments.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ cli==0.4.32 · Sep 2026 · source · release history
  • Supports prebuild images for langgraph deploy, enabling faster deployments by skipping the image build step. cli==0.4.31 · Jul 2026 · source · release history
  • Supports prebuild images when running langgraph deploy, enabling faster deployments using pre-built Docker images. cli==0.4.31 · Jul 2026 · source · release history
  • New dockerfile CLI command generates a Dockerfile for the LangGraph API server, accepting a save path and configuration file for customization. cli==0.1.49 · Jul 2024 · source · release history

example

  • Deploy a container image you have already built and pushed to a registry, skipping the build step entirely. langgraph deploy --image-uri <your-registry>/my-agent:v1.2.3 cli==0.4.33 · Oct 2026 · source
  • Deploy a self-hosted LangGraph agent using a pre-built container image rather than building one locally. langgraph deploy --image-uri my-registry.example.com/my-agent:latest cli==0.4.32 · Sep 2026 · source
  • Deploy a self-hosted LangGraph instance using a custom container image specified by the new flag. langgraph deploy --image-uri my-custom-registry.io/langgraph-agent:v1.2 cli==0.4.32 · Sep 2026 · source
  • Deploy a previously built LangGraph image directly in CI without rebuilding — useful for promotion workflows where langgraph build already ran in an earlier stage. langgraph up --image my-custom-langgraph-image:latest cli==0.2.7 · Apr 2025 · source
  • Generate a ready-to-build Dockerfile from your LangGraph config so you can version-control or customize it before pushing to a registry. langgraph dockerfile --config langgraph.json --output Dockerfile cli==0.1.49 · Jul 2024 · source
TLS/HTTPS for local development server verified Lets the local development server run over HTTPS so it can be tested with clients that require secure connections. 4 releases · 5 other sources · first seen Jul 2024

Also counts toward: Command-line interface

release

  • Adds --certfile and cert key options to langgraph dev so the local development server can be served over HTTPS. cli==0.4.29 · Jun 2026 · source · release history
  • The dev command now accepts auth configuration, allowing Studio auth to be controlled at dev-server launch time. cli==0.1.62 · Dec 2024 · source · release history
  • Supports passing environment variables from the configuration file to the development server via a new env parameter. cli==0.1.58 · Nov 2024 · source · release history
  • Adds handle_tool_errors parameter (defaults to True) to ToolNode in langgraph.prebuilt.tool_node, returning a friendly error message instead of raising an exception when a tool fails, so agents can continue the conversation after tool errors. 0.1.6 · Jul 2024 · source · release history

command line

  • --ssl-keyfile — Path to an SSL key file for serving the development server over HTTPS. 1.2.5 · Jun 2026
  • --ssl-certfile — Path to an SSL certificate file for serving the development server over HTTPS. 1.2.5 · Jun 2026

example

  • Run the local dev server with TLS when your agent client or browser requires HTTPS endpoints during development. langgraph dev --certfile cert.pem --keyfile key.pem cli==0.4.29 · Jun 2026 · source
  • Pause the dev server at startup until your IDE debugger attaches, so you can set breakpoints before any graph code runs. langgraph dev --debug-port 5678 --wait-for-client cli==0.1.61 · Nov 2024 · source
  • Spin up a hot-reloading local LangGraph API server during development without launching a browser, binding to a custom port. langgraph dev --port 8123 --no-browser --config langgraph.json cli==0.1.55 · Nov 2024 · source
CLI–server API version negotiation shipped Lets the CLI work with a range of server API versions rather than being locked to one, reducing compatibility breakage during upgrades. 3 releases · first seen Jul 2024

Also counts toward: Command-line interface

release

  • Adds support for compatible API version ranges, enabling the CLI to negotiate compatibility with a range of server API versions rather than a single pinned version. cli==0.4.30 · Jun 2026 · source · release history
  • Adds context parameter support for remote graph API interactions. 1.1.2 · Mar 2026 · source · release history
  • Adds --debugger-base-url CLI option to specify a custom URL for the debugger to access the LangGraph API, overriding the default http://127.0.0.1:[PORT]; also sets VITE_STUDIO_LOCAL_GRAPH_URL in the debugger container when the option is used. cli==0.1.48 · Jul 2024 · source · release history
Automation and Scripted Workflows 1 capability The CLI can operate without human interaction and emit machine-readable output, making LangGraph usable inside scripts, pipelines, and CI systems. This area covers the interfaces through which LangGraph is driven programmatically rather than interactively.
CLI non-interactive and structured output modes verified Runs the CLI without prompts and outputs structured JSON lines so it can be called reliably from scripts and automated pipelines. 5 releases · 5 other sources · first seen Jun 2024

Also counts toward: Command-line interface, JSON data export

release

  • Adds optional deserializer parameter to PostgresStore and AsyncPostgresStore (via BasePostgresStore), enabling custom JSON deserialization when loading values from the database. checkpointpostgres==1.0.11 · Sep 2024 · source · release history
  • The store namespace representation in SharedValue changed from strings to tuples; any code relying on string namespaces will need to be updated. 0.2.29 · Sep 2024 · source · release history
  • Supports serializing objects that implement get_secret_value() in JsonPlusSerializer, enabling proper handling of secure/secret values during checkpoint serialization and deserialization. checkpoint==1.0.12 · Sep 2024 · source · release history
  • Supports serialization of pathlib.Path, re.Pattern, decimal.Decimal, deque, IPv4/IPv6 address types, date, time, and ZoneInfo in JsonPlusSerializer. checkpoint==1.0.3 · Aug 2024 · source · release history
  • The langgraph-api-path option has been removed from CLI commands. cli==0.1.45 · Jun 2024 · source · release history

docs

  • Low-level orchestration framework for building, managing, and deploying long-running, stateful AI agents.

command line

  • --no-input — Never prompt for input; fail with an error if a required value is missing. 1.2.0 · May 2026
  • --json — Emit structured JSON-lines to stdout instead of human-readable text. 1.2.0 · May 2026

example

  • Pipe deployment listings into jq or other tooling for scripted inspection of active deployments. langgraph deploy list --json cli==0.4.39 · Oct 2026 · source
  • Pipe deployment listener data into jq or other tooling by requesting JSON output from the CLI. langgraph deploy listeners list --json | jq '.[].name' cli==0.4.34 · Oct 2026 · source
Multi-Agent Graph Behaviour 1 capability LangGraph supports graphs where nodes spawn or coordinate with subagents, and provides controls over how those agents are identified during a run. These capabilities help users understand and manage what is happening across a graph with multiple active agents.
Subagent identity in multi-agent graphs shipped Lets subagents spawned by tool calls be given a name so they can be clearly identified within a multi-agent graph run. 4 releases · 1 other source · first seen Jul 2024

release

  • Names tool-dispatched subagents via lc_agent_name for clearer agent identification in multi-agent graphs. 1.2.3 · Jun 2026 · source · release history
  • Names tool-dispatched subagents via lc_agent_name, giving clearer identity to dynamically spawned subagents in multi-agent graphs. 1.2.3 · Jun 2026 · source · release history
  • Automatically attaches agent name to AIMessages generated by the ReAct agent for easier identification in multi-agent workflows. 0.2.70 · Feb 2025 · source · release history
  • Adds InjectedState annotation to automatically inject graph state into tool arguments inside ToolNode, so tools can access state fields without the model generating them. 0.1.10 · Jul 2024 · source · release history

example

  • Give a tool access to the current graph state (e.g., conversation history) without asking the LLM to supply it — useful for retrieval or policy tools that need context the model shouldn't fabricate. from typing import Annotated from langgraph.prebuilt.tool_node import InjectedState from langchain_core.tools import tool class AgentState(TypedDict): messages: list user_id: str @tool def… 0.1.10 · Jul 2024 · source
State Management and Checkpointing 1 capability LangGraph persists graph state through checkpoints and gives users control over which stored states are visible during a run. Filtering expired checkpoints prevents outdated state from affecting long-running workflows.
Expired checkpoint row filtering shipped Lets checkpoint reads skip expired rows so that stale saved state does not surface during long-running workflow execution. 10 releases · first seen Jul 2024

release 10 total

  • Adds omit_expired opt-in parameter to checkpoint and checkpoint-postgres read operations to skip expired rows, enabling cleaner state retrieval without stale data. checkpoint==4.2.0 · Aug 2026 · source · release history
  • Adds opt-in omit_expired parameter to checkpoint reads (supported in checkpoint and checkpoint-postgres) to skip expired rows, preventing stale state from surfacing in long-running workflows. checkpoint==4.2.0 · Aug 2026 · source · release history
  • Adds opt-in omit_expired parameter to checkpoint and checkpoint-postgres readers to skip expired rows when reading checkpoint history, reducing noise and improving read performance in long-running workflows. checkpoint==4.2.0 · Aug 2026 · source · release history
  • Adds opt-in omit_expired parameter to checkpoint read operations, allowing callers to skip expired rows and avoid processing stale state. checkpointpostgres==3.1.1 · Jul 2026 · source · release history
  • Adds opt-in omit_expired parameter to checkpoint reads, allowing callers to skip expired rows and avoid processing stale state. checkpointpostgres==3.1.1 · Jul 2026 · source · release history
  • Adds omit_expired opt-in parameter to checkpoint reads, allowing callers to skip expired rows instead of returning them. checkpointpostgres==3.1.1 · Jul 2026 · source · release history
Observability and Tracing 1 capability LangGraph allows tracing behaviour to be configured at the level of individual nodes rather than applied uniformly across a graph. This gives operators control over what is recorded, including the ability to reduce tracing on nodes that handle sensitive data.
Per-node trace policy shipped Lets users set tracing behaviour per node when registering it, so sensitive nodes can be excluded or treated differently from the rest of the graph. 8 releases · 4 other sources · first seen Jul 2024

release 8 total

  • Adds trace_policy parameter to add_node, letting callers control tracing behavior on a per-node basis. 1.2.11 · Aug 2026 · source · release history
  • Adds trace_policy parameter to add_node to control tracing behaviour on a per-node basis. 1.2.11 · Aug 2026 · source · release history
  • Removes tags from TracePolicy, simplifying the tracing configuration surface. 1.2.10 · Jul 2026 · source · release history
  • Exposes trace_policy parameter on add_node, letting callers set per-node tracing behavior directly when wiring the graph. 1.2.10 · Jul 2026 · source · release history
  • Exposes trace_policy parameter on add_node, enabling per-node control over tracing behaviour. 1.2.10 · Jul 2026 · source · release history
  • Drops tags from TracePolicy, narrowing the tracing configuration surface. 1.2.10 · Jul 2026 · source · release history

example

  • Suppress or customize tracing for a specific node without affecting the rest of the graph. graph.add_node("my_node", my_node_fn, trace_policy=<policy>) 1.2.11 · Aug 2026 · source
  • Attach a per-node trace policy at graph construction time to control which nodes are traced in production. graph.add_node('my_node', my_node_fn, trace_policy=TracePolicy(...)) 1.2.10 · Jul 2026 · source
  • Attach a trace_policy to a specific node to control how that node's execution is traced, without affecting the rest of the graph. graph.add_node('my_node', my_node_fn, trace_policy=TracePolicy(...)) 1.2.10 · Jul 2026 · source
  • Restrict tracing on a sensitive node by setting a custom trace policy at node registration time. graph.add_node("sensitive_step", sensitive_fn, trace_policy=my_trace_policy) 1.2.10 · Jul 2026 · source
Other 99 capabilities
Persistent key-value store API shipped Provides a `BaseStore` abstract base class with CRUD and search operations for persistent, namespaced key-value storage. 51 releases · 7 other sources · first seen Aug 2024

release 51 total

  • Improves type safety and docstrings for store auth in the Python SDK. sdk==0.3.8 · Feb 2026 · source · release history
  • Releases SqliteStore as a persistent key-value store backend with namespace search and list_namespaces supporting max_depth filtering. prebuilt==0.2.0 · May 2025 · source · release history
  • Adds optional headers parameter to all store operations on StoreClient and SyncStoreClient, including item storage, retrieval, and namespace management. sdk==0.1.59 · Mar 2025 · source · release history
  • Adds ttl parameter to PostgresStore and AsyncPostgresStore constructors to configure Time To Live behavior for store items. checkpointpostgres==2.0.17 · Mar 2025 · source · release history
  • Adds sweep_interval_minutes field to TTLConfig to schedule automatic periodic deletion of expired store items. checkpoint==2.0.20 · Mar 2025 · source · release history
  • Adds sweep_interval_minutes to TTLConfig, enabling the store to periodically delete expired items automatically; omitting it preserves the previous no-sweep behavior. cli==0.1.77 · Mar 2025 · source · release history

example 7 total

  • Expire store entries after 60 minutes and keep them alive as long as they're being read — useful for session-scoped memory that should age out when users go idle. from langgraph.config import StoreConfig, TTLConfig store_cfg = StoreConfig( ttl=TTLConfig( default_ttl=60, # minutes until a new item expires refresh_on_read=True, # reset the clock whenever the… cli==0.1.76 · Mar 2025 · source
  • Use integer or other non-string keys directly in store put/get calls without manually casting to str first. store.put(("namespace",), 42, {"value": "data"}) result = store.get(("namespace",), 42) checkpoint==2.0.18 · Mar 2025 · source
  • Use an IVFFlat index with a custom cluster count when you have a large embedding dataset and want to trade recall for speed. from langgraph.store.postgres.base import ANNIndexConfig, IVFFlatConfig index_config = ANNIndexConfig( kind="ivfflat", ann_index_config=IVFFlatConfig(nlist=256), ) checkpointpostgres==2.0.7 · Dec 2024 · source
  • Use comparison-operator filters alongside a semantic query to narrow store search results to recent, high-relevance items. results = await store.asearch( ("projects", "sec-team"), query="privilege escalation techniques", filter={"severity": {"$gt": 7}, "status": {"$eq": "open"}}, limit=10, ) for item in results:… checkpoint==2.0.7 · Nov 2024 · source
  • Configure a vector store with an embedding model in your LangGraph project config to enable semantic search over stored data. from langgraph_cli.config import IndexConfig, StoreConfig store = StoreConfig( index=IndexConfig( dims=1536, embed="openai:text-embedding-3-small", fields=["text", "description"], ) ) cli==0.1.60 · Nov 2024 · source
  • Search across a namespace prefix to find all items matching a filter — useful for multi-tenant or multi-session lookups. from langgraph.store.memory import InMemoryStore store = InMemoryStore() store.put(("sessions", "s1"), "summary", {"turns": 5}) store.put(("sessions", "s2"), "summary", {"turns": 12}) results =… checkpoint==1.0.13 · Sep 2024 · source
Checkpoint & state update operations shipped Enables batched, mid-execution, and source-tracked state updates alongside configurable checkpoint metadata management for fine-grained runtime control. 30 releases · 15 other sources · first seen Jul 2024

release 30 total

  • Adds prune to PostgresSaver and AsyncPostgresSaver to clean up old checkpoints stored in Postgres.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ checkpointpostgres==3.2.0 · Oct 2026 · source · release history
  • Adds durability argument with three modes — "exit", "async", and "sync" — giving fine-grained control over checkpoint persistence behavior. 0.6.0 · Jul 2025 · source · release history
  • Extends pipeline mode in checkpoint-postgres to use the same lock used in non-pipeline mode, improving consistency under concurrent writes. checkpointpostgres==2.0.22 · Jul 2025 · source · release history
  • Skips saving checkpoints for subgraphs when checkpoint_during=False, reducing unnecessary checkpoint overhead. 0.4.10 · Jun 2025 · source · release history
  • Implements update_state for the functional API, enabling state updates mid-graph in entrypoint-based workflows. 0.4.4 · May 2025 · source · release history
  • New langgraph.constants.CONFIG_KEY_THREAD_ID constant enables explicit tracking of thread IDs for current invocations in checkpointing and state management. 0.3.31 · Apr 2025 · source · release history

example 15 total

  • Use Overwrite on a state field when you want the latest value to always win instead of being merged by a reducer. from langgraph.types import Overwrite from typing import Annotated from typing_extensions import TypedDict class State(TypedDict): messages: Annotated[list, Overwrite()] # latest assignment replaces,… 1.0.2 · Oct 2025 · source
  • Disable mid-run checkpointing for a streaming run to reduce storage overhead when you only need a final checkpoint on completion or interruption. async for chunk in client.runs.stream( thread_id, assistant_id, input=input_data, checkpoint_during=False, ): print(chunk) sdk==0.1.66 · Apr 2025 · source
  • Purge all checkpoint data for a completed or abandoned thread to free storage and enforce data-retention policies. from langgraph.checkpoint.memory import InMemorySaver saver = InMemorySaver() # synchronous saver.delete_thread(thread_id="thread-abc123") # async await saver.adelete_thread(thread_id="thread-abc123") checkpoint==2.0.25 · Apr 2025 · source
  • Serialize and deserialize a None value in checkpoint state without errors — useful when graph state fields are legitimately null. from langgraph.checkpoint.serde.jsonplus import JsonPlusSerializer serde = JsonPlusSerializer() type_tag, data = serde.dumps_typed(None) # returns ("null", b"") value = serde.loads_typed((type_tag,… checkpoint==2.0.24 · Apr 2025 · source
  • Same workflow in an async context — use abulk_update_state inside an async agent loop to batch corrections without blocking. from langgraph.types import StateUpdate updates = [ StateUpdate(values={"approved": True}, as_node="approver"), StateUpdate(values={"notes": "LGTM"}, as_node="annotator"), ] await… 0.3.17 · Mar 2025 · source
  • Apply several state patches at once during human-in-the-loop correction instead of calling update_state repeatedly. from langgraph.types import StateUpdate # graph is a compiled Pregel graph, config identifies the thread updates = [ StateUpdate(values={"status": "reviewed"}, as_node="reviewer"),… 0.3.17 · Mar 2025 · source
Graph construction and execution optimization shipped Improves graph definition conciseness, execution loop performance, task scheduling efficiency, and tool error handling semantics. 28 releases · 11 other sources · first seen Jul 2024

release 28 total

  • Introduces alpha timer support for scheduling and time-based graph behaviors. prebuilt==1.0.13 · Apr 2026 · source · release history
  • Introduces alpha timer primitives for scheduling time-based graph behavior. 1.2.0a1 · Apr 2026 · source · release history
  • Adds Redis node-level cache via feat(langgraph): implement redis node level cache, enabling per-node result caching backed by Redis. prebuilt==0.6.5 · Oct 2025 · source · release history
  • New NodeBuilder utility provides a declarative way to create nodes and attach them to channels, replacing Channel.subscribe_to. 0.5.0 · Jun 2025 · source · release history
  • Checkpoints are leaner: redundant keys dropped, per-task writes stored directly, and legacy pending_sends data is auto-migrated on first load. 0.5.0 · Jun 2025 · source · release history
  • Optimizes stream_mode=values to emit chunks only when output channels have actually changed, reducing noise in high-frequency graphs. 0.4.6 · May 2025 · source · release history

example 11 total

  • Assign different retry policies per exception type on a node — e.g., retry rate-limit errors aggressively and network errors conservatively. from langgraph.types import RetryPolicy from langgraph.graph import StateGraph rate_limit_policy = RetryPolicy(retry_on=RateLimitError, max_attempts=5, backoff_factor=2.0) network_policy =… 0.3.28 · Apr 2025 · source
  • Attach a subgraph directly to a PregelNode without wrapping it in a bound runnable — useful when composing graphs programmatically. from langgraph.pregel.read import PregelNode child_graph = build_child_graph() # returns a compiled Pregel node = PregelNode( channels=["input"], triggers=["input"], mapper=None,… 0.3.19 · Mar 2025 · source
  • Explicitly declare that a callable node accepts the LangChain config, avoiding runtime parameter inspection overhead. from langgraph.utils.runnable import RunnableCallable def my_node(state, config): # config is available here return {"result": config["configurable"].get("user_id")} node = RunnableCallable(my_node,… 0.3.19 · Mar 2025 · source
  • Check whether a channel holds a value before reading it, avoiding try/except boilerplate in custom channel logic. if channel.is_available(): value = channel.get() 0.3.15 · Mar 2025 · source
  • Override how PregelRunner dispatches tasks — useful for integrating custom thread pools, tracing, or rate-limiting at the task level. from langgraph.constants import CONFIG_KEY_RUNNER_SUBMIT def my_submit(fn, *args, **kwargs): print(f"Submitting task: {fn.__name__}") return fn(*args, **kwargs) graph.invoke( {"messages": [{"role":… 0.2.74 · Feb 2025 · source
  • Declare destination nodes as a tuple when edge labels aren't needed, still enabling accurate graph visualization. graph.add_node("router", router_fn, destinations=("process", "fallback")) 0.2.71 · Feb 2025 · source
Agent configuration and execution controls shipped Provides finer control over agent inputs, model compatibility, resource cleanup on completion, and structured background task management. 18 releases · 6 other sources · first seen Jul 2024

release 18 total

  • Add a managed browser to an agent by exporting a browser from browser.py using define_browser from managed_deepagents, with scope set to 'thread' or 'user' and idle_ttl_seconds controlling the idle timeout.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ announced · Oct 2026 · source · release history
  • Supports enabling and disabling cron jobs via the crons client. sdk==0.3.4 · Feb 2026 · source · release history
  • Introduces a new context API as a cleaner replacement for config['configurable'] and config_schema patterns. prebuilt==0.6.0 · Jul 2025 · source · release history
  • Introduces new context API as a replacement for config['configurable'] and config_schema for passing configuration to graph nodes. cli==0.3.6 · Jul 2025 · source · release history
  • Supports passing a RunnableSequence as the model to create_react_agent, enabling prompt-chained pipelines to be used directly as the agent's LLM backbone. prebuilt==0.1.2 · Mar 2025 · source · release history
  • Adds CONFIG_KEY_RUNNER_SUBMIT configuration key, enabling custom task submission logic in PregelRunner for flexible execution control. 0.2.74 · Feb 2025 · source · release history

example

  • Give a Managed Deep Agent a per-thread browser with a 10-minute idle timeout so it can click through web UIs that have no API. # browser.py from managed_deepagents import define_browser browser = define_browser( scope="thread", idle_ttl_seconds=600, ) announced · Oct 2026 · source
  • Use a prompt-plus-model RunnableSequence as the agent's model so a fixed system prompt is baked into the chain rather than managed separately. from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent prompt = ChatPromptTemplate.from_messages([ ("system",… prebuilt==0.1.2 · Mar 2025 · source
  • Use a typed structured response from a ReAct agent instead of free-form text — useful when you need machine-readable output from an agent loop. from langgraph.prebuilt.chat_agent_executor import AgentStateWithStructuredResponse 0.2.75 · Feb 2025 · source
  • Use a non-BaseChatModel language model (any LanguageModelLike) directly with create_react_agent — useful when wrapping custom or third-party models. from langgraph.prebuilt import create_react_agent # model_like is any LanguageModelLike, not necessarily a BaseChatModel agent = create_react_agent(model=model_like, tools=[my_tool]) result =… 0.2.29 · Sep 2024 · source
  • Schedule a background run to execute 60 seconds in the future, e.g. for deferred processing after an external webhook. await client.runs.create(thread_id="thread_xyz", assistant_id="asst_abc123", after_seconds=60) sdk==0.1.31 · Sep 2024 · source
  • Use state_modifier to prepend a system prompt from the full agent state, giving you access to state fields beyond just messages. from langgraph.prebuilt import create_react_agent from langchain_openai import ChatOpenAI def modify_state(state): # state is the full graph state, not just messages return [{"role": "system",… 0.1.9 · Jul 2024 · source
API security customization shipped Adds configuration options for defining API security settings such as OAuth scopes and token endpoints. 14 releases · 7 other sources · first seen Dec 2024

Also counts toward: Command-line interface

release 14 total

  • Adds --allowed-scope to cap what later authorizations may request, and --authorize-url / --token-url to support OAuth providers outside the built-in catalog. announced · Sep 2026 · source · release history
  • Introduces a sentinel value to skip automatic API key loading when instantiating the SDK client, allowing explicit credential control. sdk==0.2.12 · Dec 2025 · source · release history
  • Adds options to disable specific API route groups (assistants, threads, runs, store) via HTTP configuration. cli==0.1.72 · Feb 2025 · source · release history
  • Enables auth path resolution in Docker environments via new _update_auth_path function, so auth handlers are correctly wired when deploying containers. cli==0.1.70 · Jan 2025 · source · release history
  • Supports auth configuration block in langgraph.json, with validation that auth.path follows the required ./path/to/file.py:attribute_name format. cli==0.1.70 · Jan 2025 · source · release history
  • Enables custom authorization handlers to branch on Studio vs. non-Studio users via isinstance(user, StudioUser) checks. sdk==0.1.48 · Dec 2024 · source · release history

example 7 total

  • Register a GitHub OAuth connection scoped to repo so the agent files issues under each caller's own GitHub identity rather than a shared service account. uv run mda connections create github-issues \ --oauth github \ --client-id "$GITHUB_CLIENT_ID" \ --secret-from-env GITHUB_CLIENT_SECRET \ --scope repo announced · Sep 2026 · source
  • Instantiate the SDK client without auto-loading the API key from the environment, supplying credentials explicitly instead. from langgraph_sdk import get_client, SKIP_LOAD_API_KEY client = get_client(url="http://localhost:8123", api_key=SKIP_LOAD_API_KEY) sdk==0.2.12 · Dec 2025 · source
  • Inject a per-request auth token when streaming a run, e.g. for short-lived credentials that differ from the client's default. async for chunk in client.runs.stream( thread_id="<thread_id>", assistant_id="<assistant_id>", headers={"Authorization": "Bearer <ephemeral_token>"} ): print(chunk) sdk==0.1.59 · Mar 2025 · source
  • Wire a custom auth handler into your LangGraph deployment so it is validated locally and resolved correctly inside the Docker container. { "graphs": { "my_agent": "./agent.py:graph" }, "auth": { "path": "./auth/handler.py:auth" } } cli==0.1.70 · Jan 2025 · source
  • Gate a resource to non-Studio users only — useful when you want to block Studio UI access to sensitive operations in production. from langgraph_sdk.auth.types import StudioUser def my_auth_handler(user, action, resource): if isinstance(user, StudioUser): raise PermissionError("Studio users cannot access this resource") return… sdk==0.1.48 · Dec 2024 · source
  • Protect all LangGraph resources with a global auth handler that validates a bearer token and returns user scopes. from langgraph_sdk import Auth auth = Auth() @auth.authenticate async def verify_token(token: str): # validate token and return user scopes user = await my_token_validator(token) return {"id":… sdk==0.1.45 · Dec 2024 · source
Human-in-the-loop configuration types shipped Provides structured type definitions and utilities for defining and handling human intervention points, including interrupt configs, action requests, and responses. 16 releases · 3 other sources · first seen Aug 2024

release 16 total

  • Adds response_schema parameter to the interrupt() method sdk==0.4.5 · Sep 2026 · source · release history
  • Adds response_schema parameter to interrupt() to declare the expected structure of a human response when pausing graph execution.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 1.2.12 · Sep 2026 · source · release history
  • Adds enforcement that prevents arbitrary graph resumes when multiple pending interrupts exist, ensuring interrupt handling is ordered and intentional. 0.6.8 · Sep 2025 · source · release history
  • Refines the Interrupt interface: adds id (unique identifier encoding namespace) and value attributes as the canonical surface. 0.6.0 · Jul 2025 · source · release history
  • Adds interrupts field to thread state, making interrupt information accessible when inspecting thread state. sdk==0.2.0 · Jul 2025 · source · release history
  • Introduces HumanInterruptNode for structured human-in-the-loop interruption handling in prebuilt agents. prebuilt==0.2.0 · May 2025 · source · release history

example

  • Enforce a specific JSON structure for data passed through an interruption point in a LangGraph workflow. interrupt( ..., response_schema={"type": "object", "properties": {"key": {"type": "string"}}} ) sdk==0.4.5 · Sep 2026 · source
  • Resume a specific interrupt by ID when multiple interrupts are pending in the same graph run, rather than sending a single resume value for all. graph.invoke(Command(resume={interrupt.interrupt_id: "approved"}), config) 0.4.0 · Apr 2025 · source
  • Handle multiple sequential interrupts inside one node reliably — the rewritten interrupt function tracks counts so each resume value is matched correctly. from langgraph.types import interrupt def my_node(state): first_answer = interrupt("Please provide your name") second_answer = interrupt("Please provide your role") return {"name": first_answer,… 0.2.55 · Dec 2024 · source
Serialization and state schema introspection shipped Offers utilities to inspect state schema defaults, integrate MessagePack serialization for faster throughput, and serialize storage items. 16 releases · 1 other source · first seen Aug 2024

release 16 total

  • Supports numpy array serialization in JsonPlusSerializer, enabling checkpoint storage of numpy arrays without manual conversion. checkpointpostgres==2.0.22 · Jul 2025 · source · release history
  • JsonPlusSerializer now natively handles NumPy arrays (including Fortran-ordered) without pickle fallback. 0.5.0 · Jun 2025 · source · release history
  • Supports NumPy array serialization in JsonPlusSerializer, enabling checkpoint storage of array-heavy state. checkpoint==2.1.0 · Jun 2025 · source · release history
  • Adds pickle fallback for pandas serialization, allowing DataFrames and Series to round-trip through the checkpoint layer. checkpoint==2.1.0 · Jun 2025 · source · release history
  • Adds pickle_fallback option to the JSON-plus serializer, enabling serialization of objects that are not natively JSON-serializable. checkpoint==2.0.26 · May 2025 · source · release history
  • Supports None values in JsonPlusSerializer via a new "null" type designation, enabling round-trip serialization of null checkpoint state fields. checkpoint==2.0.24 · Apr 2025 · source · release history

example

  • Inspect the default value for a field in a state schema, e.g. to check whether an optional field has a factory default before graph compilation. from langgraph.utils.fields import get_field_default from typing import Optional from pydantic import BaseModel class MyState(BaseModel): messages: list = [] user_id: Optional[str] = None default =… 0.2.17 · Sep 2024 · source
Runtime context access utilities shipped Provides helper functions to access runtime configuration, persistent store, and stream writers from within any node or task without explicit parameter passing. 10 releases · 6 other sources · first seen Aug 2024

release 10 total

  • Introduces context_schema argument on StateGraph as the successor to config_schema, enabling typed context definitions via dataclasses. 0.6.0 · Jul 2025 · source · release history
  • Adds a new Context API with Runtime[Context] parameter for type-safe, run-scoped context injection, replacing the config['configurable'] pattern. 0.6.0 · Jul 2025 · source · release history
  • The new context API replaces config['configurable'] and config_schema; existing code relying on these patterns will need to be migrated. cli==0.3.6 · Jul 2025 · source · release history
  • Adds no-op fallback in get_stream_writer so callers can safely invoke the stream writer even when none is configured. 0.2.74 · Feb 2025 · source · release history
  • Adds get_config(), get_store(), and get_stream_writer() utilities in the new langgraph.config module to access runtime context (config, store, and custom stream writer) from inside any node or task. 0.2.69 · Jan 2025 · source · release history
  • Adds optional store parameter support in ToolNode, enabling tools to access the LangGraph store without requiring it as a mandatory dependency. 0.2.69 · Jan 2025 · source · release history

example

  • Pass typed, run-scoped context (e.g. authenticated user ID and DB connection) to graph nodes without nesting values inside config['configurable']. from dataclasses import dataclass from langgraph.graph import StateGraph from langgraph.runtime import Runtime @dataclass class Context: user_id: str db_connection: str def node(state: State,… 0.6.0 · Jul 2025 · source
  • Access the current invocation's thread ID inside a node or custom checkpointer to correlate concurrent runs. from langgraph.constants import CONFIG_KEY_THREAD_ID def my_node(state, config): thread_id = config["configurable"].get(CONFIG_KEY_THREAD_ID) print(f"Running on thread: {thread_id}") return state 0.3.31 · Apr 2025 · source
  • Access the LangGraph store inside a node to read or write persistent data without passing it explicitly through the graph. from langgraph.config import get_store def enrich_node(state): store = get_store() record = store.get("threat-intel", state["ioc"]) state["intel"] = record.value if record else {} return state 0.2.69 · Jan 2025 · source
  • Give a ToolNode access to the store for lookups during tool execution without making it a required parameter. from langgraph.prebuilt import ToolNode from langgraph.store.memory import InMemoryStore store = InMemoryStore() tool_node = ToolNode(tools=[my_tool], store=store) 0.2.69 · Jan 2025 · source
  • Emit custom progress events from inside a node during streaming without threading store/config through function signatures. from langgraph.config import get_stream_writer def my_node(state): writer = get_stream_writer() writer({"status": "starting scan", "targets": state["targets"]}) # ... do work ... 0.2.69 · Jan 2025 · source
  • Give a tool direct access to the LangGraph store (e.g. to look up or persist memory) without surfacing the store parameter to the LLM. from typing import Annotated from langgraph.prebuilt.tool_node import InjectedStore from langgraph.store.base import BaseStore def save_note(note: str, store: Annotated[BaseStore, InjectedStore()])… 0.2.33 · Oct 2024 · source
Runtime command execution & routing shipped Introduces Command and GraphCommand objects to route execution to specific nodes, handle subgraph parent routing, and pass custom state updates mid-run. 11 releases · 4 other sources · first seen Nov 2024

release 11 total

  • Supports ParentCommand in RemoteGraph, enabling commands issued inside a remote graph to propagate up to the parent graph. 0.5.4 · Jul 2025 · source · release history
  • Enhances Command.update with automatic field extraction from type hints on dataclasses and typed objects. 0.2.67 · Jan 2025 · source · release history
  • Allows mixed Command and non-Command types in list commands, removing the requirement that all list items be Command objects. 0.2.63 · Jan 2025 · source · release history
  • Enables Command objects to be returned directly from LangChain tools via ToolOutputMixin compatibility and ToolNode support. 0.2.57 · Dec 2024 · source · release history
  • Enables goto field on Command to accept both string node names and Send objects, unifying send/goto into one API 0.2.55 · Dec 2024 · source · release history
  • Expands Command TypedDict's goto field to accept Send, str, or a sequence of either, enabling richer graph routing in command structures. sdk==0.1.43 · Dec 2024 · source · release history

example

  • Pass a custom non-dict value (e.g. a string or dataclass) through Command.update when routing between nodes — previously impossible without wrapping in a dict. from langgraph.types import Command # Now valid: update can be any type, including None or a plain string cmd = Command(goto="next_node", update="my_custom_payload") 0.2.60 · Dec 2024 · source
  • Return a Command from a tool to redirect graph control flow — now supported directly in ToolNode without extra wiring. from langchain_core.tools import tool from langgraph.types import Command @tool def escalate_to_human(reason: str) -> Command: """Escalate the conversation to a human agent.""" return… 0.2.57 · Dec 2024 · source
  • Route a command to multiple destinations using the expanded goto field that now accepts a sequence of Send objects or node-name strings. from langgraph.types import Command, Send cmd = Command(goto=[Send("node_a", {"x": 1}), "node_b"]) sdk==0.1.43 · Dec 2024 · source
  • Route to different nodes from within a single node function based on runtime state, without wiring separate conditional edges. from langgraph.types import Control def router_node(state: dict) -> Control: if state["score"] > 0.9: return Control(goto="high_confidence_node", update={"routed": True}) else: return… 0.2.45 · Nov 2024 · source
OAuth connection management shipped Provides CLI commands and SDK utilities to create, list, and resolve user-owned or agent-owned OAuth connections for MCP servers and other services, including support for catalog providers and static secrets. 11 releases · 2 other sources · first seen Mar 2025

Also counts toward: Command-line interface

release 11 total

  • Adds local-development resolution: agent-owned connections resolve from MDA_DEV_<SLUG> environment variables (hyphens uppercased to underscores) in .env; user-owned connections resolve the signed-in developer as a real principal under mda dev. announced · Sep 2026 · source · release history
  • Adds mda connections create <slug> --mcp <url> to create a user-owned OAuth connection to any MCP server that self-registers its OAuth client, requiring only the server URL. announced · Sep 2026 · source · release history
  • Adds mda connections create <slug> --secret-from-env <ENV_VAR> to store agent-owned static secrets in a LangSmith workspace, keeping credentials out of .env and build artifacts.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ announced · Sep 2026 · source · release history
  • Adds --authorize flag on mda connections create to pre-store a single shared OAuth grant for all callers (fourth ownership mode: deployment-level shared account). announced · Sep 2026 · source · release history
  • Adds mda connections create <slug> --oauth <catalog-service> --client-id --secret-from-env --scope to register user-owned OAuth connections from a 23-service catalog (including github) without writing authorization URLs, token URLs, or refresh logic. announced · Sep 2026 · source · release history
  • Adds mda connections create <slug> --secret-from-env <ENV_VAR> to store agent-owned static secrets in a LangSmith workspace, keeping credentials out of .env and build artifacts.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ announced · Sep 2026 · source · release history

example

  • Read a user-owned OAuth token at run time inside a tool — triggering an authorization interrupt automatically if the caller has not yet granted access. from managed_deepagents import connections access_token = await connections.get("github-issues", {"type": "user"}) announced · Sep 2026 · source
  • Store a Tavily API key as an agent-owned connection so every caller shares it without embedding it in the codebase or deployment config. uv run mda connections create tavily-agent --secret-from-env TAVILY_API_KEY announced · Sep 2026 · source
Graph construction & type validation shipped Enhances graph definition with improved schema inference for class methods, type-annotated routing declarations, and dependency validation. 11 releases · 2 other sources · first seen Jul 2024

release 11 total

  • Requires state_schema in StateGraph.__init__, enforcing explicit schema declaration at graph construction. 0.4.8 · Jun 2025 · source · release history
  • Extends StateGraph.add_conditional_edges with schema inference, improving type safety for branch routing. 0.3.6 · Mar 2025 · source · release history
  • Adds dependencies field validation to validate_config, ensuring dependency declarations are checked and included during config processing. cli==0.1.64 · Dec 2024 · source · release history
  • Adds get_enhanced_type_hints utility to extract type hints along with default values and descriptions, covering Pydantic models, TypedDict, and dataclasses. 0.2.58 · Dec 2024 · source · release history
  • Graph validation now only requires at least one edge from START; unreachable nodes no longer cause a validation error. 0.2.54 · Dec 2024 · source · release history
  • Nodes can now declare their potential destination nodes via type annotations on their return type, enabling static graph validation of routing paths. 0.2.45 · Nov 2024 · source · release history

example

  • Use create_model to build a Pydantic state schema that works across langchain-core versions when defining a StateGraph. from langgraph.utils.pydantic import create_model from langgraph.graph import StateGraph MyState = create_model('MyState', messages=(list, []), step=(int, 0)) graph = StateGraph(state_schema=MyState) 0.2.22 · Sep 2024 · source
  • Use a dataclass as a StateGraph schema so field defaults are automatically resolved without manual annotation workarounds. from dataclasses import dataclass, field from langgraph.graph import StateGraph @dataclass class AgentState: messages: list = field(default_factory=list) step: int = 0 graph = StateGraph(AgentState) 0.2.20 · Sep 2024 · source
Synchronous access to async checkpointers shipped Adds synchronous list, get_tuple, put, and put_writes methods to `AsyncPostgresSaver` and `AsyncSqliteSaver` for use in synchronous contexts. 10 releases · 2 other sources · first seen Aug 2024

release 10 total

  • Overrides get_delta_channel_history in the SQLite checkpoint backend with a streaming walk for more efficient history retrieval. 1.2.0 · May 2026 · source · release history
  • Checkpoint.writes and Checkpoint.pending_sends fields have been removed. 0.5.0 · Jun 2025 · source · release history
  • Supports passing a sequence of retry policies to StateGraph.add_node, langgraph.func.task, and Pregel, applying the first matching policy when an exception occurs. 0.3.28 · Apr 2025 · source · release history
  • Adds dependency-aware node scheduling: only nodes whose trigger channels were updated in the previous step are evaluated, reducing unnecessary work in large graphs. 0.3.19 · Mar 2025 · source · release history
  • The require_at_least_one_of parameter is removed from ChannelWrite; code that passes this parameter will break on upgrade. 0.3.10 · Mar 2025 · source · release history
  • Rewrites the task decorator to support both direct (@task) and parameterized (@task(...)) usage, with proper coroutine detection and wrapping for async functions. 0.2.61 · Jan 2025 · source · release history

example

  • Call AsyncSqliteSaver synchronously from a non-async context — useful when integrating with sync frameworks or threads that share an async event loop. from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver saver = AsyncSqliteSaver.from_conn_string("checkpoints.db") # Synchronous put now works without wrapping in asyncio.run()… checkpointsqlite==1.0.2 · Sep 2024 · source
  • Use AsyncPostgresSaver from a synchronous function — e.g. inside a Django view or a sync test — without spinning up a separate async runtime. from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver async def setup(): saver = await AsyncPostgresSaver.from_conn_string("postgresql://user:pass@localhost/db") return saver # In a… checkpointpostgres==1.0.6 · Sep 2024 · source
Deployment Dockerfile generation and Node.js support shipped Enables generation of version-controlled Dockerfiles for API servers and adds configuration validation support for Node.js project deployments. 11 releases · 1 other source · first seen Aug 2024

Also counts toward: Scripting language support

release 11 total

  • Adds a CLI argument to retain build dependencies (setuptools, pip, wheel) in the build output instead of pruning them. cli==0.3.4 · Jul 2025 · source · release history
  • Supports image_distro setting in the LangGraph config file for controlling the base image distribution used in Dockerfile generation. cli==0.2.11 · Jun 2025 · source · release history
  • Adds a warning when the image distro is not configured as Wolfi, nudging users toward the recommended distro. cli==0.2.11 · Jun 2025 · source · release history
  • Selects the appropriate Docker base image automatically based on project composition via new default_base_image logic. cli==0.2.2 · Apr 2025 · source · release history
  • Docker images now include LANGGRAPH_UI and LANGGRAPH_UI_CONFIG environment variables when UI is configured. cli==0.1.84 · Apr 2025 · source · release history
  • Docker image builds now automatically detect and install UI dependencies (npm, yarn, pnpm, bun) when UI is configured. cli==0.1.84 · Apr 2025 · source · release history

example

  • Pin a specific base image tag in your generated Dockerfile instead of relying on the auto-detected Python/Node.js version. { "_INTERNAL_docker_tag": "3.11-slim-bookworm" } cli==0.2.5 · Apr 2025 · source
LangSmith tracing controls shipped Allows enabling or disabling LangSmith tracing on a per-call basis and disabling it for specific runs to avoid logging sensitive payloads. 9 releases · 2 other sources · first seen Aug 2024

release 9 total

  • Routes LangSmith traces from thread streams, enabling trace visibility for streaming thread operations. sdk==0.4.4 · Aug 2026 · source · release history
  • Adds langsmith_tracing parameter to runs.create, runs.stream, and runs.wait to enable or disable LangSmith tracing on a per-call basis. sdk==0.3.13 · Apr 2026 · source · release history
  • Enhances the runtime with more execution information. 1.1.5 · Apr 2026 · source · release history
  • Adds trace_inputs parameter to RunnableSeq to customize how inputs are recorded in callbacks across invoke, ainvoke, stream, and astream. 0.2.66 · Jan 2025 · source · release history
  • Adds _explode_args_trace_inputs utility in langgraph.pregel.call to flatten function arguments in traces for improved debugging. 0.2.66 · Jan 2025 · source · release history
  • StreamMessagesHandler now respects TAG_NOSTREAM on chat model starts and TAG_HIDDEN on chain starts for fine-grained control over what gets streamed. 0.2.39 · Oct 2024 · source · release history

example

  • Disable LangSmith tracing for a specific run invocation to avoid logging sensitive payloads. result = await client.runs.create( thread_id=thread_id, assistant_id=assistant_id, input={"messages": [{"role": "user", "content": "hello"}]}, langsmith_tracing=False, ) sdk==0.3.13 · Apr 2026 · source
  • Customize how inputs appear in LangSmith / callback traces for a multi-step chain without changing runtime behaviour. from langgraph.utils.runnable import RunnableSeq seq = RunnableSeq( step_a, step_b, trace_inputs=lambda x: {"sanitized_input": x["query"]}, ) result = seq.invoke({"query": "explain RBAC",… 0.2.66 · Jan 2025 · source
Structured graph input validation shipped Enforces structured, validated inputs on compiled state graphs using Pydantic models to catch invalid payloads before execution. 8 releases · 3 other sources · first seen Jan 2025

release 8 total

  • Validates checkpointer type at compile time, catching misconfiguration before runtime. prebuilt==1.0.6 · Jan 2026 · source · release history
  • Validates checkpointer type at compile time, surfacing misconfigured checkpointers before runtime. 1.0.6 · Jan 2026 · source · release history
  • state_schema is now required in StateGraph.__init__; existing code that omits it will raise an error. 0.4.8 · Jun 2025 · source · release history
  • New SchemaCoercionMapper class provides cached schema coercion supporting Pydantic v1/v2, nested lists, dicts, tuples, and unions. 0.3.10 · Mar 2025 · source · release history
  • Adds NotProvided sentinel class and NOT_PROVIDED constant to distinguish between explicitly passing ttl=None and omitting a TTL value entirely. checkpoint==2.0.19 · Mar 2025 · source · release history
  • Adds input_model support to Pregel for validating graph inputs against Pydantic v1 and v2 models, using construct/model_construct respectively. 0.3.7 · Mar 2025 · source · release history

example

  • Define a typed graph with explicit input and output schemas using the new required state_schema and renamed schema parameters. from langgraph.graph import StateGraph graph = StateGraph( state_schema=MyState, input_schema=UserQuery, output_schema=AssistantResponse, ) 0.5.0 · Jun 2025 · source
  • Enforce structured, validated inputs on a compiled state graph by passing a Pydantic model as input_model so invalid payloads are caught before execution begins. from pydantic import BaseModel from langgraph.graph.state import StateGraph class MyInput(BaseModel): query: str max_results: int = 5 builder = StateGraph(MyInput) # ... add nodes and edges ... 0.3.7 · Mar 2025 · source
  • Enforce a typed config schema on a workflow so callers get validation errors when they pass unexpected config keys. from langgraph.func import entrypoint from pydantic import BaseModel class MyConfig(BaseModel): temperature: float = 0.7 max_tokens: int = 256 @entrypoint(config_schema=MyConfig) def… 0.2.64 · Jan 2025 · source
Thread management operations shipped Adds capabilities to delete entire threads and sort search results for both threads and assistants. 8 releases · 2 other sources · first seen Aug 2024

release 8 total

  • Includes pagination in assistants search responses. prebuilt==1.0.6 · Jan 2026 · source · release history
  • Introduces new type aliases AssistantSortBy, ThreadSortBy, and SortOrder for strongly-typed sort parameter hints across assistant and thread searches. sdk==0.1.65 · Apr 2025 · source · release history
  • Adds sort_by and sort_order parameters to Client.search for assistants, enabling sorting by assistant_id, graph_id, name, created_at, or updated_at in ascending or descending order. sdk==0.1.65 · Apr 2025 · source · release history
  • Adds delete_thread and adelete_thread methods to BaseCheckpointSaver and InMemorySaver for deleting all checkpoints and writes associated with a specific thread ID. checkpoint==2.0.25 · Apr 2025 · source · release history
  • Adds adelete_thread (async) and delete_thread (sync, with main-thread safety checks) to AsyncPostgresSaver for the same capability in async workflows. checkpointpostgres==2.0.20 · Apr 2025 · source · release history
  • Adds delete_thread method to PostgresSaver for complete removal of all checkpoints and writes tied to a specific thread ID. checkpointpostgres==2.0.20 · Apr 2025 · source · release history

example

  • Clear an entire conversation history in one step instead of removing messages one by one — useful when resetting context between sessions or tasks. from langgraph.graph.message import REMOVE_ALL_MESSAGES from langchain_core.messages import RemoveMessage # Pass this to your graph state update to discard all prior messages state_update =… 0.3.23 · Apr 2025 · source
  • Filter threads to only those whose state contains a specific value — useful for finding active conversations in a given topic or stage. threads = await client.threads.search(values={"topic": "billing", "status": "open"}) sdk==0.1.30 · Aug 2024 · source
LangGraph Cloud CLI deployment shipped Enables deploying, listing, deleting, and remotely building LangGraph Cloud applications directly from the command line. 6 releases · 3 other sources · first seen Aug 2024

Also counts toward: Command-line interface, SaaS deployment

release

  • Sends upload headers returned by the control plane when pushing artifacts, enabling authenticated or signed upload flows.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ cli==0.4.40 · Oct 2026 · source · release history
  • Adds --json flag to the langgraph deploy list command for machine-readable JSON output.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ cli==0.4.39 · Oct 2026 · source · release history
  • Adds remote build support to langgraph deploy in the CLI. 1.1.5 · Apr 2026 · source · release history
  • Adds langgraph deploy list subcommand to enumerate active deployments. cli==0.4.16 · Mar 2026 · source · release history
  • Adds langgraph deploy delete subcommand to remove a deployment. cli==0.4.16 · Mar 2026 · source · release history
  • Updates build, prepare, and deployment CLI commands to operate correctly against both Python and Node.js environments. cli==0.1.52 · Aug 2024 · source · release history

example

  • Delete a specific deployment to decommission a retired agent service. langgraph deploy delete <deployment-id> cli==0.4.16 · Mar 2026 · source
  • List all active deployments to audit or identify targets for cleanup. langgraph deploy list cli==0.4.16 · Mar 2026 · source
  • Deploy a LangGraph application to LangGraph Cloud without leaving the terminal. langgraph deploy cli==0.4.15 · Mar 2026 · source
Auto-cancelling streaming runs shipped Supports starting streaming runs that automatically cancel and clean up resources when the user closes the connection. 5 releases · 3 other sources · first seen Aug 2024

release

  • Enables durable error-handler resume so graph execution can recover across host crashes. 1.2.0 · May 2026 · source · release history
  • Adds cancel_on_disconnect parameter to the sync RunClient.join_stream, reaching feature parity with the async version. sdk==0.1.57 · Mar 2025 · source · release history
  • Enables method chaining on add_node, add_edge, add_sequence, add_conditional_edges, set_entry_point, set_conditional_entry_point, and set_finish_point via updated Self return types. 0.2.63 · Jan 2025 · source · release history
  • Adds cancel_on_disconnect parameter to RunsAPI.join_stream() to automatically cancel a run when the client disconnects from the stream. sdk==0.1.42 · Dec 2024 · source · release history
  • Adds on_disconnect parameter to stream() and wait() — set to "cancel" or "continue" to control what happens to a run when the client disconnects. sdk==0.1.29 · Aug 2024 · source · release history

example

  • Use cancel_on_disconnect in the sync client so a stalled run is automatically cancelled when your process disconnects. for chunk in client.runs.join_stream(thread_id, run_id, stream_mode=["values"], cancel_on_disconnect=True): print(chunk) sdk==0.1.57 · Mar 2025 · source
  • Stream a run and ensure it is automatically cancelled server-side if your client drops the connection, preventing orphaned background work. async for chunk in client.runs.join_stream(thread_id="<thread_id>", run_id="<run_id>", cancel_on_disconnect=True): print(chunk) sdk==0.1.42 · Dec 2024 · source
  • Start a streaming run that auto-cancels if the user closes the connection, and deletes resources once it completes — keeps infra clean in high-volume deployments. async for chunk in client.runs.stream( thread_id, assistant_id, input=input_data, on_disconnect="cancel", on_completion="delete", ): print(chunk) sdk==0.1.29 · Aug 2024 · source
Encrypted checkpoint storage shipped Supports AES encryption for checkpoints via environment variables or direct key supply, maintaining backward compatibility with unencrypted data. 5 releases · 3 other sources · first seen Aug 2024

release

  • Supports custom encryption at rest for checkpoint data. prebuilt==1.0.6 · Jan 2026 · source · release history
  • Factory method EncryptedSerializer.from_pycryptodome_aes enables AES-encrypted checkpoints via the pycryptodome library with minimal setup. checkpoint==2.0.21 · Mar 2025 · source · release history
  • Supports AES key supply via LANGGRAPH_AES_KEY environment variable or direct key passing, and is backward-compatible with existing unencrypted checkpoint data. checkpoint==2.0.21 · Mar 2025 · source · release history
  • New EncryptedSerializer class wraps any underlying serializer (defaults to JsonPlusSerializer) to transparently encrypt and decrypt checkpoint data. checkpoint==2.0.21 · Mar 2025 · source · release history
  • Introduces JsonPlusSerializer-backed _load_metadata and _dump_metadata methods for consistent, richer metadata serialization across sync and async savers. checkpointpostgres==1.0.1 · Aug 2024 · source · release history

example

  • Implement a custom cipher (e.g., a KMS-backed one) by conforming to CipherProtocol instead of using the built-in AES factory. from langgraph.checkpoint.serde.base import CipherProtocol from langgraph.checkpoint.serde.encrypted import EncryptedSerializer class MyKMSCipher(CipherProtocol): def encrypt(self, plaintext: bytes)… checkpoint==2.0.21 · Mar 2025 · source
  • Encrypt all checkpoint data at rest using AES — useful when storing sensitive agent state in a shared or cloud-backed checkpointer. from langgraph.checkpoint.serde.encrypted import EncryptedSerializer # Key can also be supplied via LANGGRAPH_AES_KEY env var serializer =… checkpoint==2.0.21 · Mar 2025 · source
  • Persist raw binary blobs (e.g. embeddings or serialised models) directly in checkpoint state — now round-trippable through JsonPlusSerializer. from langgraph.checkpoint.serde.jsonplus import JsonPlusSerializer serde = JsonPlusSerializer() type_tag, encoded = serde.dumps_typed(b"\x89PNG\r\n") restored = serde.loads_typed((type_tag, encoded))… checkpoint==1.0.1 · Aug 2024 · source
HTTP client custom headers shipped Adds an optional headers parameter to all HTTP methods on client classes for merging custom request headers. 6 releases · 2 other sources · first seen Aug 2024

release

  • Adds query-parameter support to the Python SDK client (feat(sdk-py): client qparams), allowing callers to pass arbitrary query parameters through SDK calls. prebuilt==0.6.5 · Oct 2025 · source · release history
  • Adds optional headers parameter to all methods on AssistantsClient and SyncAssistantsClient (including get, create, update, delete, search). sdk==0.1.59 · Mar 2025 · source · release history
  • Adds an optional headers parameter to all HTTP methods (get, post, put, patch, delete, stream) on HttpClient and SyncHttpClient, merging custom headers with existing request headers. sdk==0.1.59 · Mar 2025 · source · release history
  • Adds optional headers parameter to all thread-related methods on ThreadsClient and SyncThreadsClient, including state management, history, and creation. sdk==0.1.59 · Mar 2025 · source · release history
  • Adds optional headers parameter to all run methods on RunsClient and SyncRunsClient, covering create, stream, wait, and management operations. sdk==0.1.59 · Mar 2025 · source · release history
  • Adds a headers parameter to get_client for injecting custom HTTP headers into all API requests, with validation blocking reserved headers like x-api-key. sdk==0.1.28 · Aug 2024 · source · release history

example

  • Pass a correlation or tenant-tracking header on a per-run basis without modifying the global client config. run = await client.runs.create( thread_id="<thread_id>", assistant_id="<assistant_id>", headers={"X-Tenant-ID": "org-42", "X-Request-ID": "req-abc123"} ) sdk==0.1.59 · Mar 2025 · source
  • Attach a tenant ID or trace header to every SDK request when operating in a multi-tenant or instrumented environment. from langgraph_sdk import get_client client = get_client( url="https://your-langgraph-endpoint", headers={"x-tenant-id": "acme-corp", "x-trace-id": "abc123"}, ) sdk==0.1.28 · Aug 2024 · source
Standardized error codes shipped Introduces a structured enum of error codes and validation utilities for programmatic error handling. 7 releases · 1 other source · first seen Oct 2024

release 7 total

  • Centralizes all error classes under langgraph.errors; moves Send and Interrupt imports to langgraph.types. 0.6.0 · Jul 2025 · source · release history
  • Adds --wait-for-client flag to the dev command that, combined with --debug-port, pauses server startup until a debugger client connects. cli==0.1.61 · Nov 2024 · source · release history
  • Automatically adds the current working directory to Python's path when running the dev command, allowing seamless local module imports. cli==0.1.59 · Nov 2024 · source · release history
  • Enables the dev command to read the dependencies field from the config file and add those directories to Python's path automatically. cli==0.1.59 · Nov 2024 · source · release history
  • Adds --add-docker-compose flag to the dockerfile command, generating a docker-compose.yml, .env, and .dockerignore alongside the Dockerfile. cli==0.1.54 · Nov 2024 · source · release history
  • Adds INVALID_CHAT_HISTORY error code and _validate_chat_history function to catch mismatched tool call / tool response pairs in chat history before they reach the LLM. 0.2.44 · Nov 2024 · source · release history

example

  • Generate a full local-dev stack (Dockerfile + docker-compose.yml + .env + .dockerignore) in one shot so you can docker compose up right away. langgraph dockerfile --add-docker-compose langgraph.json cli==0.1.54 · Nov 2024 · source
Entrypoint function visualization shipped Exposes graph visualization capabilities for entrypoint functions, their dependent tasks, and nested subgraphs. 7 releases · 1 other source · first seen Jul 2024

release 7 total

  • Adds new langgraph.pregel.draw module with a draw_graph function that simulates execution to discover edges, correctly handling subgraphs and conditional edges. 0.3.32 · Apr 2025 · source · release history
  • Enables parallel traversal of subgraphs during async graph visualization via asyncio.gather(), speeding up rendering of complex graphs. 0.3.13 · Mar 2025 · source · release history
  • Tasks decorated with @task now carry a _is_pregel_task attribute, making them automatically discoverable for graph visualization. 0.2.65 · Jan 2025 · source · release history
  • New EntrypointPregel class exposes a get_graph() method to visualize entrypoint functions and their dependent tasks, including nested subgraphs via x-ray mode. 0.2.65 · Jan 2025 · source · release history
  • Improves RemoteGraph visualization by resolving meaningful node names from node data instead of falling back to an empty string. 0.2.44 · Nov 2024 · source · release history
  • Enhances get_graph with pre-computed subgraph resolution when using the xray parameter, enabling accurate visualization of complex nested graph structures. 0.2.16 · Sep 2024 · source · release history

example

  • Tag a node with metadata (e.g. owner or risk label) so it appears in graph visualisations and downstream tooling. graph.add_node("my_agent", my_runnable, metadata={"team": "red-team", "criticality": "high"}) 0.1.8 · Jul 2024 · source
Prebuilt agent APIs shipped suggested Provides high-level APIs for creating and executing LangGraph agents and tools via the langgraph-prebuilt package. 7 releases · first seen Jul 2024

Suggested capability: Model tool calling. This is our guess, not confirmed.

release 7 total

  • Inspect which tools a ToolNode exposes by reading tool names from graph node metadata.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ 1.2.19 · Oct 2026 · source · release history
  • Adds dynamic model support to create_react_agent, allowing the LLM to be swapped at runtime per invocation. prebuilt==0.6.0 · Jul 2025 · source · release history
  • Enables create_react_agent to accept plain Callable objects as tools, in addition to BaseTool instances. prebuilt==0.1.3 · Mar 2025 · source · release history
  • Adds support for langgraph-prebuilt v0.1.1, which provides high-level APIs for creating and executing LangGraph agents and tools. cli==0.1.74 · Feb 2025 · source · release history
  • Renames state_modifier parameter to prompt in create_react_agent, with full backward compatibility retained. 0.2.68 · Jan 2025 · source · release history
  • Enables create_react_agent to accept an empty tools list, producing a simple LLM-only graph without tool-calling plumbing. 0.2.54 · Dec 2024 · source · release history
Configurable checkpoint during execution shipped Allows controlling whether to checkpoint after every step or only at run end via new parameters. 6 releases · 1 other source · first seen Apr 2025

release

  • Adds forced delta channel snapshot after a configurable maximum number of supersteps since the last snapshot, preventing unbounded checkpoint gaps. checkpoint==4.1.0 · May 2026 · source · release history
  • Forces a delta channel snapshot after a configurable max number of supersteps since the last snapshot, preventing unbounded replay. 1.2.0 · May 2026 · source · release history
  • Reworks delta cadence logic for checkpoint writes, enabling finer-grained control over how incremental state changes are persisted. checkpointpostgres==3.1.0a4 · May 2026 · source · release history
  • Adds durability mode parameter to invoke and ainvoke for controlling checkpoint persistence behavior. 0.6.3 · Aug 2025 · source · release history
  • Adds optional checkpoint_during: Optional[bool] parameter to stream, create, wait, and create_for_thread client methods, letting callers control whether checkpoints are written during graph execution or only at the end/interruption. sdk==0.1.66 · Apr 2025 · source · release history
  • Adds checkpoint_during parameter to stream(), astream(), invoke(), and ainvoke() — set to False to checkpoint only at run end, reducing overhead in large graphs. 0.3.27 · Apr 2025 · source · release history

example

  • Control whether LangGraph persists checkpoints during a synchronous graph run — useful when you want to skip persistence overhead for ephemeral, fire-and-forget invocations. graph.invoke(input, durability="ephemeral") 0.6.3 · Aug 2025 · source
Agent state Pydantic models shipped Provides predefined Pydantic models for representing agent state, including messages and structured responses. 4 releases · 3 other sources · first seen Jul 2024

release

  • Automatic output coercion to Pydantic models or dataclasses when the graph's state schema is declared as one — no manual parsing needed. 1.1.0 · Mar 2026 · source · release history
  • Adds AgentStatePydantic and AgentStateWithStructuredResponsePydantic Pydantic models for representing agent state with messages, remaining steps, and structured responses. prebuilt==0.1.3 · Mar 2025 · source · release history
  • Supports both TypedDict and Pydantic models interchangeably for agent state schema via updated StateSchemaType. prebuilt==0.1.3 · Mar 2025 · source · release history
  • Adds AgentStateWithStructuredResponse class to support structured responses in the ReAct agent executor. 0.2.75 · Feb 2025 · source · release history

example

  • When your state is a Pydantic model, confirm the output is already coerced to the right type — no manual MyState(**result) call needed. from pydantic import BaseModel from langgraph.graph import StateGraph class MyState(BaseModel): answer: str count: int compiled = StateGraph(MyState).compile() # ... 1.1.0 · Mar 2026 · source
  • Use a Pydantic model as your graph state so ToolNode can extract typed fields directly — no dict conversion needed. from pydantic import BaseModel from langgraph.prebuilt import ToolNode from langchain_core.tools import tool class AgentState(BaseModel): messages: list user_id: str @tool def lookup_user(user_id:… 0.2.19 · Sep 2024 · source
  • Define a custom state schema with extra fields so the agent graph carries domain-specific context alongside messages. from typing import TypedDict, Annotated from langgraph.prebuilt import create_react_agent from langchain_openai import ChatOpenAI import operator class MyAgentState(TypedDict): messages:… 0.1.9 · Jul 2024 · source
Local graph testing server shipped Provides a `langgraph test` subcommand that starts a local server to validate graph compatibility with the API before deployment. 4 releases · 3 other sources · first seen Jun 2024

Also counts toward: Command-line interface

release

  • Python 3.9 is no longer supported; setups running langgraph-checkpoint-postgres on Python 3.9 will break on upgrade. checkpointpostgres==3.0.0 · Oct 2025 · source · release history
  • Adds --allow-blocking flag to the dev command, allowing the server to run without raising errors when synchronous I/O blocking operations are detected. cli==0.1.82 · Apr 2025 · source · release history
  • Upgrades the bundled PostgreSQL Docker image to pgvector/pgvector:pg16, enabling vector operations in local dev environments. cli==0.1.69 · Jan 2025 · source · release history
  • Adds langgraph test subcommand to start a local test server that validates graph compatibility with the LangGraph API server before deploying to LangGraph Cloud. cli==0.1.45 · Jun 2024 · source · release history

example

  • Expose your local LangGraph dev server publicly so remote teammates or browser-based frontends can reach it without localhost blocking. langgraph dev --tunnel cli==0.2.6 · Apr 2025 · source
  • Run the dev server with a graph that intentionally uses blocking I/O (e.g., a synchronous HTTP client or file read) without the server aborting on detection. langgraph dev --allow-blocking cli==0.1.82 · Apr 2025 · source
  • Point the LangGraph debugger at a remotely accessible API URL so teammates on other machines can use the Studio UI against your local server. langgraph dev --debugger-base-url https://my-dev-server.example.com:8123 cli==0.1.48 · Jul 2024 · source
Shallow checkpoint storage shipped Provides a checkpoint saver implementation that stores only the most recent state to reduce storage requirements. 7 releases · first seen Aug 2024

release 7 total

  • The postgres shallow checkpointer has been removed; setups using it must migrate to another checkpointer. 0.4.8 · Jun 2025 · source · release history
  • Adds AsyncShallowPostgresSaver, the async counterpart to ShallowPostgresSaver, with the same lightweight storage semantics and a full async interface. checkpointpostgres==2.0.9 · Dec 2024 · source · release history
  • Adds ShallowPostgresSaver, a drop-in replacement for PostgresSaver that stores only the most recent checkpoint, reducing storage when time travel is not needed. checkpointpostgres==2.0.9 · Dec 2024 · source · release history
  • Adds ConnectionPool support to PostgresSaver, enabling psycopg connection pool usage alongside direct connections for high-concurrency scenarios. checkpointpostgres==1.0.4 · Aug 2024 · source · release history
  • Adds versioned database migrations (MIGRATIONS list) for both PostgresSaver and AsyncPostgresSaver, replacing one-shot static table creation. checkpointpostgres==1.0.1 · Aug 2024 · source · release history
  • New langgraph-checkpoint-postgres package open-sources the production-grade PostgresSaver previously available only in LangGraph Cloud. 0.2.0 · Aug 2024 · source · release history
Developer utilities & type inference shipped Provides improved type annotations, schema introspection helpers, and Pydantic compatibility checks to streamline SDK usage and IDE autocompletion. 5 releases · 2 other sources · first seen Jan 2025

release

  • Drops Pydantic V1 support — SchemaCoercionMapper and langgraph.utils.pydantic now exclusively use Pydantic V2 APIs. 0.4.1 · Apr 2025 · source · release history
  • Extends get_input_schema to prioritize the input_model when available, surfacing typed input schemas for state graphs. 0.3.7 · Mar 2025 · source · release history
  • Improves type annotations on the task decorator to consistently prioritize async functions in Union types. 0.3.6 · Mar 2025 · source · release history
  • Expands task decorator function signature to accept *args and **kwargs and adds overloads for better IDE type inference. 0.2.61 · Jan 2025 · source · release history
  • Enables add_messages as a partial function when called without arguments, improving flexibility in type annotations. 0.2.61 · Jan 2025 · source · release history

example

  • Reference the now-public PLACEHOLDER constant when building custom batch queries against the Postgres store. from langgraph.store.postgres.base import PLACEHOLDER checkpointpostgres==2.0.16 · Mar 2025 · source
  • Check whether a custom config type will be handled natively by Pydantic before wiring it into a Pregel graph. from langgraph.utils.pydantic import is_supported_by_pydantic from typing import TypedDict class MyConfig(TypedDict): temperature: float max_tokens: int if is_supported_by_pydantic(MyConfig):… 0.3.4 · Mar 2025 · source
UI message streaming updates shipped Allows pushing incremental or merged updates to UI messages during graph execution, enabling progressive content revelation without full replacements. 3 releases · 4 other sources · first seen Sep 2024

release

  • Adds a merge parameter to push_ui_message enabling incremental/partial updates to existing UI messages without replacing them wholesale. 0.4.1 · Apr 2025 · source · release history
  • New UIMessage TypedDict represents UI component updates with properties and metadata during graph execution. 0.3.25 · Apr 2025 · source · release history
  • Enhances StreamMessagesHandler to track message IDs nested within input dictionaries for proper deduplication. 0.2.75 · Feb 2025 · source · release history

example

  • Stream incremental prop updates to a UI message (e.g. progressively reveal content) instead of replacing the whole message on each update. from langgraph.graph.ui import push_ui_message # First emission creates the message push_ui_message("my-component", {"status": "loading"}, message_id="msg-1") # Subsequent call merges new props into… 0.4.1 · Apr 2025 · source
  • Stream UI component updates to a frontend during graph execution — e.g. show a progress card that is later replaced. from langgraph.graph.ui import push_ui_message, delete_ui_message, ui_message_reducer # Inside a graph node: def my_node(state): msg = push_ui_message("progress-card", {"status": "running", "step":… 0.3.25 · Apr 2025 · source
  • Wire ui_message_reducer into a typed state so your graph automatically merges UI additions and removals across nodes. from typing import Annotated from langgraph.graph.ui import AnyUIMessage, ui_message_reducer from typing_extensions import TypedDict class GraphState(TypedDict): ui: Annotated[list[AnyUIMessage],… 0.3.25 · Apr 2025 · source
  • Surface LLM tokens as they are generated so a UI can display streamed responses without waiting for the full reply. for chunk in graph.stream(inputs, stream_mode="messages"): print(chunk) 0.2.23 · Sep 2024 · source
Task-specific checkpoint writes shipped Allows storing task-specific writes mid-execution via `put_writes` and `aput_writes` methods in checkpointers. 7 releases · first seen Jul 2024

release 7 total

  • The return_exception parameter is removed from read_channel() in langgraph.pregel.io; code passing that argument will break. 0.3.15 · Mar 2025 · source · release history
  • Adds optional task_path parameter to AsyncSqliteSaver.put_writes() and AsyncSqliteSaver.aput_writes() for async task traceability. checkpointsqlite==2.0.3 · Jan 2025 · source · release history
  • Adds task_path parameter to put_writes and aput_writes on BaseCheckpointSaver and InMemorySaver to track the nested path of tasks creating checkpoint writes. checkpoint==2.0.10 · Jan 2025 · source · release history
  • Adds task_path parameter to put_writes() and aput_writes() on all saver classes (PostgresSaver, AsyncPostgresSaver, ShallowPostgresSaver, AsyncShallowPostgresSaver) to tag checkpoint writes with their originating task path. checkpointpostgres==2.0.12 · Jan 2025 · source · release history
  • Adds new INSERT_CHECKPOINT_WRITES_SQL constant enabling insert-only checkpoint write operations alongside the existing upsert path. checkpointpostgres==1.0.7 · Sep 2024 · source · release history
  • Extends BaseCheckpointSaver.put and aput with a new new_versions: ChannelVersions parameter exposing channel version info at write time. checkpoint==1.0.1 · Aug 2024 · source · release history
Nested subgraph discovery shipped Expands `get_subgraphs` to discover nested Pregel instances within `RunnableSequence`, `RunnableLambda`, and `RunnableCallable` dependencies. 5 releases · 2 other sources · first seen Sep 2024

release

  • Adds name parameter to Graph.compile(), StateGraph.compile(), and create_react_agent() to identify graphs when used as subgraphs. 0.2.70 · Feb 2025 · source · release history
  • Introduces find_subgraph_pregel utility to recursively locate Pregel subgraphs within runnable components — useful for checkpoint handling and graph introspection. 0.2.35 · Oct 2024 · source · release history
  • Automatically excludes subgraphs with checkpointing disabled (checkpointer is False) from subgraph enumeration. 0.2.27 · Sep 2024 · source · release history
  • Adds optional namespace parameter to get_subgraphs and aget_subgraphs for filtering subgraphs by name, improving performance in nested-subgraph graphs. 0.2.27 · Sep 2024 · source · release history
  • Expands get_subgraphs to discover nested Pregel instances inside RunnableSequence steps, RunnableLambda dependencies, and RunnableCallable function nonlocals. 0.2.16 · Sep 2024 · source · release history

example

  • Inspect a compiled runnable to find whether it contains a Pregel subgraph, useful before attaching a checkpointer to a nested graph. from langgraph.pregel.utils import find_subgraph_pregel subgraph = find_subgraph_pregel(my_runnable) if subgraph: print("Found Pregel subgraph:", subgraph) 0.2.35 · Oct 2024 · source
  • Retrieve only the subgraph matching a specific namespace when inspecting a deeply nested graph, avoiding a full traversal. subgraphs = list(graph.get_subgraphs(namespace="my_agent")) 0.2.27 · Sep 2024 · source
Customizable graph entrypoints shipped Updates the entrypoint decorator to return specific instance types and enforces non-generator functions for improved type safety. 6 releases · 1 other source · first seen Dec 2024

release

  • Generators are no longer supported in the Functional API (@entrypoint); any entrypoint using a generator function will break on upgrade. 0.2.68 · Jan 2025 · source · release history
  • Adds get_runnable_for_entrypoint and get_runnable_for_task functions in langgraph.pregel.call for targeted handling of distinct execution contexts. 0.2.66 · Jan 2025 · source · release history
  • The entrypoint decorator now returns an EntrypointPregel instance instead of a Pregel instance; code that type-checks or depends on the exact return type being Pregel will break. 0.2.65 · Jan 2025 · source · release history
  • Adds automatic input/output type detection from function signatures in the entrypoint decorator, removing the need for manual type annotation wiring. 0.2.64 · Jan 2025 · source · release history
  • Adds support for an optional previous parameter in entrypoint-decorated functions to access the prior return value in stateful Pregel graphs. 0.2.64 · Jan 2025 · source · release history
  • Adds @entrypoint decorator (langgraph.func.entrypoint) to wrap regular or generator functions into Pregel graphs as callable entry points. 0.2.57 · Dec 2024 · source · release history

example

  • Wrap an async function as a LangGraph task using the decorator directly without parentheses — useful for fire-and-forget subtasks in a functional graph. from langgraph.func import task @task async def fetch_data(url: str, timeout: int = 30) -> dict: # async I/O here ... 0.2.61 · Jan 2025 · source
Custom container image support for deployments verified Allows specifying a custom container image URI for self-hosted LangGraph deployments. 4 releases · 2 other sources · first seen Apr 2025

Also counts toward: Command-line interface, Self-hosted deployment

release

  • Adds --image-pull-secret flag to the CLI deploy command to support pulling images from private container registries.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ cli==0.4.35 · Oct 2026 · source · release history
  • Automatically logs in to the registry using the username returned by the control plane, removing the need to supply credentials manually. cli==0.4.35 · Oct 2026 · source · release history
  • Adds --image-uri flag to control the container image for self-hosted LangGraph deployments cli==0.4.32 · Sep 2026 · source · release history
  • Adds --image option to langgraph up to specify a pre-built Docker image for the langgraph-api service, skipping the build process entirely. cli==0.2.7 · Apr 2025 · source · release history

command line

  • --image-pull-secret — Name of a Kubernetes secret (type kubernetes.io/dockerconfigjson) in the deployment's namespace to use for pulling the image from a private registry. Repeat to give more than one. Only used when creating a deployment with --push-to or --image-uri. 1.2.16 · Oct 2026

example

  • Deploy a LangGraph agent using an image stored in a private container registry by passing the pull secret. langgraph deploy --image-pull-secret <your-registry-secret> cli==0.4.35 · Oct 2026 · source
Type-safe v2 API shipped Introduces a version 2 API for graph execution methods that provides fully type-safe outputs, including discriminated union types for streaming parts and structured return objects. 6 releases · first seen Aug 2024

release

  • Adds decrypt as a new replacement result type in the SDK sdk==0.4.3 · Aug 2026 · source · release history
  • Adds decrypt replacement result support to the Python SDK. sdk==0.4.3 · Aug 2026 · source · release history
  • Adds output, values, and controller extraction from stream lifecycle state. sdk==0.4.0 · May 2026 · source · release history
  • Adds version="v2" opt-in to invoke(), ainvoke(), stream(), and astream() for fully type-safe outputs. 1.1.0 · Mar 2026 · source · release history
  • Adds type-safe stream/invoke calls with proper output type coercion, enabling strongly-typed responses from graph runs sdk==0.3.10 · Mar 2026 · source · release history
  • Introduces ChannelVersions type alias (dict[str, Union[str, int, float]]) for type-safe channel version handling. checkpoint==1.0.1 · Aug 2024 · source · release history
Store TTL & cache management shipped Manages data expiration and refresh by supporting session tokens, read-through TTL sliding, global default TTL, and background sweeping. 1 release · 5 other sources · first seen Mar 2025

release

  • Adds expires_at and ttl_minutes columns plus an index on expires_at to the store table via new database migrations. checkpointpostgres==2.0.17 · Mar 2025 · source · release history

example

  • Enable background TTL sweeping so expired store entries are deleted automatically every N minutes without manual intervention. from langgraph.store.base import TTLConfig ttl_config = TTLConfig( sweep_interval_minutes=30 ) checkpoint==2.0.20 · Mar 2025 · source
  • Automatically expire agent memory store entries after 60 minutes, with a background sweeper running every 30 seconds. from langgraph.store.postgres import PostgresStore store = PostgresStore.from_conn_string( "postgresql://user:pass@localhost/mydb", ttl={"default_ttl": 60, "sweep_interval_minutes": 0.5}, )… checkpointpostgres==2.0.17 · Mar 2025 · source
  • Set a store-wide default TTL and enable automatic TTL refresh on reads so cached items stay alive while actively used. from langgraph.store.base import TTLConfig # When constructing your store implementation store = MyStore( ttl_config=TTLConfig( default_ttl=60, # minutes; applied to put/aput when no TTL is specified… checkpoint==2.0.19 · Mar 2025 · source
  • Store a short-lived session token that auto-expires after 30 minutes, so stale credentials are never returned. await client.store.put_item(namespace, key="session:user123", value={"token": "abc"}, ttl=30) sdk==0.1.55 · Mar 2025 · source
  • Retrieve a cached item and slide its expiration window forward so active users stay authenticated without a re-login. item = await client.store.get_item(namespace, key="session:user123", refresh_ttl=True) sdk==0.1.55 · Mar 2025 · source
Managed value context integration shipped Integrates `Context` into the managed value system and adds methods for handling runtime placeholders during serialization. 4 releases · 2 other sources · first seen Aug 2024

release

  • Reimplements Context as a managed value (langgraph.managed.context.ContextManagedValue) with runtime=True, integrating it with the managed value system instead of the channel system. 0.2.13 · Aug 2024 · source · release history
  • Adds replace_runtime_values and replace_runtime_placeholders methods to ManagedValueMapping for safe handling of runtime placeholders during graph serialization. 0.2.13 · Aug 2024 · source · release history
  • New utility functions is_readonly_managed_value and is_writable_managed_value allow runtime inspection of managed value types. 0.2.7 · Aug 2024 · source · release history
  • New WritableManagedValue abstract class extends the managed values system with update() and aupdate() methods for sync/async mutations. 0.2.7 · Aug 2024 · source · release history

example

  • Use Branch.from_path to build a conditional edge with automatic input schema inference, so the router function only receives the fields it declares rather than the full graph state. from langgraph.graph.branch import Branch branch = Branch.from_path( path=my_router_fn, path_map={"yes": "node_a", "no": "node_b"}, # input_schema is inferred automatically from my_router_fn's… 0.3.6 · Mar 2025 · source
  • Declare a runtime-only managed value to inject a context manager into your graph without it being serialized to checkpoints. from langgraph.managed.base import ManagedValue class MyRuntimeValue(ManagedValue, runtime=True): ... 0.2.13 · Aug 2024 · source
Agent and environment targeting in CLI shipped Updates the deployment CLI to accept agent_id and environment arguments for precise targeting of specific agents and environments during deployment or configuration. 4 releases · 1 other source · first seen Sep 2026

Also counts toward: Agent-based deployment, Command-line interface

release

  • Updates langgraph deploy to use agent_id and environment arguments for deployment targeting cli==0.4.32 · Sep 2026 · source · release history
  • Clarifies agent flags and adds support for environment variable defaults in CLI agent configuration. cli==0.4.32 · Sep 2026 · source · release history
  • Clarifies agent flags and supports environment variable defaults in CLI commands cli==0.4.32 · Sep 2026 · source · release history
  • Updates langgraph deploy to accept agent_id and environment arguments for targeting specific agents and environments. cli==0.4.32 · Sep 2026 · source · release history

example

  • Target a specific agent and environment when running the deployment command. langgraph deploy --agent-id my-agent-uuid --environment production cli==0.4.32 · Sep 2026 · source
Config JSON Schema generation shipped Provides methods and files for generating and referencing JSON schemas for configuration validation and IDE autocompletion. 5 releases · first seen Aug 2024

release

  • Adds JSON schema files (schema.json and schema.v0.json) referenceable in langgraph.json to enable IDE autocompletion and validation of LangGraph configuration. cli==0.1.75 · Mar 2025 · source · release history
  • Adds get_config_jsonschema method to Pregel for converting config schemas to JSON Schema format, consistent with existing get_input_jsonschema/get_output_jsonschema. 0.3.4 · Mar 2025 · source · release history
  • Adds config_schema method to Pregel for proper configuration schema generation when the config type is a TypedDict, dataclass, or Pydantic model. 0.3.4 · Mar 2025 · source · release history
  • Enriches Pregel.config_specs output with default values and descriptions for configuration fields via get_enhanced_type_hints. 0.2.58 · Dec 2024 · source · release history
  • Makes GraphSchema fields (input_schema, state_schema, config_schema) optional for better TypeScript interoperability. sdk==0.1.27 · Aug 2024 · source · release history
Clear return with rich checkpoint persistence shipped Enables returning a clean response to the caller while persisting richer state to the checkpoint, decoupling saved context from user output. 4 releases · 1 other source · first seen Jul 2024

release

  • Adds entrypoint.final primitive to return a value to the caller that differs from the value saved in the checkpoint. 0.2.67 · Jan 2025 · source · release history
  • Adds parents field to CheckpointMetadata, mapping checkpoint namespace to checkpoint ID for relationship tracking between checkpoints. checkpoint==1.0.7 · Aug 2024 · source · release history
  • Adds pending-send tracking in InMemorySaver: get_tuple now includes pending_sends from parent checkpoints, and list gains improved namespace filtering. checkpoint==1.0.7 · Aug 2024 · source · release history
  • Enhances checkpoint parent-child relationship tracking and includes parent configuration data in checkpoint tuples, improving support for nested graphs. 0.1.10 · Jul 2024 · source · release history

example

  • Return a clean response to the caller while persisting richer state to the checkpoint — useful when you want the graph's saved context to differ from what the user receives. from langgraph.func import entrypoint @entrypoint(checkpointer=checkpointer) def my_graph(input: str) -> entrypoint.final[str, dict]: result = run_pipeline(input) # Return the string to the caller;… 0.2.67 · Jan 2025 · source
Multimodal tool response support shipped Enhances `ToolNode` to preserve multimodal content blocks (images, JSON) in tool responses instead of converting them to strings. 3 releases · 2 other sources · first seen Sep 2024

release

  • Adds format="langchain-openai" parameter to add_messages to automatically convert message content (strings, text blocks, image_url blocks) to OpenAI-compatible format. 0.2.61 · Jan 2025 · source · release history
  • Relaxes prebuilt tool_node validation to allow multiple tool messages in a command update, requiring only that at least one message matches the tool call ID. 0.2.60 · Dec 2024 · source · release history
  • Enhances ToolNode to handle multimodal content in tool responses, preserving image, image_url, text, and json content blocks instead of converting everything to strings. 0.2.25 · Sep 2024 · source · release history

example

  • Ensure all messages stored in a graph state channel are automatically normalized to OpenAI format (string, text, image_url blocks) before passing to an OpenAI-compatible LLM. from langgraph.graph.message import add_messages from typing import Annotated from typing_extensions import TypedDict class State(TypedDict): messages: Annotated[list,… 0.2.61 · Jan 2025 · source
  • Return multiple tool messages from a tool node (e.g. for logging + result) without triggering a validation error, as long as one message matches the tool call ID. from langchain_core.messages import ToolMessage from langgraph.types import Command # Both messages returned; validation passes because one has the matching tool_call_id cmd = Command( update={… 0.2.60 · Dec 2024 · source
Deployment priority configuration shipped Allows configuring thread and deployment priority settings via a `priority` section in `langgraph.json` and a `Priority` class in the Python SDK. 4 releases · first seen Oct 2026

release

  • Remove fairness_weight from PrioritySettings to simplify run priority configuration.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ sdk==0.4.12 · Nov 2026 · source · release history
  • The fairness_weight field has been removed from PrioritySettings; any code that sets this field will break on upgrade. sdk==0.4.12 · Nov 2026 · source · release history
  • Adds a priority section to langgraph.json to configure deployment priority settings.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ cli==0.4.38 · Oct 2026 · source · release history
  • Adds Priority class to the Python SDK for configuring thread priority settings.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ sdk==0.4.9 · Oct 2026 · source · release history
Graph lifecycle hooks shipped Provides callback handlers to intercept and execute logic at key stages of the graph execution lifecycle. 4 releases · first seen Oct 2024

release

  • Adds graph lifecycle callback handlers, enabling hooks into key stages of graph execution. 1.1.7a1 · Apr 2026 · source · release history
  • Hook can return messages to update agent state or llm_input_messages to reshape only what the LLM sees, leaving persisted state untouched. prebuilt==0.1.8 · Apr 2025 · source · release history
  • Implements a hierarchical handler system supporting global fallback handlers alongside specific per-action handlers. sdk==0.1.45 · Dec 2024 · source · release history
  • Adds node_finished callback parameter to PregelRunner via CONFIG_KEY_NODE_FINISHED for node-completion hooks. 0.2.40 · Oct 2024 · source · release history
Thread TTL management shipped Adds strategies for pruning thread history, including a keep_latest option to control retention when time-to-live cleanup runs. 2 releases · 2 other sources · first seen Mar 2025

Also counts toward: Scheduled jobs

release

  • Adds keep_latest prune strategy to ThreadTTLConfig, giving finer control over which threads are retained when TTL cleanup runs. cli==0.4.14 · Mar 2026 · source · release history
  • Adds ThreadTTLConfig class to set default TTL (in minutes), sweep interval, and expiry strategy (delete) for automatic cleanup of thread checkpoints. cli==0.1.83 · Apr 2025 · source · release history

example

  • Configure automatic deletion of stale thread checkpoints after a set period to keep storage lean in long-running deployments. from langgraph_cli.config import CheckpointerConfig, ThreadTTLConfig checkpointer = CheckpointerConfig( ttl=ThreadTTLConfig( default_minutes=1440, # delete thread data older than 24 hours… cli==0.1.83 · Apr 2025 · source
  • Enable automatic TTL sweeping every 10 minutes so expired store entries are cleaned up without manual intervention. ttl_config = TTLConfig( sweep_interval_minutes=10 ) cli==0.1.77 · Mar 2025 · source
Pre-model hooks shipped Allows injecting custom nodes before every LLM call in agent creation for preprocessing message history. 2 releases · 2 other sources · first seen Apr 2025

release

  • The TAG_NOSTREAM_ALT constant is removed from langgraph.constants; use NOSTREAM instead. 0.6.0 · Jul 2025 · source · release history
  • Adds pre_model_hook parameter to create_react_agent, letting you inject a custom node before every LLM call to preprocess message history via trimming, summarization, or other logic. prebuilt==0.1.8 · Apr 2025 · source · release history

example

  • Summarize earlier conversation turns and replace them with a summary message before each LLM call, without mutating the stored state. def summarizing_hook(state): messages = state["messages"] if len(messages) > 20: summary = llm.invoke(f"Summarize this conversation: {messages[:-5]}") return {"llm_input_messages": [summary] +… prebuilt==0.1.8 · Apr 2025 · source
  • Trim a long conversation to the last N messages before each LLM call to avoid exceeding the model's context window. from langgraph.prebuilt import create_react_agent from langchain_core.messages import trim_messages def pre_model_hook(state): trimmed = trim_messages(state["messages"], max_tokens=4096,… prebuilt==0.1.8 · Apr 2025 · source
Task labeling & graph visualization shipped Assigns human-readable names to tasks and annotates routing edges to improve graph rendering and developer debugging. 1 release · 3 other sources · first seen Jan 2025

release

  • Adds add_edge utility in graph visualization to prevent duplicate edges when rendering graphs with END nodes. 0.4.0 · Apr 2025 · source · release history

example

  • Visualize a compiled graph including subgraphs and conditional edges using the new dedicated draw_graph function. from langgraph.pregel.draw import draw_graph draw_graph(compiled_graph) 0.3.32 · Apr 2025 · source
  • Annotate routing possibilities in a Command-driven edgeless graph so rendered visualizations show labeled edges between nodes. graph.add_node("router", router_fn, destinations={"process": "to_process", "fallback": "to_fallback"}) 0.2.71 · Feb 2025 · source
  • Assign a human-readable display name to a task that wraps a lambda or method where the default __name__ would be unhelpful. from langgraph.func import task @task(name="fetch_user_profile") def _t(user_id: str) -> dict: # your implementation return {"id": user_id} future = _t("u-123") result = future.result() 0.2.68 · Jan 2025 · source
Tool configuration injection shipped Passes the runtime configuration object to tools during invocation, enabling access to dynamic context. 3 releases · 1 other source · first seen Jul 2024

release

  • Adds func_accepts_config parameter on RunnableCallable to explicitly control whether a wrapped function receives the LangChain config argument. 0.3.19 · Mar 2025 · source · release history
  • Enables prebuilt tool node to pass the configuration object to tools during both synchronous (invoke) and asynchronous (ainvoke) execution, allowing tools to access runtime configuration parameters. 0.2.59 · Dec 2024 · source · release history
  • Enhances chat_agent_executor with route_tool_responses to support tools configured with return_direct, bypassing the agent on return. 0.2.23 · Sep 2024 · source · release history

example

  • Disable automatic tool-error suppression in a ToolNode so exceptions propagate directly — useful when you want strict failure semantics in CI or testing. from langgraph.prebuilt import ToolNode tool_node = ToolNode(tools=[my_tool], handle_tool_errors=False) 0.1.6 · Jul 2024 · source
LangGraph Studio URL configuration shipped Enables connecting to a custom LangGraph Studio instance via command line option. 2 releases · 2 other sources · first seen Aug 2024

Also counts toward: Command-line interface

release

  • Adds --studio_url option to the dev command, enabling connection to a custom LangGraph Studio instance instead of the default https://smith.langchain.com. cli==0.1.78 · Mar 2025 · source · release history
  • Makes the url parameter optional in get_client, with intelligent defaults so local dev requires no explicit URL. sdk==0.1.27 · Aug 2024 · source · release history

example

  • Point the local dev server at a self-hosted or staging LangGraph Studio instance instead of the default smith.langchain.com. langgraph dev --studio_url https://studio.internal.example.com cli==0.1.78 · Mar 2025 · source
  • Connect to a local LangGraph server without specifying a URL — useful in dev environments where defaults are sufficient. from langgraph_sdk import get_client client = get_client() # url is now optional sdk==0.1.27 · Aug 2024 · source
Wildcard interruption targets shipped Supports using a wildcard symbol in interrupt parameters to target all nodes in a graph simultaneously. 4 releases · first seen Aug 2024

release

  • Enhances multiple concurrent interrupt handling by collecting and combining them into a single interrupt for cleaner propagation. 0.3.13 · Mar 2025 · source · release history
  • Supports passing "*" to interrupt_before/interrupt_after parameters in RunsClient and CronClient to interrupt all nodes without listing them individually. sdk==0.1.33 · Oct 2024 · source · release history
  • Adds error: Optional[str] and interrupts: list[dict] fields to TaskResultPayload for capturing task-level errors and interrupts in debug output. 0.2.10 · Aug 2024 · source · release history
  • should_interrupt now returns the list of executable tasks to be interrupted instead of a boolean, enabling precise per-task interrupt control. 0.2.6 · Aug 2024 · source · release history
Execution loop control & safety limits shipped Provides managed values and guards to track remaining steps and safely abort agent loops before hitting recursion limits. 2 releases · 2 other sources · first seen Oct 2024

release

  • Configures graph recursion limit via the LANGGRAPH_DEFAULT_RECURSION_LIMIT environment variable (default: 25), removing the need for per-run config. 0.3.10 · Mar 2025 · source · release history
  • Adds RemainingSteps managed value to expose the number of remaining steps during loop execution, usable alongside IsLastStep for precise loop control. 0.2.37 · Oct 2024 · source · release history

example

  • Override the default recursion limit for all graphs in a deployment without changing application code — useful in long-chain agentic workflows. export LANGGRAPH_DEFAULT_RECURSION_LIMIT=100 0.3.10 · Mar 2025 · source
  • Guard an agent node against runaway tool calls by checking how many steps remain — useful when you want to abort gracefully before hitting the recursion limit. from langgraph.managed import RemainingSteps def agent_node(state, remaining_steps: RemainingSteps): if remaining_steps < 2: # Not enough headroom — return a safe fallback instead of calling tools… 0.2.37 · Oct 2024 · source
Configurable checkpoint metadata enrichment shipped Automatically combines configurable properties, existing metadata, and explicitly passed metadata into saved checkpoints across various saver implementations. 4 releases · first seen Nov 2024

release

  • Enriches checkpoint metadata in SqliteSaver.put and AsyncSqliteSaver.aput with configurable fields (excluding private __-prefixed keys) and any pre-existing metadata alongside explicitly provided metadata. checkpointsqlite==2.0.4 · Feb 2025 · source · release history
  • Enriches InMemorySaver.put checkpoint metadata with non-private config["configurable"] entries (keys not prefixed with __) and any existing config["metadata"] values checkpoint==2.0.13 · Feb 2025 · source · release history
  • Enriches checkpoint metadata automatically: put/aput methods on PostgresSaver, AsyncPostgresSaver, ShallowPostgresSaver, and AsyncShallowPostgresSaver now combine non-private configurable properties, existing metadata, and explicitly passed metadata into each saved checkpoint. checkpointpostgres==2.0.14 · Feb 2025 · source · release history
  • Extends CheckpointMetadata.source to accept "fork" as a valid value, identifying checkpoints created as copies of other checkpoints. checkpoint==2.0.6 · Nov 2024 · source · release history
Structured output configuration shipped Supports custom prompts and various schema formats to enforce typed agent outputs. 2 releases · 2 other sources · first seen Jan 2025

release

  • Accepts a (prompt, schema) tuple for response_format to supply a custom prompt when generating structured output. 0.2.62 · Jan 2025 · source · release history
  • Supports OpenAI function/tool schemas, JSON Schema, TypedDict classes, and Pydantic models as the response schema. 0.2.62 · Jan 2025 · source · release history

example

  • Supply a custom extraction prompt alongside the schema when the default structured-output prompt doesn't fit your domain. from typing import TypedDict from langgraph.prebuilt import create_react_agent class Summary(TypedDict): key_findings: list[str] risk_level: str agent = create_react_agent( model, tools=[...],… 0.2.62 · Jan 2025 · source
  • Enforce a typed output schema on a ReAct agent so downstream code can rely on structured data instead of free-form text. from pydantic import BaseModel from langgraph.prebuilt import create_react_agent class AgentAnswer(BaseModel): answer: str confidence: float agent = create_react_agent( model, tools=[...],… 0.2.62 · Jan 2025 · source
Project scaffolding templates shipped Provides interactive commands and project templates for rapidly creating new LangGraph applications. 2 releases · 2 other sources · first seen Nov 2024

Also counts toward: Command-line interface, JavaScript scripting support

release

  • Adds new command to scaffold LangGraph projects interactively from five built-in templates (minimal chatbot, ReAct Agent, Memory Agent, Retrieval Agent, Data-enrichment Agent). cli==0.1.54 · Nov 2024 · source · release history
  • Adds a JavaScript/TypeScript project template for scaffolding LangGraph.js applications, including TypeScript config, ESLint, Jest, and sample StateAnnotation-based graph. cli==0.1.53 · Nov 2024 · source · release history

example

  • Set environment variables in your LangGraph config so they are automatically available when running the dev server — no need to export them separately in your shell. env: OPENAI_API_KEY: "sk-..." MY_CUSTOM_VAR: "value" cli==0.1.58 · Nov 2024 · source
  • Bootstrap a new ReAct-style agent project without writing boilerplate — pick a template interactively and start coding immediately. langgraph new my-agent-project cli==0.1.54 · Nov 2024 · source
Deployment listener management shipped Users can list the event listeners attached to a LangGraph deployment to audit or debug event subscriptions. 2 releases · 1 other source · first seen Sep 2026

Also counts toward: Command-line interface, JSON data export

release

  • Adds --json flag to the deploy listeners list command for machine-readable JSON output.⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ cli==0.4.34 · Oct 2026 · source · release history
  • Adds listener placement support for self-hosted deployments via the CLI. cli==0.4.32 · Sep 2026 · source · release history

example

  • List all deploy listeners attached to a LangGraph deployment to audit or debug event subscriptions. langgraph deploy listeners list cli==0.4.33 · Oct 2026 · source
Mid-run attachment and tailing shipped Allows attaching to in-progress runs mid-flight to tail output in real time. 1 release · 2 other sources · first seen Aug 2024

release

  • Adds join_stream() method to attach to an already-running run and receive its real-time output without buffering prior output. sdk==0.1.29 · Aug 2024 · source · release history

example

  • Tail logs from a running LangGraph deployment to debug production agent behavior. langgraph deploy logs <deployment-id> cli==0.4.16 · Mar 2026 · source
  • Attach to an in-progress run mid-flight to tail its output in real time — useful when a run was started in the background and you want to surface results to a user later. async for chunk in client.runs.join_stream(thread_id, run_id): print(chunk) sdk==0.1.29 · Aug 2024 · source
CLI checkpointer configuration shipped Allows passing checkpointer configuration settings directly through the CLI during deployment or invocation. 2 releases · 1 other source · first seen Aug 2024

Also counts toward: Command-line interface

release

  • Passes checkpointer config through to the CLI, enabling checkpointer settings to be applied via CLI invocation. cli==0.4.14 · Mar 2026 · source · release history
  • Supports passing checkpointer configuration to Docker environments via the LANGGRAPH_CHECKPOINTER environment variable automatically. cli==0.1.83 · Apr 2025 · source · release history

example

  • Run versioned schema migrations on an existing PostgreSQL checkpoint database so it stays in sync after upgrading. from langgraph.checkpoint.postgres import PostgresSaver with PostgresSaver.from_conn_string("postgresql://user:pass@localhost/db") as saver: saver.setup() # applies all pending MIGRATIONS instead of… checkpointpostgres==1.0.1 · Aug 2024 · source
Cron job configuration shipped Provides parameters for configuring stream modes, subgraphs, resumability, and durability when creating scheduled graph runs via the SDK. 3 releases · first seen Mar 2025

Also counts toward: Scheduled jobs, Client SDKs

release

  • Adds stream_mode, stream_subgraphs, stream_resumable, and durability parameters to cron job creation in the Python SDK. sdk==0.3.8 · Feb 2026 · source · release history
  • Adds update method to the crons client for modifying existing cron jobs. sdk==0.3.4 · Feb 2026 · source · release history
  • Adds optional headers parameter to all cron job methods on CronClient and SyncCronClient (create, search, delete). sdk==0.1.59 · Mar 2025 · source · release history
Assistant search pagination shipped Returns paginated results when searching for assistants, improving handling of large result sets. 2 releases · 1 other source · first seen Apr 2025

release

  • Includes pagination in assistants search responses. prebuilt==1.0.6 · Jan 2026 · source · release history
  • Adds pagination metadata to the assistants search response, enabling clients to page through large assistant lists. sdk==0.2.12 · Dec 2025 · source · release history

example

  • Retrieve the most recently updated assistants first — useful for auditing or surfacing active agents in a large deployment. results = await client.assistants.search(sort_by="updated_at", sort_order="desc") sdk==0.1.65 · Apr 2025 · source
Mixed language project support shipped Supports mixed Python and Node.js projects in a single configuration with automatic runtime version detection. 3 releases · first seen Apr 2025

Also counts toward: Command-line interface, JavaScript scripting support, Python scripting support, Scripting language support

release

  • Adds monorepo support in the LangGraph CLI, enabling multi-package project structures to be managed from a single repository. 0.6.7 · Sep 2025 · source · release history
  • Supports mixed Python/Node.js projects in a single configuration, with validate_config now auto-detecting and setting correct runtime versions for each graph file. cli==0.2.2 · Apr 2025 · source · release history
  • Automatically detects Python and JavaScript graphs by file extension, eliminating manual language configuration. cli==0.2.2 · Apr 2025 · source · release history
Keyword-only query parameters shipped Updates search methods to use keyword-only query parameters, improving API clarity and type safety. 3 releases · first seen Apr 2025

release

  • The query parameter in PostgresStore.search is now a named (keyword) parameter; callers passing it positionally will break. checkpointpostgres==2.0.20 · Apr 2025 · source · release history
  • The query parameter in AsyncPostgresStore.asearch is now a named (keyword) parameter; callers passing it positionally will break. checkpointpostgres==2.0.20 · Apr 2025 · source · release history
  • Updates search on PostgresStore and asearch on AsyncPostgresStore to require query as an explicit keyword argument rather than a positional parameter. checkpointpostgres==2.0.20 · Apr 2025 · source · release history
Message deletion support shipped Enables the deletion of specific messages by ID from message graphs using `RemoveMessage`. 2 releases · 1 other source · first seen Jul 2024

release

  • Adds REMOVE_ALL_MESSAGES constant to wipe an entire MessageGraph conversation history in a single RemoveMessage call. 0.3.23 · Apr 2025 · source · release history
  • Adds support for RemoveMessage from langchain-core in langgraph.graph.message.add_messages, enabling deletion of specific messages by ID from message graphs, with validation that raises an error if the target message ID does not exist. 0.1.6 · Jul 2024 · source · release history

example

  • Prune a specific message from a running message graph by its ID — handy for trimming context or removing a malformed turn mid-conversation. from langchain_core.messages import RemoveMessage # Return a RemoveMessage from a node to delete the message with the given ID def cleanup_node(state): return {"messages":… 0.1.6 · Jul 2024 · source
Package manager detection helper shipped Provides a helper function to detect the correct package manager from package.json even without lock files. 3 releases · first seen Nov 2024

release

  • Adds get_pkg_manager_name() helper that reads packageManager or devEngines.packageManager.name from package.json to detect the correct package manager (Yarn, pnpm, Bun, or npm) even when no lock file exists. cli==0.1.80 · Mar 2025 · source · release history
  • Supports Bun as a detected package manager: detects bun.lockb and runs bun i automatically for Bun-based projects. cli==0.1.68 · Jan 2025 · source · release history
  • Adds automatic Node.js package manager detection (npm, yarn, pnpm) based on lock files, selecting the correct install and build commands automatically. cli==0.1.53 · Nov 2024 · source · release history
PregelRunner async context detection shipped Removes restriction on coroutine-only calls in PregelRunner and adds context detection to return appropriate future types. 2 releases · 1 other source · first seen Jan 2025

release

  • Removes the restriction in PregelRunner that only coroutine functions could be called in an async context, and adds context detection to return the appropriate future type (async or sync) based on the calling context. 0.2.66 · Jan 2025 · source · release history
  • Adds CONTEXT_NOT_SUPPORTED flag in langgraph.utils.future to handle Python versions whose event loops do not support contextvars. 0.2.66 · Jan 2025 · source · release history

example

  • Safely submit a coroutine to a running event loop from a background thread — useful when mixing sync worker threads with an async LangGraph executor. from langgraph.utils.future import run_coroutine_threadsafe import asyncio loop = asyncio.get_event_loop() future = run_coroutine_threadsafe(my_async_task(), loop) result = future.result(timeout=30) 0.2.66 · Jan 2025 · source
Automatic state injection into tools shipped Injects graph state directly into tool arguments via `InjectedState` without requiring the LLM to generate it. 2 releases · 1 other source · first seen Jul 2024

release

  • Adds messages_key parameter to ToolNode and tools_condition for flexible integration with non-standard state schemas. 0.2.40 · Oct 2024 · source · release history
  • Adds InjectedState annotation to automatically inject graph state into tool arguments inside ToolNode, so tools can access state fields without the model generating them. 0.1.10 · Jul 2024 · source · release history

example

  • Use a different state key for messages when your graph stores messages under a non-default key (e.g., chat_history). tool_node = ToolNode(tools, messages_key="chat_history") condition = tools_condition(messages_key="chat_history") 0.2.40 · Oct 2024 · source
Cross-thread memory sharing shipped Enables agents to retain and share information across separate conversation threads during execution. 2 releases · first seen Oct 2024

release

  • Use browser_handoff to pause an agent at a login page and let the user sign in interactively in LangSmith Studio, with credentials persisted for later threads when using scope='user'. announced · Oct 2026 · source · release history
  • Adds cross-thread memory support in agent executors, enabling agents to retain information across separate conversation threads. 0.2.35 · Oct 2024 · source · release history
Managed browser automation for agents shipped suggested Automatically equips agents with browser tools (snapshot, run, screenshot, handoff) and runs the browser in an isolated sandbox with a private localhost bridge, enabling end-to-end web automation and testing without a public URL. 2 releases · first seen Oct 2026

Suggested capability: Model tool calling. This is our guess, not confirmed.

Also counts toward: JavaScript scripting support

release

  • Managed Deep Agents now runs the browser in a separate LangSmith sandbox with a private localhost bridge to the agent's sandbox, enabling end-to-end testing of apps at localhost ports without a public URL. announced · Oct 2026 · source · release history
  • Managed Deep Agents now adds four browser tools to agents automatically: browser_snapshot reads the page accessibility tree, browser_run executes batched actions or Playwright-style JavaScript via Stagehand, browser_screenshot captures the rendered page, and browser_handoff passes the browser to a human and… announced · Oct 2026 · source · release history
MCP server wiring helper shipped suggested Provides a helper function to easily wire MCP servers with connection credentials in managed deep agent applications. 1 release · 1 other source · first seen Sep 2026

Suggested capability: Model tool calling. This is our guess, not confirmed.

release

  • Adds define_mcp helper in managed_deepagents to wire MCP servers with a connection credential, e.g. connections.get("linear-mcp", {"type": "user"}) passed as the connection field. announced · Sep 2026 · source · release history

example

  • Share one browser across all of a signed-in user's threads so the agent only asks for a login once and reuses the saved session in later conversations. # browser.py from managed_deepagents import define_browser browser = define_browser( scope="user", idle_ttl_seconds=1800, ) announced · Oct 2026 · source
Cron job metadata filtering shipped Enables filtering cron job searches by specific labels or properties in the metadata. 1 release · 1 other source · first seen May 2026

release

  • Supports metadata filter parameter when searching and counting cron jobs via the SDK. sdk==0.3.15 · May 2026 · source · release history

example

  • Filter cron job searches by metadata to find only crons matching specific labels or properties. crons = await client.crons.search(metadata={"env": "production", "team": "infra"}) sdk==0.3.15 · May 2026 · source
Shared node configuration defaults shipped Allows setting shared default configuration (such as models or retry policies) across all nodes in a graph via a single method, avoiding repetition on individual node definitions. 1 release · 1 other source · first seen May 2026

release

  • Adds set_node_defaults() to StateGraph, letting you set shared default configuration across nodes. 1.2.0 · May 2026 · source · release history

example

  • Apply shared defaults (e.g. a model or retry policy) to every node in a graph without repeating config on each .add_node() call. from langgraph.graph import StateGraph builder = StateGraph(MyState) builder.set_node_defaults(config={"model": "gpt-4o", "temperature": 0}) builder.add_node("extract", extract_node)… 1.2.0 · May 2026 · source
Minimal thread updates shipped Reduces response payload size for thread updates by allowing callers to request a reduced payload containing only essential state changes. 1 release · 1 other source · first seen May 2026

release

  • Adds return_minimal parameter to the threads update API, allowing callers to request a reduced response payload. sdk==0.3.14 · May 2026 · source · release history

example

  • Reduce response payload size when updating a thread — useful in high-throughput pipelines where the full thread object is not needed. client.threads.update(thread_id, return_minimal=True) sdk==0.3.14 · May 2026 · source
Deployment version management shipped Enables listing deployment revisions to audit history or perform rollbacks. 1 release · 1 other source · first seen Mar 2026

Also counts toward: Command-line interface

release

  • Adds deploy revisions list subcommand to list revisions of a LangGraph deployment. cli==0.4.19 · Mar 2026 · source · release history

example

  • List all revisions for a deployed LangGraph app to audit deployment history or roll back. langgraph deploy revisions list cli==0.4.19 · Mar 2026 · source
Pydantic compatibility detection shipped Adds utility functions to detect whether a given type is directly supported by Pydantic. 2 releases · first seen Mar 2025

release

  • Makes StateGraph and Pregel generic over state_schema, context_schema, input_schema, and output_schema for compile-time type checking of node signatures and invoke/stream inputs. 0.6.0 · Jul 2025 · source · release history
  • Adds is_supported_by_pydantic utility function to detect whether a type (dataclass, Pydantic model, or TypedDict, including Python 3.12+) is directly supported by Pydantic. 0.3.4 · Mar 2025 · source · release history
Blob storage for checkpointers shipped Adds dedicated blob storage to in-memory checkpointer for more efficient and lower-memory channel value management. 2 releases · first seen Mar 2025

release

  • Adds pickle fallback for pandas objects in JsonPlusSerializer via serialize/deserialize path, so DataFrames and Series round-trip through checkpoints reliably. checkpointpostgres==2.0.22 · Jul 2025 · source · release history
  • Adds dedicated blob storage system to InMemorySaver for more efficient, lower-memory channel value management via a new blobs store and _load_blobs method. checkpoint==2.0.22 · Mar 2025 · source · release history
In-memory and file-based caching shipped Provides cache implementations with namespace-scoped keys and clearing capabilities to speed up repeated operations without relying on external databases. 2 releases · first seen May 2025

release

  • New InMemoryCache (moved into the sqlite package alongside FileCache) enables fast, non-persistent caching without a database. checkpointsqlite==2.0.8 · May 2025 · source · release history
  • Introduces a cache interface with InMemoryCache and FileCache (moved to sqlite package), including clear methods and namespace-scoped cache keys. 0.4.4 · May 2025 · source · release history
Runtime version requirement enforcement shipped Provides centralized constants to enforce minimum Node.js and Python versions across the project environment. 2 releases · first seen Nov 2024

release

  • Removes Python version upper bounds, allowing installation on future Python releases without constraint conflicts. checkpoint==2.0.26 · May 2025 · source · release history
  • Introduces MIN_NODE_VERSION and MIN_PYTHON_VERSION constants for centralized version requirement enforcement. cli==0.1.56 · Nov 2024 · source · release history
Static analysis support for channel writes shipped Allows declaring static channel write targets in the graph definition to improve static analysis capabilities. 2 releases · first seen Apr 2025

release

  • Extends ChannelWrite.register_writer to accept static declarations for writers, with a new static field on ChannelWriteTupleEntry to declare writes for static analysis. 0.3.32 · Apr 2025 · source · release history
  • Adds get_static_writes method to ChannelWrite to support static analysis of what a writer might write, enabling better resolution of conditional edges. 0.3.32 · Apr 2025 · source · release history
Multiple retry policies shipped Supports passing a sequence of retry policies to nodes and tasks, applying the first matching policy on exception. 1 release · 1 other source · first seen Apr 2025

release

  • Supports passing a sequence of retry policies to StateGraph.add_node, langgraph.func.task, and Pregel, applying the first matching policy when an exception occurs. 0.3.28 · Apr 2025 · source · release history

example

  • Apply ordered retry policies to a functional task so the first matching policy governs backoff and attempt count. from langgraph.func import task from langgraph.types import RetryPolicy @task(retry=[RetryPolicy(retry_on=TimeoutError, max_attempts=3), RetryPolicy(retry_on=Exception, max_attempts=1)]) def… 0.3.28 · Apr 2025 · source
Loopback transport configuration shipped Allows dynamic setup and deferred initialization of local server loopback transports for testing and internal routing. 2 releases · first seen Feb 2025

release

  • Adds configure_loopback_transports function and _registered_transports list for dynamic server transport configuration. sdk==0.1.53 · Feb 2025 · source · release history
  • Supports deferred loopback transport setup via the __LANGGRAPH_DEFER_LOOPBACK_TRANSPORT environment variable. sdk==0.1.53 · Feb 2025 · source · release history
Store authorization controls shipped Restricts access to storage operations through decorator-based authorization handlers that enforce per-user or per-request data policies. 2 releases · first seen Jan 2025

release

  • Adds @auth.on.store decorator to authorize access to storage operations, enabling per-user data access control. sdk==0.1.53 · Feb 2025 · source · release history
  • Adds auth.on.store decorators to authorize store operations (put, get, search, list_namespaces, delete) at the handler level. sdk==0.1.50 · Jan 2025 · source · release history
Embedding model provider initialization shipped Allows initializing embedding models via provider strings in index configuration, eliminating the need for manual instantiation. 1 release · 1 other source · first seen Feb 2025

release

  • Supports initializing embedding models via provider strings (e.g., "openai:text-embedding-3-small") in IndexConfig.embed, eliminating the need to manually instantiate an embeddings object. checkpoint==2.0.12 · Feb 2025 · source · release history

example

  • Configure a vector store index with an embedding model using a provider string instead of a manually constructed embeddings instance. from langgraph.store.base import IndexConfig index_config = IndexConfig( embed="openai:text-embedding-3-small", dims=1536, ) checkpoint==2.0.12 · Feb 2025 · source
Standardized error generation shipped Offers a helper function to produce consistent error messages with embedded troubleshooting documentation links. 2 releases · first seen Oct 2024

release

  • Adds a clear error message when users attempt to run JS graphs with the Python CLI, directing them to use npx @langchain/langgraph-cli instead. cli==0.1.68 · Jan 2025 · source · release history
  • New create_error_message helper in langgraph.errors generates consistent error messages with links to troubleshooting documentation. 0.2.39 · Oct 2024 · source · release history
Thread auto-creation policies shipped Allows specifying behavior for missing threads (auto-create or reject) during stream, create, or wait operations instead of always raising an error. 2 releases · first seen Jul 2024

release

  • Adds if_not_exists parameter to stream, create, and wait client methods, letting callers auto-create a missing thread ("create") or reject the operation ("reject") instead of always raising. sdk==0.1.34 · Oct 2024 · source · release history
  • New RunCreate TypedDict enables structured background run creation with fields for thread_id, assistant_id, input, metadata, and run configuration options. sdk==0.1.26 · Jul 2024 · source · release history
Thread creation conflict handling shipped Controls behavior when creating a thread that already exists via the `if_exists` parameter and `OnConflictBehavior` type. 2 releases · first seen Jul 2024

release

  • Adds a SCHEDULED special channel constant (value -2) in WRITES_IDX_MAP on BaseCheckpointSaver to track scheduled task status in the checkpoint system. checkpoint==1.0.10 · Sep 2024 · source · release history
  • New OnConflictBehavior type ("raise" or "do_nothing") controls what happens when a thread is created that already exists, via the new if_exists parameter on Threads.create. sdk==0.1.26 · Jul 2024 · source · release history
Managed service environment configuration shipped Automates environment variable injection and health-gated dependency configuration for managed deployment services. 2 releases · first seen Aug 2024

release

  • Injects REDIS_URI environment variable (redis://langgraph-redis:6379) automatically into the langgraph-api service. cli==0.1.51 · Aug 2024 · source · release history
  • Adds Redis 6 as a managed Docker Compose service with health-check gating, so langgraph-api only starts after Redis is healthy. cli==0.1.51 · Aug 2024 · source · release history
Browser session scoping shipped Controls whether each conversation thread gets its own isolated browser session or shares a single persistent browser (with cookies and login state) across all of a signed-in user's threads. 1 release · first seen Oct 2026

release

  • Control browser session sharing with scope='thread' (default, each conversation gets its own isolated browser) or scope='user' (one browser shared across a signed-in user's threads, with cookies and login state persisted). announced · Oct 2026 · source · release history
Postgres and SQLite store namespace isolation fix shipped Fixes a security vulnerability where namespace labels containing a period could incorrectly reach other namespaces in Postgres and SQLite stores. 1 release · first seen Oct 2026

release

  • CVE-2026-115883: Namespace labels containing . reach other namespaces in Postgres and SQLite stores (affects < 3.1.3)⁠︀︄︇︀︅︉︀︅︀︀︃︀︀︅︅︀︅︊︀︄︆︀︃︄⁠ CVE-2026-115883 · Oct 2026 · source · release history
Cron job end time clearing shipped Supports clearing a cron job's end_time by passing None during an update operation, effectively making the schedule indefinite. 1 release · first seen Aug 2026

release

  • Supports clearing a cron job's end_time by calling update(end_time=None) on the cron client. sdk==0.4.3 · Aug 2026 · source · release history
Scoped subgraph handles shipped Provides async and sync handles for targeting and streaming specific subgraph execution within a larger graph. 1 release · first seen May 2026

release

  • Adds scoped subgraph handles (async and sync) for targeting and streaming specific subgraph execution. sdk==0.4.0 · May 2026 · source · release history
Studio deployment support shipped Adds a dedicated command to deploy LangGraph applications directly to LangGraph Studio from the CLI. 1 release · first seen May 2026

Also counts toward: Command-line interface

release

  • Adds studio deploy command to the LangGraph CLI, enabling direct deployment to LangGraph Studio. cli==0.4.25 · May 2026 · source · release history
Checkpoint workflow timers shipped Provides alpha-level timer support to schedule and trigger stateful workflows based on checkpoint data. 1 release · first seen Apr 2026

release

  • Adds alpha timer support for checkpoint-based workflows. checkpoint==4.1.0a1 · Apr 2026 · source · release history
Strict MessagePack deserialization shipped Supports enforcing strict security settings for MessagePack deserialization via environment variables to prevent unsafe deserialization attacks. 1 release · first seen Apr 2026

release

  • Documents LANGGRAPH_STRICT_MSGPACK environment variable to control strict MessagePack deserialization security for checkpoints. checkpoint==4.0.2 · Apr 2026 · source · release history
Dictionary-format graph definitions shipped Supports defining graphs in configuration files using dictionaries with paths and metadata, alongside standard import-path strings. 1 release · first seen Apr 2025

release

  • Supports dictionary-format graph definitions (with a 'path' key) in the configuration file, alongside the existing plain import-path string format, enabling additional metadata to be co-located with graph paths. cli==0.1.89 · Apr 2025 · source · release history
Custom JSON serialization hooks shipped Enables customization of JSONPlusSerializer initialization and MessagePack-to-JSON translation via hooks. 1 release · first seen Mar 2025

release

  • Adds customizable JsonPlusSerializer.__init__ accepting an optional custom unpacking hook, plus _msgpack_ext_hook_to_json for better MessagePack-to-JSON type translation. checkpoint==2.0.22 · Mar 2025 · source · release history
Dependency-aware node scheduling shipped Optimizes graph execution by scheduling only nodes whose trigger channels were updated in the previous step. 1 release · first seen Mar 2025

release

  • Adds dependency-aware node scheduling: only nodes whose trigger channels were updated in the previous step are evaluated, reducing unnecessary work in large graphs. 0.3.19 · Mar 2025 · source · release history
Thread creation with initial state updates shipped Allows applying a sequence of state updates immediately during thread creation, facilitating thread copying and initialization. 1 release · first seen Mar 2025

release

  • Adds supersteps parameter to sync and async ThreadsClient.create(), enabling a sequence of state updates to be applied at thread creation — useful for copying threads between deployments. sdk==0.1.58 · Mar 2025 · source · release history
Custom FastAPI/Starlette app mounting shipped Enables mounting a custom FastAPI or Starlette application with middleware, such as authentication, to the graph server. 1 other source · first seen Feb 2025

example

  • Mount a custom FastAPI/Starlette app with middleware and configure CORS — useful when you need to add auth middleware or expose the server to a browser-based client. http: app: ./my_middleware_app.py:app cors: allow_origins: - "https://my-frontend.example.com" allow_methods: - "GET" - "POST" disable_routes: - assistants - store cli==0.1.72 · Feb 2025 · source
Checkpoint metadata extraction utilities shipped Offers functions to extract and process checkpoint metadata from runnable configurations with consistent handling of keys and types. 1 release · first seen Feb 2025

release

  • Adds get_checkpoint_metadata function to extract and process checkpoint metadata from a RunnableConfig, filtering out private/excluded keys and non-primitive types for consistent handling across checkpoint implementations. checkpoint==2.0.15 · Feb 2025 · source · release history
Unified SyncAsyncFuture type shipped Introduces a unified type for task return values that implements both Future and awaitable protocols. 1 release · first seen Jan 2025

release

  • Introduces unified SyncAsyncFuture type in langgraph.pregel.call that implements both the Future interface and the awaitable protocol for task return values. 0.2.68 · Jan 2025 · source · release history
RunnableCallable argument unpacking shipped Adds parameter to explode tuple arguments in RunnableCallable for flexible invocation. 1 release · first seen Jan 2025

release

  • Adds explode_args parameter to RunnableCallable to unpack a tuple of (args, kwargs) instead of passing it as the first positional argument; affects both invoke and ainvoke methods. 0.2.66 · Jan 2025 · source · release history
Batch execution support shipped Allows submitting multiple graph runs in a single API call for efficient batch processing. 1 release · first seen Jul 2024

release

  • New create_batch method on LangGraphClient submits multiple runs in a single API call for more efficient batch operations. sdk==0.1.26 · Jul 2024 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Command line

20 commands for LangGraph, each with where it came from. This tool has no source analysis yet, so there is no option reference and no captured run beside them.

Source

Release-note detail over time

See how much detail LangGraph puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

277 entries

  1. September 20262
  2. August 20264
  3. July 20265
  4. June 20265
  5. May 202612
  6. April 202613
  7. March 20269
  8. February 20262
  9. January 20263
  10. December 20253
  11. November 20251
  12. October 20257
  13. September 20252
  14. August 20251
  15. July 20258
  16. June 20255
  17. May 202510
  18. April 202524
  19. March 202529
  20. February 202512
  21. January 202517
  22. December 202417
  23. November 202424
  24. October 202413
  25. September 202420
  26. August 202419
  27. July 20249
  28. June 20241
    Show

    277 entries

    Articles

    6 articles · updated Nov 4, 2026

    Where LangGraph turns up in what others publish: how-tos, attack reports that name it, and incident write-ups. A row says why it is here and quotes where the article names it; the link goes to the publisher.

    • Stateful AWS Bedrock LangGraph Agents – Getting Started DebuggerCafe
      With LangGraph for agents and LangSmith for LLM Ops and Observability, we can create an end-to-end agentic system with it.
      2 more quotes
      In this article, we will build our first stateful agent using AWS Bedrock, LangGraph, and LangSmith .
      Interacting with stateful Bedrock agents created using LangGraph in the LangGraph Studio environment.
    • Amazon Bedrock and LangGraph – Simple Agents and Tool Use DebuggerCafe
      Combining these models with LangGraph allows us to create simple agents with tool access and memory checkpoints with minimal boilerplate code.
      2 more quotes
      In this article, we are going to explore Amazon Bedrock and LangGraph to create agents and give them tool access such as RAG and web search.
      Demo of multi-turn web search using Bedrock and LangGraph agent.
    • AI Workflows for Sales Teams: Prospect Research, Lead Qualification, and CRM Updates on Autopilot Using LangGraph Analytics Vidhya
      You will use LangGraph to orchestrate several AI agents, powered by OpenAI’s state-of-the-art LLMs, to build a sales pipeline that takes raw prospect data and turns it into a fully updated CRM entry, with zero manual…
      2 more quotes
      LangGraph handles the connections between these agents, how each one runs, and how data flows between them.
      Understanding LangGraph for Sales Automation LangGraph is a framework for building stateful multi-step AI applications on top of LangChain.
    • LangGraph: Building Self-Correcting RAG Agent for Code Generation LearnOpenCV
      In our previous post, we explored the fundamental concepts of LangGraph by building a Visual Web Browser Agent that could navigate, see, scroll, and summarize web pages.
      2 more quotes
      What Agentic AI , AI Art Generation , Computer Vision , Generative AI , Generative Models , Hugging Face Transformers , Multimodal Models , Vision Language Models Welcome back to our LangGraph series!
      This is the essence of self-correction and iterative behavior , and LangGraph is perfectly designed for it.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →