Skip to main content

OpenInference Claude Agent SDK Instrumentation

Python auto-instrumentation for the Claude Agent SDK (Python). Traces query() and ClaudeSDKClient as OpenInference AGENT spans with prompt input, result output, session/model metadata, token counts, and tool child spans via hook injection.

  • query() – One span per call (one-off sessions).
  • ClaudeSDKClient – One span per response turn: each time you iterate receive_response() (or receive_messages()), a span is created for that turn. Use for continuous conversations.
  • Tools – Tool calls are captured as child TOOL spans via Claude Agent SDK hooks (PreToolUse/PostToolUse/PostToolUseFailure).

For detailed LLM and tool spans inside agent runs, use openinference-instrumentation-anthropic together with this package; the Agent SDK uses the Anthropic API under the hood.

Traces are OpenTelemetry-compatible and can be sent to any OTLP collector, Arize Phoenix (local), Phoenix Cloud, or Arize AX.

Installation

pip install openinference-instrumentation-claude-agent-sdk

Quickstart

pip install openinference-instrumentation-claude-agent-sdk claude-agent-sdk arize-phoenix opentelemetry-sdk opentelemetry-exporter-otlp

Option A – Phoenix Cloud: Create a free Phoenix Cloud account, create a space, and set PHOENIX_COLLECTOR_ENDPOINT and PHOENIX_API_KEY. Use your collector endpoint (e.g. https://<host>/v1/traces) as endpoint below.

Option B – Local Phoenix: Start Phoenix, then run your script:

python -m phoenix.server.main serve

Then in Python:

import asyncio
import os
from claude_agent_sdk import query, ClaudeAgentOptions
from openinference.instrumentation.claude_agent_sdk import ClaudeAgentSDKInstrumentor
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk import trace as trace_sdk
from opentelemetry.sdk.trace.export import SimpleSpanProcessor

# Phoenix Cloud: set PHOENIX_COLLECTOR_ENDPOINT (and PHOENIX_API_KEY for auth). Else local.
endpoint = os.environ.get("PHOENIX_COLLECTOR_ENDPOINT", "http://127.0.0.1:6006/v1/traces")
tracer_provider = trace_sdk.TracerProvider()
tracer_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter(endpoint)))
ClaudeAgentSDKInstrumentor().instrument(tracer_provider=tracer_provider)

async def main():
    async for message in query(
        prompt="What files are in this directory?",
        options=ClaudeAgentOptions(allowed_tools=["Bash", "Glob"]),
    ):
        if hasattr(message, "result"):
            print(message.result)

asyncio.run(main())

View traces in Phoenix Cloud, at http://localhost:6006 when running Phoenix locally, or in Arize AX.

Examples

Run the examples in this repo:

pip install -r examples/requirements.txt
export ANTHROPIC_API_KEY=your-key
python examples/basic_query.py
Example Description
basic_query.py Simple query() with OTLP export to Phoenix
query_with_tools.py query() with ClaudeAgentOptions and tools (Bash, Glob)
client_basic.py ClaudeSDKClient: one turn (query + receive_response)
client_multi_turn.py ClaudeSDKClient: multi-turn conversation
query_with_phoenix.py In-process Phoenix via phoenix.otel.register() (works with Phoenix Cloud or local; requires arize-phoenix)

See examples/README.md for details.

What is instrumented

  • query() – Each call is wrapped in a single AGENT span named ClaudeAgentSDK.query with:

    • Input: prompt text or JSON (for async message iterables)
    • Output: result text/JSON from the SDK result message
    • Metadata: session.id, llm.model_name, token counts, and llm.cost.total when available
    • Tools: TOOL child spans created via SDK hooks
  • ClaudeSDKClient – For multi-turn conversations:

    • connect(prompt=...) and query(prompt) record the prompt for the next response.
    • Each receive_response() iteration is wrapped in an AGENT span named ClaudeAgentSDK.ClaudeSDKClient.receive_response with the same input/output/metadata/tool spans as above.

Child LLM/tool spans (from the SDK’s internal Anthropic usage) are not created by this package; add openinference-instrumentation-anthropic and instrument Anthropic for that.

More Info

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file openinference_instrumentation_claude_agent_sdk-0.1.14.tar.gz.

File metadata

File hashes

Hashes for openinference_instrumentation_claude_agent_sdk-0.1.14.tar.gz
Algorithm Hash digest
SHA256 1c4ea1e75974e9e2895347a4b4399adfa061d89929b44438939801601b3edfd7
MD5 d657a0ed81e99baa45ec5ec6fc700be1
BLAKE2b-256 ede1ebb9ee04cc5fe0091fa09d9efd2f5c0ed54272a807b75c0c3b694e36fd3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for openinference_instrumentation_claude_agent_sdk-0.1.14.tar.gz:

Publisher: publish.yaml on Arize-ai/openinference

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openinference_instrumentation_claude_agent_sdk-0.1.14-py3-none-any.whl.

File metadata

File hashes

Hashes for openinference_instrumentation_claude_agent_sdk-0.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 720a674b828b3e2973bec20a36fe6935aa61bbc0457146b191202ab50fe49456
MD5 809413b8d195812e1117cd9163576a1a
BLAKE2b-256 2ace7a8222ed9f6d8d8393b0f7fa7a7765bff9d088132cb5922cd983cedcf1c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for openinference_instrumentation_claude_agent_sdk-0.1.14-py3-none-any.whl:

Publisher: publish.yaml on Arize-ai/openinference

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.14 This release

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page