---
title: "Agent Tracing"
description: "Monitor agents with token usage, latency, tool execution, and error tracking."
url: https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/
---

# Set Up Agent Tracing for Cloudflare

With [Sentry Agent Tracing](https://docs.sentry.io/product/agents/dashboards.md), you can monitor and debug your AI systems with full-stack context. You'll be able to track key insights like token usage, latency, tool usage, and error rates — and group multi-turn chats in [Conversations](https://docs.sentry.io/product/agents/conversations.md). Agent Tracing data is fully connected to your other Sentry data like logs, errors, and traces.

## [Supported Instrumentation](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#supported-instrumentation)

As of SDK version `11.0.0`, Sentry auto-instruments the most popular AI SDKs and frameworks out of the box — no manual setup is required. Just enable [tracing](https://docs.sentry.io/platforms/javascript/guides/cloudflare/tracing.md), then pick your AI stack below. Each integration page has the details.

[![cloudflare icon](https://docs.sentry.io/_next/static/media/cloudflare.7e288bf9.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/workers-ai.md)

[Workers AI](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/workers-ai.md)

[![cloudflare icon](https://docs.sentry.io/_next/static/media/cloudflare.7e288bf9.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/agents-sdk.md)

[Agents SDK](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/agents-sdk.md)

[![vercel icon](https://docs.sentry.io/_next/static/media/vercel.08882b16.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/vercelai.md)

[Vercel AI SDK](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/vercelai.md)

[![openai icon](https://docs.sentry.io/_next/static/media/openai.2d7a0936.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/openai.md)

[OpenAI](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/openai.md)

[![anthropic icon](https://docs.sentry.io/_next/static/media/anthropic.6478e781.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/anthropic.md)

[Anthropic](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/anthropic.md)

[![google-genai icon](https://docs.sentry.io/_next/static/media/gemini.6a0c6609.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/google-genai.md)

[Google Gen AI SDK](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/google-genai.md)

[![langchain icon](https://docs.sentry.io/_next/static/media/langchain.00856afb.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/langchain.md)

[LangChain](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/langchain.md)

[![langgraph icon](https://docs.sentry.io/_next/static/media/langgraph.0ea576b7.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/langgraph.md)

[LangGraph](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/langgraph.md)

[![mistral icon](https://docs.sentry.io/_next/static/media/mistral.9a6254c9.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/mistral.md)

[Mistral AI](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/mistral.md)

[![groq icon](https://docs.sentry.io/_next/static/media/groq.fa8427cb.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/groq.md)

[Groq](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/groq.md)

[![together-ai icon](https://docs.sentry.io/_next/static/media/default.615d3e47.svg)](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/together-ai.md)

[Together AI](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/integrations/together-ai.md)

[![mastra icon](https://docs.sentry.io/_next/static/media/mastra.0ffd9091.svg)](https://docs.sentry.io/platforms/javascript/guides/mastra.md)

[Mastra](https://docs.sentry.io/platforms/javascript/guides/mastra.md)

[![eve icon](https://docs.sentry.io/_next/static/media/eve.1fd15661.svg)](https://docs.sentry.io/platforms/javascript/guides/eve.md)

[Eve](https://docs.sentry.io/platforms/javascript/guides/eve.md)

[![flue icon](https://docs.sentry.io/_next/static/media/flue.066f2fe9.svg)](https://docs.sentry.io/platforms/javascript/guides/flue.md)

[Flue](https://docs.sentry.io/platforms/javascript/guides/flue.md)

[![pi-durable icon](https://docs.sentry.io/_next/static/media/pi-durable.a561f483.svg)](https://docs.sentry.io/platforms/javascript/guides/pi-durable.md)

[Pi Durable](https://docs.sentry.io/platforms/javascript/guides/pi-durable.md)

## [Compose Cloudflare Instrumentation](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#compose-cloudflare-instrumentation)

A Cloudflare AI application can need three independent layers. Inspect the host, every model client it calls, and its conversation IDs instead of stopping after the first integration:

1. **Instrument the host.** Use the [Vite plugin](https://docs.sentry.io/platforms/javascript/guides/cloudflare/install/vite-plugin.md), which wraps your Worker and your [Agents SDK](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/agents-sdk.md) classes at build time. If you deploy with `wrangler` directly, wrap them yourself as shown in the [Wrangler setup](https://docs.sentry.io/platforms/javascript/guides/cloudflare/install/wrangler.md).
2. **Instrument each model client.** Workers AI (`env.AI`) is automatic when the Sentry host wrapper supplies the instrumented `env`. For bundled provider SDKs, use Vite build-time instrumentation or the provider's manual wrapper. Follow the matching integration page for Vercel AI, LangChain, LangGraph, or another library.
3. **Group the conversation.** The Agents SDK can infer a conversation ID. For other chat applications, including Workers AI without the Agents SDK, set one before the model or tool calls. See [Tracking Conversations](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#tracking-conversations).

For example, an Agents SDK class that calls `env.AI.run()` needs the Agents SDK host setup and Workers AI model instrumentation. The host wrapper supplies the instrumented binding, so do not add another provider wrapper around the same `env.AI` call.

Flue is the exception to this composition. Its blueprint owns the host and model instrumentation. Do not add another Sentry provider integration to Flue-generated model calls, or token and cost totals will be counted twice.

## [Tracking Conversations](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#tracking-conversations)

[Conversations](https://docs.sentry.io/product/agents/conversations.md) groups multi-turn AI activity into a single replay of messages and tool calls. Use `setConversationId()` so every AI span in a chat session shares the same `gen_ai.conversation.id`.

Some integrations infer a conversation ID automatically. For everything else (including Workers AI), set it yourself at the start of **every request or operation that makes AI calls**, before those calls run. Reuse the same session ID across messages in the chat. The ID is applied to AI-related spans on the current isolation scope (which is typically request-scoped). Pass `null` to unset it.

```javascript
Sentry.setConversationId("conv_abc123");
```

### [Identifying Users in Conversations](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#identifying-users-in-conversations)

The [Conversations](https://docs.sentry.io/product/agents/conversations.md) view includes a **User** column. To populate it, call `setUser` once per request or session, before any AI calls:

```javascript
Sentry.setUser({
  id: "user_123",
  email: "jane@example.com",
  username: "jane",
});
```

Any of `id`, `email`, or `username` is sufficient — the Conversations tab displays whichever fields are present. See the [setUser API reference](https://docs.sentry.io/platforms/javascript/guides/cloudflare/configuration/apis.md#setUser) for the full list of supported fields.

## [Options](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#options)

### [Privacy Controls](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#privacy-controls)

The SDK records generative AI inputs and outputs by default. To turn them off:

```typescript
import { defineCloudflareOptions } from "@sentry/cloudflare";

export default defineCloudflareOptions((env) => ({
  dsn: "https://<key>@o<orgId>.ingest.sentry.io/<projectId>",
  tracesSampleRate: 1.0,
  dataCollection: {
    genAI: { inputs: false, outputs: false },
  },
}));
```

On Cloudflare, control Vercel AI I/O with integration-level `record*` options or with `experimental_telemetry` per call. See each integration page.

### [Streaming Gen AI Spans](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#streaming-gen-ai-spans)

From SDK `10.61.0`, `gen_ai` spans are sent as standalone envelope items (avoids large-payload drops; required for [Conversations](https://docs.sentry.io/product/agents/conversations.md)).

## [Manual Instrumentation](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#manual-instrumentation)

You can also instrument agent spans yourself. See [manual instrumentation](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/manual-instrumentation.md).

## [MCP Server Monitoring](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing.md#mcp-server-monitoring)

If you're building MCP (Model Context Protocol) servers, Sentry can also track tool executions, prompt retrievals, and resource access. See [MCP Monitoring](https://docs.sentry.io/platforms/javascript/guides/cloudflare/mcp-monitoring.md) for setup instructions.

## Pages in this section

- [Manual Instrumentation](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/manual-instrumentation.md)
- [Agents SDK](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/agents-sdk.md)
- [Workers AI](https://docs.sentry.io/platforms/javascript/guides/cloudflare/agent-tracing/workers-ai.md)
