LangGraph
Agent Readiness
The pre-flight check for LangGraph applications. Detects StateGraph cycles, missing END conditions, and token consumption patterns.
Common LangGraph Logic Flaws
Patterns that static analysis tools like linters don't catch.
Graph Cycles
StateGraph edges that create cycles without conditional routing to END
GraphRecursionError
Exceeding recursion_limit due to missing termination conditions
State Accumulation
Unbounded message lists in state growing with each graph step
Detection Patterns
LangGraph-specific detection patterns with code examples.
Graph Cycle Without END
CRITICALStateGraph edges create a cycle with no path to the END node.
graph = StateGraph(AgentState)
graph.add_node("agent", call_agent)
graph.add_node("tools", call_tools)
# Cycle: agent -> tools -> agent (no END!)
graph.add_edge("agent", "tools")
graph.add_edge("tools", "agent")
graph.set_entry_point("agent")
app = graph.compile()
# Raises GraphRecursionError after 25 iterationsgraph = StateGraph(AgentState)
graph.add_node("agent", call_agent)
graph.add_node("tools", call_tools)
# Conditional edge routes to END when done
graph.add_conditional_edges("agent", should_continue, {
"continue": "tools",
"end": END
})
graph.add_edge("tools", "agent")
graph.set_entry_point("agent")
app = graph.compile()Non-Deterministic Exit
HIGHLoop termination depends on LLM output, which may never signal completion.
def should_continue(state):
# LLM decides - non-deterministic!
last_message = state["messages"][-1]
if "DONE" in last_message.content:
return "end"
return "continue" # May never return "end"def should_continue(state):
last_message = state["messages"][-1]
# Deterministic fallback after N steps
if len(state["messages"]) > 20:
return "end"
if "DONE" in last_message.content:
return "end"
return "continue"Getting Started
Run Inkog against your LangGraph codebase.
Run the scanner
npx -y @inkog-io/cli scan ./my-langgraph-appReview findings
Inkog traces data flow through your LangGraph code and reports issues with severity levels and line numbers.
Address issues
Apply the suggested fixes based on severity and re-scan to verify.
LangGraph Compliance Reports
Automated mapping to global AI governance frameworks.
EU AI Act
Article 14, 15, 12
NIST AI RMF
MAP/MEASURE/MANAGE
OWASP LLM
Top 10 Coverage
ISO 42001
AI Management
LangGraph Readiness FAQ
Does Inkog detect GraphRecursionError?
Yes. Inkog analyzes your StateGraph definition and identifies cycles that will trigger GraphRecursionError. It finds the issue at development time, not runtime.
How does Inkog analyze LangGraph?
Inkog has a dedicated LangGraph adapter that parses StateGraph definitions, add_node, add_edge, and add_conditional_edges calls. It builds the graph topology and detects cycles, missing END routes, and state accumulation.
Does Inkog support MessageGraph?
Yes. Both StateGraph and MessageGraph are supported. The adapter understands both patterns and their specific termination requirements.
Scan Your LangGraph Application
Free tier available. No credit card required.