# LangGraph Checkpoints

Ref: https://docs.langchain.com/oss/python/langgraph/persistence

Checkpointers save snapshots of graph state at each step, enabling:
- Memory between interactions
- Human-in-the-loop workflows
- Fault tolerance and error recovery

## Setup

Configure `.env` before running. See `.env.sample`.



```python
import rich
from dotenv import load_dotenv

load_dotenv()
```




    True



## Create Agent with InMemorySaver

`InMemorySaver` is an in-memory checkpointer for experimentation.



```python
from datetime import datetime
from typing import Any

from langchain.agents import create_agent
from langchain_anthropic import ChatAnthropic
from langchain_core.runnables import RunnableConfig
from langchain_core.tools import tool
from langgraph.checkpoint.memory import InMemorySaver
from langgraph.graph.state import CompiledStateGraph


@tool
def get_current_time() -> str:
    """Get the current time."""
    return datetime.now().isoformat()


model = ChatAnthropic(model="claude-sonnet-4-5-20250929")
checkpointer = InMemorySaver()
agent: CompiledStateGraph[Any] = create_agent(
    model=model,
    tools=[get_current_time],
    system_prompt="You are a helpful assistant.",
    checkpointer=checkpointer,
)
```

## Threads

Each thread has a unique `thread_id` and keeps its own conversation history.



```python
config: RunnableConfig = {"configurable": {"thread_id": "thread-1"}}

response = agent.invoke({"messages": [{"role": "user", "content": "What time is it? Also, my name is Alice."}]}, config)
rich.print("response =", response)
```


    response =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_read': 0,
                        'cache_creation': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            ToolMessage(
                content='2025-12-05T06:45:39.167009',
                name='get_current_time',
                id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
            ),
            AIMessage(
                content='The current time is **6:45 AM** (and about 39 seconds) on December 5th, 2025.\n\nNice to meet 
    you, Alice! How can I help you today?',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01LmXyZkAzCY6cyuKS8WJ8fw',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 628,
                        'output_tokens': 47,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--41bc347f-a9af-4a49-8695-c715b6c6a1be-0',
                usage_metadata={
                    'input_tokens': 628,
                    'output_tokens': 47,
                    'total_tokens': 675,
                    'input_token_details': {
                        'cache_read': 0,
                        'cache_creation': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            )
        ]
    }




```python
# Continue the conversation - agent remembers the name
response = agent.invoke({"messages": [{"role": "user", "content": "What is my name?"}]}, config)
rich.print("response =", response)
```


    response =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            ToolMessage(
                content='2025-12-05T06:45:39.167009',
                name='get_current_time',
                id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
            ),
            AIMessage(
                content='The current time is **6:45 AM** (and about 39 seconds) on December 5th, 2025.\n\nNice to meet 
    you, Alice! How can I help you today?',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01LmXyZkAzCY6cyuKS8WJ8fw',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 628,
                        'output_tokens': 47,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--41bc347f-a9af-4a49-8695-c715b6c6a1be-0',
                usage_metadata={
                    'input_tokens': 628,
                    'output_tokens': 47,
                    'total_tokens': 675,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            HumanMessage(
                content='What is my name?',
                additional_kwargs={},
                response_metadata={},
                id='62de489f-984e-41ea-9df5-911f28ac9f29'
            ),
            AIMessage(
                content='Your name is Alice! You told me that in your previous message.',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01W9BdG5KRydSHvwxiSm82QG',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 683,
                        'output_tokens': 17,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--7c5fb9ea-22fb-485b-b001-64a88d60679f-0',
                usage_metadata={
                    'input_tokens': 683,
                    'output_tokens': 17,
                    'total_tokens': 700,
                    'input_token_details': {
                        'cache_read': 0,
                        'cache_creation': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            )
        ]
    }




```python
# Different thread - agent does not know the name
config2: RunnableConfig = {"configurable": {"thread_id": "thread-2"}}

response = agent.invoke({"messages": [{"role": "user", "content": "What is my name?"}]}, config2)
rich.print("response =", response)
```


    response =
    {
        'messages': [
            HumanMessage(
                content='What is my name?',
                additional_kwargs={},
                response_metadata={},
                id='3d21f2c8-e234-4f63-b02e-1df1df387e9f'
            ),
            AIMessage(
                content="I don't know your name. You haven't told me what it is, and I don't have access to any 
    information about your identity. Would you like to share your name with me?",
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01QifwvX6QFmZkHegY6q9p8X',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 555,
                        'output_tokens': 42,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--2dca677e-2de2-4696-b37e-4967f1b83689-0',
                usage_metadata={
                    'input_tokens': 555,
                    'output_tokens': 42,
                    'total_tokens': 597,
                    'input_token_details': {
                        'cache_read': 0,
                        'cache_creation': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            )
        ]
    }



## Get State

Retrieve the current state of a thread.



```python
state = agent.get_state(config)
rich.print("state =", state)
```


    state =
    StateSnapshot(
        values={
            'messages': [
                HumanMessage(
                    content='What time is it? Also, my name is Alice.',
                    additional_kwargs={},
                    response_metadata={},
                    id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
                ),
                AIMessage(
                    content=[
                        {
                            'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                            'input': {},
                            'name': 'get_current_time',
                            'type': 'tool_use'
                        }
                    ],
                    additional_kwargs={},
                    response_metadata={
                        'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                        'model': 'claude-sonnet-4-5-20250929',
                        'stop_reason': 'tool_use',
                        'stop_sequence': None,
                        'usage': {
                            'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                            'cache_creation_input_tokens': 0,
                            'cache_read_input_tokens': 0,
                            'input_tokens': 562,
                            'output_tokens': 38,
                            'server_tool_use': None,
                            'service_tier': 'standard'
                        },
                        'model_name': 'claude-sonnet-4-5-20250929',
                        'model_provider': 'anthropic'
                    },
                    id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                    tool_calls=[
                        {
                            'name': 'get_current_time',
                            'args': {},
                            'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                            'type': 'tool_call'
                        }
                    ],
                    usage_metadata={
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'total_tokens': 600,
                        'input_token_details': {
                            'cache_creation': 0,
                            'cache_read': 0,
                            'ephemeral_5m_input_tokens': 0,
                            'ephemeral_1h_input_tokens': 0
                        }
                    }
                ),
                ToolMessage(
                    content='2025-12-05T06:45:39.167009',
                    name='get_current_time',
                    id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                    tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
                ),
                AIMessage(
                    content='The current time is **6:45 AM** (and about 39 seconds) on December 5th, 2025.\n\nNice to 
    meet you, Alice! How can I help you today?',
                    additional_kwargs={},
                    response_metadata={
                        'id': 'msg_01LmXyZkAzCY6cyuKS8WJ8fw',
                        'model': 'claude-sonnet-4-5-20250929',
                        'stop_reason': 'end_turn',
                        'stop_sequence': None,
                        'usage': {
                            'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                            'cache_creation_input_tokens': 0,
                            'cache_read_input_tokens': 0,
                            'input_tokens': 628,
                            'output_tokens': 47,
                            'server_tool_use': None,
                            'service_tier': 'standard'
                        },
                        'model_name': 'claude-sonnet-4-5-20250929',
                        'model_provider': 'anthropic'
                    },
                    id='lc_run--41bc347f-a9af-4a49-8695-c715b6c6a1be-0',
                    usage_metadata={
                        'input_tokens': 628,
                        'output_tokens': 47,
                        'total_tokens': 675,
                        'input_token_details': {
                            'cache_creation': 0,
                            'cache_read': 0,
                            'ephemeral_5m_input_tokens': 0,
                            'ephemeral_1h_input_tokens': 0
                        }
                    }
                ),
                HumanMessage(
                    content='What is my name?',
                    additional_kwargs={},
                    response_metadata={},
                    id='62de489f-984e-41ea-9df5-911f28ac9f29'
                ),
                AIMessage(
                    content='Your name is Alice! You told me that in your previous message.',
                    additional_kwargs={},
                    response_metadata={
                        'id': 'msg_01W9BdG5KRydSHvwxiSm82QG',
                        'model': 'claude-sonnet-4-5-20250929',
                        'stop_reason': 'end_turn',
                        'stop_sequence': None,
                        'usage': {
                            'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                            'cache_creation_input_tokens': 0,
                            'cache_read_input_tokens': 0,
                            'input_tokens': 683,
                            'output_tokens': 17,
                            'server_tool_use': None,
                            'service_tier': 'standard'
                        },
                        'model_name': 'claude-sonnet-4-5-20250929',
                        'model_provider': 'anthropic'
                    },
                    id='lc_run--7c5fb9ea-22fb-485b-b001-64a88d60679f-0',
                    usage_metadata={
                        'input_tokens': 683,
                        'output_tokens': 17,
                        'total_tokens': 700,
                        'input_token_details': {
                            'cache_creation': 0,
                            'cache_read': 0,
                            'ephemeral_5m_input_tokens': 0,
                            'ephemeral_1h_input_tokens': 0
                        }
                    }
                )
            ]
        },
        next=(),
        config={
            'configurable': {
                'thread_id': 'thread-1',
                'checkpoint_ns': '',
                'checkpoint_id': '1f0d15a9-6676-6128-8006-3d3e4bbef35c'
            }
        },
        metadata={'source': 'loop', 'step': 6, 'parents': {}},
        created_at='2025-12-04T21:45:44.910449+00:00',
        parent_config={
            'configurable': {
                'thread_id': 'thread-1',
                'checkpoint_ns': '',
                'checkpoint_id': '1f0d15a9-48eb-68d8-8005-bf9fa138fcef'
            }
        },
        tasks=(),
        interrupts=()
    )



## State History

Get all checkpoints for a thread (time travel).



```python
for state in agent.get_state_history(config):
    rich.print("checkpoint_id =", state.config["configurable"]["checkpoint_id"])
    rich.print("state =", state.values)
    print()
```


    checkpoint_id = 1f0d15a9-6676-6128-8006-3d3e4bbef35c




    state =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            ToolMessage(
                content='2025-12-05T06:45:39.167009',
                name='get_current_time',
                id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
            ),
            AIMessage(
                content='The current time is **6:45 AM** (and about 39 seconds) on December 5th, 2025.\n\nNice to meet 
    you, Alice! How can I help you today?',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01LmXyZkAzCY6cyuKS8WJ8fw',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 628,
                        'output_tokens': 47,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--41bc347f-a9af-4a49-8695-c715b6c6a1be-0',
                usage_metadata={
                    'input_tokens': 628,
                    'output_tokens': 47,
                    'total_tokens': 675,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            HumanMessage(
                content='What is my name?',
                additional_kwargs={},
                response_metadata={},
                id='62de489f-984e-41ea-9df5-911f28ac9f29'
            ),
            AIMessage(
                content='Your name is Alice! You told me that in your previous message.',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01W9BdG5KRydSHvwxiSm82QG',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 683,
                        'output_tokens': 17,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--7c5fb9ea-22fb-485b-b001-64a88d60679f-0',
                usage_metadata={
                    'input_tokens': 683,
                    'output_tokens': 17,
                    'total_tokens': 700,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            )
        ]
    }



    



    checkpoint_id = 1f0d15a9-48eb-68d8-8005-bf9fa138fcef




    state =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            ToolMessage(
                content='2025-12-05T06:45:39.167009',
                name='get_current_time',
                id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
            ),
            AIMessage(
                content='The current time is **6:45 AM** (and about 39 seconds) on December 5th, 2025.\n\nNice to meet 
    you, Alice! How can I help you today?',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01LmXyZkAzCY6cyuKS8WJ8fw',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 628,
                        'output_tokens': 47,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--41bc347f-a9af-4a49-8695-c715b6c6a1be-0',
                usage_metadata={
                    'input_tokens': 628,
                    'output_tokens': 47,
                    'total_tokens': 675,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            HumanMessage(
                content='What is my name?',
                additional_kwargs={},
                response_metadata={},
                id='62de489f-984e-41ea-9df5-911f28ac9f29'
            )
        ]
    }



    



    checkpoint_id = 1f0d15a9-48e9-6470-8004-b06591c73f1c




    state =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            ToolMessage(
                content='2025-12-05T06:45:39.167009',
                name='get_current_time',
                id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
            ),
            AIMessage(
                content='The current time is **6:45 AM** (and about 39 seconds) on December 5th, 2025.\n\nNice to meet 
    you, Alice! How can I help you today?',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01LmXyZkAzCY6cyuKS8WJ8fw',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 628,
                        'output_tokens': 47,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--41bc347f-a9af-4a49-8695-c715b6c6a1be-0',
                usage_metadata={
                    'input_tokens': 628,
                    'output_tokens': 47,
                    'total_tokens': 675,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            )
        ]
    }



    



    checkpoint_id = 1f0d15a9-48c8-64fa-8003-025ab6cae012




    state =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            ToolMessage(
                content='2025-12-05T06:45:39.167009',
                name='get_current_time',
                id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
            ),
            AIMessage(
                content='The current time is **6:45 AM** (and about 39 seconds) on December 5th, 2025.\n\nNice to meet 
    you, Alice! How can I help you today?',
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01LmXyZkAzCY6cyuKS8WJ8fw',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'end_turn',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 628,
                        'output_tokens': 47,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--41bc347f-a9af-4a49-8695-c715b6c6a1be-0',
                usage_metadata={
                    'input_tokens': 628,
                    'output_tokens': 47,
                    'total_tokens': 675,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            )
        ]
    }



    



    checkpoint_id = 1f0d15a9-2fb0-6f58-8002-afbc0a176f36




    state =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            ),
            ToolMessage(
                content='2025-12-05T06:45:39.167009',
                name='get_current_time',
                id='cb2214ac-15a4-4bd4-8f26-5fd670ade843',
                tool_call_id='toolu_01JaBNC7PEuum99dKmk1LTCs'
            )
        ]
    }



    



    checkpoint_id = 1f0d15a9-2fad-6cc2-8001-650ce5a904ba




    state =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            ),
            AIMessage(
                content=[
                    {
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'input': {},
                        'name': 'get_current_time',
                        'type': 'tool_use'
                    }
                ],
                additional_kwargs={},
                response_metadata={
                    'id': 'msg_01T51sHWbJVeqipSLwmt1bCL',
                    'model': 'claude-sonnet-4-5-20250929',
                    'stop_reason': 'tool_use',
                    'stop_sequence': None,
                    'usage': {
                        'cache_creation': {'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 0},
                        'cache_creation_input_tokens': 0,
                        'cache_read_input_tokens': 0,
                        'input_tokens': 562,
                        'output_tokens': 38,
                        'server_tool_use': None,
                        'service_tier': 'standard'
                    },
                    'model_name': 'claude-sonnet-4-5-20250929',
                    'model_provider': 'anthropic'
                },
                id='lc_run--94d60c18-db5b-4f89-b6a0-57931f1cd4b3-0',
                tool_calls=[
                    {
                        'name': 'get_current_time',
                        'args': {},
                        'id': 'toolu_01JaBNC7PEuum99dKmk1LTCs',
                        'type': 'tool_call'
                    }
                ],
                usage_metadata={
                    'input_tokens': 562,
                    'output_tokens': 38,
                    'total_tokens': 600,
                    'input_token_details': {
                        'cache_creation': 0,
                        'cache_read': 0,
                        'ephemeral_5m_input_tokens': 0,
                        'ephemeral_1h_input_tokens': 0
                    }
                }
            )
        ]
    }



    



    checkpoint_id = 1f0d15a9-146e-6f7e-8000-f91f7843c7fe




    state =
    {
        'messages': [
            HumanMessage(
                content='What time is it? Also, my name is Alice.',
                additional_kwargs={},
                response_metadata={},
                id='de5d4e0f-a282-475b-a6d9-f2a246e6a635'
            )
        ]
    }



    



    checkpoint_id = 1f0d15a9-146d-64b2-bfff-7fd9b369d9a3




    state =
    {'messages': []}



    

