# LangGraph | Sentry for JavaScript

This integration works in the Node.js, Cloudflare Workers, Vercel Edge Functions, and browser runtimes. It requires SDK version `10.25.0` or higher.

*Import name: `Sentry.langGraphIntegration`*

LangGraph is instrumented via the [`langGraphIntegration`](https://docs.sentry.io/platforms/javascript/configuration/integrations/langgraph/langgraph.md), which automatically captures spans for LangGraph operations including agent invocations, graph executions, and node operations.

For browser applications, you need to manually instrument the LangGraph graph using the `instrumentLangGraph` helper:

```javascript
import * as Sentry from "@sentry/browser";
import { ChatOpenAI } from "@langchain/openai";
import {
  StateGraph,
  MessagesAnnotation,
  START,
  END,
} from "@langchain/langgraph";

// Create LLM call
const llm = new ChatOpenAI({
  modelName: "gpt-4o",
  apiKey: process.env.OPENAI_API_KEY,
});

async function callLLM(state) {
  const response = await llm.invoke(state.messages);

  return {
    messages: [...state.messages, response],
  };
}

// Create the agent
const agent = new StateGraph(MessagesAnnotation)
  .addNode("agent", callLLM)
  .addEdge(START, "agent")
  .addEdge("agent", END);

const graph = agent.compile({ name: "my_agent" });

// Manually instrument the graph
Sentry.instrumentLangGraph(graph, {
  recordInputs: true,
  recordOutputs: true,
});

// Invoke the agent
const result = await graph.invoke({
  messages: [
    new SystemMessage("You are a helpful assistant."),
    new HumanMessage("Hello!"),
  ],
});
```

## [Options](https://docs.sentry.io/platforms/javascript/configuration/integrations/langgraph.md#options)

### [`recordInputs`](https://docs.sentry.io/platforms/javascript/configuration/integrations/langgraph.md#recordinputs)

*Type: `boolean`*

Records inputs to LangGraph operations (such as messages and state data passed to the graph).

Defaults to `true` if `sendDefaultPii` is `true`.

```javascript
Sentry.init({
  integrations: [Sentry.langGraphIntegration({ recordInputs: true })],
});
```

### [`recordOutputs`](https://docs.sentry.io/platforms/javascript/configuration/integrations/langgraph.md#recordoutputs)

*Type: `boolean`*

Records outputs from LangGraph operations (such as generated responses, agent outputs, and final state).

Defaults to `true` if `sendDefaultPii` is `true`.

```javascript
Sentry.init({
  integrations: [Sentry.langGraphIntegration({ recordOutputs: true })],
});
```

## [Configuration](https://docs.sentry.io/platforms/javascript/configuration/integrations/langgraph.md#configuration)

By default this integration adds tracing support for LangGraph operations including:

* **Agent Creation** (`gen_ai.create_agent`) - Captures spans when compiling a StateGraph into an executable agent
* **Agent Invocation** (`gen_ai.invoke_agent`) - Captures spans for agent execution via `invoke()`

## [Supported Versions](https://docs.sentry.io/platforms/javascript/configuration/integrations/langgraph.md#supported-versions)

* `@langchain/langgraph`: `>=0.2.0 <2.0.0`
