Coding agents

    Trace Claude Code sessions with OpenTelemetry

    Claude Code exports OpenTelemetry itself; one command turns every turn into a trace with its subagents nested where they ran.

    Set up Claude Code

    The snippet is copied from the SDK README, not paraphrased. Keys shown as tk_live_... are the environment key from Settings › Environments.

    Python CLI
    pip install syntropylabs-evalkit
    evalkit coding install --vendor claude-code --key tk_live_...
    evalkit coding status
    evalkit coding doctor

    Copied from sdk-py/README.md § Coding agents (Claude Code · Codex · Gemini CLI · Cursor · Windsurf · OpenCode)

    Install → first trace

    1. 01

      Install the SDK

      pip install syntropylabs-evalkit or npm install syntropylabs-evalkit. Installing the SDK also installs the evalkit command.

    2. 02

      Point Claude Code at your environment

      evalkit coding install --vendor claude-code --key tk_live_... — the key and endpoint are stored once in ~/.config/evalkit/config.env; the key is never printed.

    3. 03

      Start a new agent session

      Claude Code reads its configuration when a session starts, so an already-open session keeps sending nothing. Open a new one and run one prompt.

    4. 04

      Check and open the trace

      evalkit coding status shows what was written; evalkit coding doctor posts one synthetic turn and reads it back. The turn appears in Traces as one trace.

    What a turn looks like

    Sample data in the product’s own table. Hover, focus or tap a claim to see the columns it points at.

    Sample run

    Operation Service StatusModel LatencyTokens≈CostScore
    support_agent.turn8f3a1c0d94e2session sess_4b1esupport-apiokgpt-4o-mini1.84 s3,412$0.000692%auto
    refund_agent.turnc21d7e5a30b8session sess_9a02tool looprefund-workerokclaude-sonnet-44.31 s7,905$0.038968%auto
    claude-code.turn5be04f7d1a96session sess_f77cClaude Codeunsetclaude-sonnet-448.20 s61,208$0.19
    rag.answere9a2b6c4d015errordocs-boterrorgpt-4o6.02 s9,880$0.031241%auto
    voice.turn17c8d3f2a4e0session sess_20d1ivr-agentokgpt-4o-realtime0.92 s1,104$0.0071

    fig. 1 · the traces table this integration fills · sample data

    What you see

    Taken from the SDK READMEs’ coverage tables. with flag means the signal leaves your machine only when you opt in.

    What Syntropylabs shows for Claude Code
    SignalCapturedDetail
    One tree per turnyesthe agent’s own spans; --no-traces falls back to flat log events
    Tool callsyes
    Tool outputwith flagwith --capture full
    Prompt and replywith flagwith --capture full
    Subagentsyesnested under the Agent tool call
    Tokens and costyestokens on the span, cost from the api_request event

    Limitations

    • Prompt, reply and tool text leave your machine only with --capture full; the default is minimal.
    • Cost arrives on a separate usage record that is merged onto the model call. A lost record leaves a turn priced only by the catalogue estimate.
    • Native tool output covers shell commands only, and only with tool content on. Other tools are covered by the PostToolUse hook the installer adds; a tool row without a result is legitimate.

    Next steps

    Trace Claude Code today

    Tracing is free for one project on every plan, coding-agent traces included. Evaluations, datasets and simulation are Pro and up.