The CLI exposes --checkpoint and TRADINGAGENTS_CHECKPOINT_ENABLED, but the interactive CLI execution path does not actually
configure or use the LangGraph checkpointer.
TradingAgentsGraph.propagate() configures the SQLite checkpointer, but cli/main.py::run_analysis() bypasses propagate() and
directly calls:
graph.graph.stream(init_agent_state, **args)
The graph is therefore compiled without a checkpointer and without a stable thread_id.
Reproduction
- Run the CLI with checkpointing enabled:
--checkpoint
or set:
TRADINGAGENTS_CHECKPOINT_ENABLED=true
- Start an analysis for a ticker and date.
- Interrupt or crash the run after at least one graph node completes.
- Run the same analysis again with the same ticker, date, analyst selection, and research depth.
Actual behavior
- No resumable checkpoint is created by the CLI path.
- The second run starts from the beginning.
- The CLI does not report that it is resuming from a checkpoint.
- The checkpoint flag is accepted, but has no effect on the actual CLI graph execution.
Expected behavior
When checkpointing is enabled:
- The CLI should compile the graph with the SQLite checkpointer.
- It should provide a deterministic thread_id for the ticker, date, and graph shape.
- A fresh run should receive the initial state.
- A resumed run should pass None as the graph input so LangGraph resumes from the latest checkpoint.
- Checkpoints should be cleared after successful completion.
Root cause
The checkpoint configuration exists, and the programmatic propagate() path sets up the checkpointer. However, the CLI has a
separate streaming path for its Live UI and does not call the checkpoint setup logic before calling graph.stream().
Regression test
A CLI regression test should:
- Use a two-node graph.
- Crash in the second node on the first run.
- Assert that the first node ran once and a checkpoint exists.
- Run again with the crash disabled.
- Assert that the first node still ran only once, proving the second run resumed rather than replayed it.
- Assert that the checkpoint is cleared after successful completion.
The CLI exposes
--checkpointandTRADINGAGENTS_CHECKPOINT_ENABLED, but the interactive CLI execution path does not actuallyconfigure or use the LangGraph checkpointer.
TradingAgentsGraph.propagate()configures the SQLite checkpointer, butcli/main.py::run_analysis()bypassespropagate()anddirectly calls:
The graph is therefore compiled without a checkpointer and without a stable thread_id.
Reproduction
--checkpointor set:
TRADINGAGENTS_CHECKPOINT_ENABLED=trueActual behavior
Expected behavior
When checkpointing is enabled:
Root cause
The checkpoint configuration exists, and the programmatic propagate() path sets up the checkpointer. However, the CLI has a
separate streaming path for its Live UI and does not call the checkpoint setup logic before calling graph.stream().
Regression test
A CLI regression test should: