StateGraph, ToolNode, stores, checkpointers, or direct state updates.
Install
Net-new VerifiedX code
This is usually the only VerifiedX delta in an existing pure LangGraph setup.That one install call is the few-LOC path. Your existing graph nodes,
Command.update, ToolNode, tools, stores, and checkpointer stay the same.In Python,
install_langgraph(...) patches StateGraph.compile and LangChain BaseTool.invoke. In TypeScript, installLanggraph(...) patches StateGraph.compile, StructuredTool.call, and ToolNode.runTool.Your LangGraph surface is the config. VerifiedX uses your existing node names, tool names, descriptions, schemas, store namespaces, and state-update surfaces as the source of truth for what to preflight.
If you want explicit wrapping instead of install
Most builders do not need this, but it is available.
You normally do not need to instantiate
VerifiedXCheckpointer manually. install and compile handle LangGraph checkpointers for you.Composed systems
If this LangGraph run is part of a larger multi-agent or agent+human workflow, pass upstream context into VerifiedX so the current graph run has better system and situational awareness before it takes a high-impact action. This is useful when a supervisor agent, parent workflow, or human reviewer already has context that the current graph run should use before taking action. VerifiedX does not require a fixed schema for this. Pass the upstream context you already have in any JSON-serializable shape.Upstream context is supporting workflow context from outside the current run. It is not proof that this run already executed any local action.
What the adapter already captures
Once attached, VerifiedX captures native LangGraph surfaces across both SDKs, including:StateGraph.compile- Node registration through
add_nodeoraddNode - Graph execution through
invoke,ainvoke,stream, andastreamwhere available - Selected tool history from
AIMessage.tool_callsandToolMessage.tool_call_id - Tool execution through LangChain tool surfaces
- Direct state mutations through
Command.update - Direct compiled state mutations through
graph.update_stateorgraph.updateState - Store reads through
store.getandstore.search - Store writes through
store.putandstore.delete - Checkpoint events through
checkpointer.putandput_writesorputWrites
What gets preflighted
VerifiedX preflights the high-impact LangGraph boundaries directly. That includes:- Wrapped tool executions
store.putstore.deleteCommand.update- Compiled
graph.update_stateorgraph.updateState
store.getstore.searchgraph.get_stateorgraph.getState
Framework and provider attribution
The framework stayslanggraph on this adapter path, even when your underlying model or tool-call shape comes from another provider.
When LangGraph carries provider hints, VerifiedX still records them truthfully. For example:
- OpenAI-shaped tool call IDs can infer
provider: "openai" - Anthropic-shaped tool call IDs can infer
provider: "anthropic"
langgraph, while provider attribution stays accurate when LangGraph exposes it.
What to expect at runtime
Protected LangGraph boundaries can return:allowallow_with_warningreplan_requiredgoal_fail_terminal
AIMessage.tool_calls, VerifiedX reuses that preflight at execution time instead of sending a duplicate boundary request.
Pricing note
One protected action check equals one real boundary preflight. Taint, event ingest, execution reports, and decision reads are all included at that price. The Free Sandbox includes every language, provider, framework, and adapter. VerifiedX does not replace your orchestrator or workflow. It returns receipts your system can keep local, route downstream, or pass upstream.If your graph is specifically built around provider-native model loops, see the LangGraph OpenAI and LangGraph Anthropic pages for provider-specific examples on top of this same LangGraph boundary layer.