Tools · · 2 min read

Claude Platform now exports OpenTelemetry traces: how to wire Messages API and Managed Agents into your observability stack

Anthropic added OpenTelemetry trace export to the Messages API, Claude Managed Agents and the Claude SDKs on October 14, 2026, in public beta. API spans need a destination added by an org admin in the Claude Console; SDK spans need a tracer provider in your app. Here is what each path gives you, the defaults to know, and why your spans might not show up.


Anthropic announced on October 14 that the Messages API, Claude Managed Agents and the Claude SDKs can now send OpenTelemetry (OTel) traces to any OTel tool. If you already export Claude Code or Cowork traces, the agents you build on the Claude Platform can land in the same place. The feature is in public beta.

The practical question for builders: what do I actually have to configure to see a Claude request, its tool calls and its token counts in my existing tracing tool, and what trips people up? Everything below comes from Anthropic’s OpenTelemetry overview, its SDK tracing guide and its API tracing guide.

Two export paths, and you probably want both

API tracing is configured in the Claude Console, not in code. An organization admin opens the OpenTelemetry settings page and adds a destination: a provider (or Custom), an OTLP endpoint URL, auth headers, a content mode, and which workspaces it covers. The API then emits spans for Messages API requests, model runs inside a request, server-run tools, Managed Agents turns, and other API calls like file uploads. Requirements per the docs: the admin role, and an OTLP/HTTP endpoint accepting protobuf at an HTTPS URL on port 443. A self-hosted OpenTelemetry Collector listens on 4318 by default, so you need to put it behind TLS on 443 or a proxy. Don’t append /v1/traces to the endpoint URL; the API adds it.

SDK tracing happens inside your application. Upgrade the SDK (pip install --upgrade anthropic in Python), register an OpenTelemetry tracer provider before your first call, and the SDK emits a span per request plus spans for tools run by the tool runner. No admin role is needed.

Set up both and a single trace shows your own span, the SDK client span, and the API server span with model requests and tool uses nested under it. Anthropic notes that requests to Claude Platform on AWS keep their API spans in separate traces.

Defaults worth knowing

  • Content is off by default. Both destinations and SDK clients start in Metadata only: IDs, timing, status, token counts, and names of agents, tools and MCP servers. Prompts and responses appear only in Full content mode (content_mode: "content" in the SDK, or ANTHROPIC_OPEN_TELEMETRY_TRACES_CONTENT_MODE=content).
  • 0.75 MB per span of content by default. Over that, content is truncated and anthropic.content.truncated is set to true. A full 1M-token context needs about 4 MB.
  • Partner platforms are pre-listed. The docs name Arize AI, Braintrust, Databricks, Datadog, Grafana Cloud, Honeycomb, Langfuse, LangSmith, New Relic, PostHog, Sentry and Splunk. Langfuse’s integration page describes the same two paths and asks for a project key pair and data region when you pick it as the provider.
  • Data handling: if your org has a HIPAA, FERPA or K-12 restriction with Anthropic, destinations export metadata only regardless of setting. Managed Agents isn’t eligible for zero data retention.

Why your spans might not appear

From the troubleshooting and setup sections:

  1. Tracer provider registered too late. The SDK only uses a provider registered before the first call you want traced.
  2. ANTHROPIC_OPEN_TELEMETRY=false is set somewhere, which disables SDK spans.
  3. Passing open_telemetry to the client overrides all ANTHROPIC_OPEN_TELEMETRY* env vars as a whole, so an env-var content mode silently stops applying.
  4. Your traceparent has the sampled flag off. The API then skips that request’s spans entirely.
  5. Java: another dependency pins opentelemetry-api below 1.57.0.

To check a destination, use Test in its menu, look for the anthropic.test span, and filter on service.name = claude-platform. The Console’s Delivery column should read Healthy within about a minute.

Pin your SDK version

Anthropic warns that during the beta, SDK options and the span schema can change in breaking ways, including renamed spans, attributes or environment variables. If you build dashboards or evals on these spans, pin the SDK version.

If you’re building agents on Anthropic’s primitives, this pairs naturally with the Computer Use, Skills and Files APIs going GA, and token counts on every span are a cheap way to verify the cuts from our Claude Code token overhead guide. For the billing side of agent usage, see Anthropic’s Agent SDK billing pause.

Source: Anthropic — Agent observability on the Claude Platform