high severityLangGraph checkpointers (MemorySaver, PostgresSaver, etc.)
Node produces invalid state (e.g., None where List[str] expected); checkpoint saves it. Later, graph.get_state() or get_state_history() raises ValidationError. Checkpoints become permanently unrecoverable, breaking graph invocation/resume.
Root cause
LangGraph validates node input when preparing next tasks but skips validation of node output after execution, allowing invalid state (e.g., None in required List[str]) to be saved to checkpoints. Retrieval (get_state_history) then fails with ValidationError, permanently corrupting the checkpoint.
LangGraphcheckpointvalidationstate persistencecorruptionPydanticValidationError