Design the state schema, the checkpointer and the interrupts before you write the first node, and pass resume, cancel and replay tests before an agent serves users. This playbook covers each of those, plus durability modes, approval steps before risky actions, validation in code, and tracing.
When you need this
- An agent built on LangGraph is moving from a prototype on the in-memory saver to real users.
- A run takes long enough that a deploy, crash, or user cancellation can land in the middle of it.
- The agent can send messages, spend money, or change records in other systems.
Evaluation criteria
State schema
What does the graph carry from step to step?
Look forDefine a TypedDict, dataclass, or Pydantic schema. Add reducers for fields that multiple nodes write, such as message lists. Keep state small and serializable. One developer spent time fixing runtime type errors in loosely typed state. Another found schema growth the main maintenance cost.
Checkpointer
Where is state saved, and what survives a restart?
Look forUse Postgres or MongoDB in production, because the in-memory saver loses state on restart. Qodo added Postgres persistence in a few lines. Pin the checkpointer package with LangGraph. Postgres saver 2.0.23 broke reads for one team, and another reported SSL errors under load across versions.
Durability mode
How much work can a crash lose?
Look forChoose the durability mode per workload. The sync mode saves each checkpoint before the next step starts. The async mode writes while the next step runs, so a crash can lose the latest state. The exit mode saves only when the run ends. Each checkpoint adds a database write, and long threads pile up rows.
Interrupts
Which actions must a person approve?
Look forCall interrupt() before irreversible actions and resume with Command(resume=...). Airbnb pauses trust cases for days until a signal or human decision arrives. One team adds a human checkpoint after each critical step. Another replaced custom checkpointing with LangGraph checkpoints and interrupts.
Side effects and replay
What happens when a step runs twice?
Look forReplaying or forking from a checkpoint re-executes every later node, including model calls and API requests. Make side-effecting nodes idempotent, with a key per action, before using time travel in production.
Cancellation and streaming
What does the user see after canceling or reconnecting?
Look forOn LangGraph Platform, now called LangSmith Deployment, one team lost everything streamed since the last checkpoint when a user canceled a run. Test cancel and reconnect paths, and decide which streamed output you must save.
Validation loops
How does the graph enforce rules the prompt cannot?
Look forCheck outputs in code and route failures back with a conditional edge. Airbnb runs a rules layer with no model in it that approves, denies, or escalates obvious cases before any LLM call. It also lets every agent abstain so uncertain cases go to a person.
Tracing
How will you see what a failed run held?
Look forLangSmith traces graphs when LANGSMITH_TRACING is set, and stream modes and checkpoints feed your own tooling. One developer lost a failed production run's state before they could inspect it. Keep checkpoints for failed threads long enough to debug them.
Questions to ask vendors
- Which checkpointer and durability mode does each graph use in production, and who owns that database?
- Which nodes have side effects, and are they safe to run twice?
- Which actions require a human interrupt, and who answers it, within what time?
- What happens to a run when it is canceled, or when the service restarts mid-run?
- How long are checkpoints for failed threads kept?
Red flags
- The in-memory saver in production.
- Payments, emails, or record changes with no interrupt before them.
- Time travel used in production on nodes with side effects that are not idempotent.
- Unpinned LangGraph and checkpointer packages.
- No test of cancel, crash, and resume before launch.
Products in this piece
Sources
- Official documentation
- 7
- Public source
- 11
- LangGraph docs: Graph API
- LangGraph docs: Persistence
- LangGraph docs: Checkpointers and durability modes
- LangGraph docs: Interrupts
- LangGraph docs: Use time travel
- LangGraph docs: Streaming
- LangGraph docs: Studio
- Sagi Medina (Qodo): Why we chose LangGraph to build our coding agent (Mar 21, 2025)
- Pedro Rodriguez (Airbnb): How Airbnb builds Trust for Guests and Hosts using AI Agents with LangGraph, Interrupt NYC 2026 (Sep 29, 2026)
- Brennan Rosales and Pedro Vicente Valdez (BlackRock): How BlackRock Built Production AI Agents with LangGraph, Interrupt 2025 (Jun 12, 2025)
- Hacker News comment on a human checkpoint after every critical step (Jan 23, 2026)
- Hacker News comment on runtime type errors from loosely typed LangGraph state (Jun 18, 2025)
- DeadLocker on dev.to: Why I Stopped Using LangGraph (Apr 23, 2026)
- Hacker News comment on replacing homegrown checkpointing with LangGraph in Pizza Bot (Sep 16, 2026)
- LangGraph issue #5672: run cancellation loses streamed state not yet checkpointed (Jul 25, 2025)
- LangGraph issue #3716: Postgres checkpointer SSL errors across versions (Mar 6, 2025)
- LangGraph issue #5677: AsyncPostgresSaver 2.0.23 fails to read channel values (Jul 27, 2025)
- Hacker News comment on production LangGraph state lost after a mid-run failure (Mar 9, 2026)