# What's the difference between a LangChain agent and a LangGraph agent?

A LangChain agent built with `create_agent`, the framework's standard way to build one since LangChain 1.0 shipped in October 2025, already runs on LangGraph underneath: LangChain's own release notes say it "uses LangGraph under the hood to run this loop." The older `AgentExecutor` class a LangChain agent used to run on is gone from the main package, moved into a separate `langchain-classic` package kept for backwards compatibility. So the real choice isn't between two different runtimes anymore, it's between two levels of control: `create_agent` gives you a prebuilt loop with middleware for common needs like human approval or summarization, and dropping to LangGraph's own `StateGraph` gives you the nodes, edges, and state object directly.

That second option is what [the OpenAI Agents SDK draws a similar line against](/answers/openai-agents-sdk-evals/whats-the-difference-between-the-openai-agents-sdk-and-langgraph): a thin, model-first loop against a graph you build. LangChain's own agent no longer sits fully on the model-first side of that line, since it's a thin layer over the same graph.

---

Sources:
- LangChain and LangGraph Agent Frameworks Reach v1.0 Milestones: https://www.langchain.com/blog/langchain-langgraph-1dot0 (fetched 2026-09-24)
- AgentExecutor reference (langchain_classic): https://reference.langchain.com/python/langchain-classic/agents/agent/AgentExecutor (fetched 2026-09-24)

Source: https://tessary.ai/answers/langgraph-evals/whats-the-difference-between-a-langchain-agent-and-a-langgraph-agent
More on Langgraph evals: https://tessary.ai/answers/langgraph-evals
From Tessary, agent reliability for AI agents in production: https://tessary.ai
