Overview
The Fiddler Claude Code Plugin (fiddler-coding-agent-plugin) instruments Claude Code sessions and delivers per-turn OpenTelemetry traces to Fiddler. It runs as a set of Claude Code hooks (a small binary that fires on session events) and captures each turn as a nested trace with the user prompt, LLM response content, tool input/output, and token usage.
Plugin traces group into the same Fiddler session as native Claude Code traces, so the two can be used together.
This capability is currently in private preview and is not yet available to all customers. Contact your Fiddler Customer Success Manager to request access.
The plugin fails open: a hook error, a missing binary, or an unreachable endpoint never breaks or slows your Claude Code session. At worst, a turn’s trace is skipped.
Prerequisites
- Claude Code 2.1.120 or later. Full trace capture depends on hooks and payload fields introduced across the 2.1.x line, the most recent being the
duration_mstool-timing field added in 2.1.119. On older versions the plugin fails open, capturing less rather than breaking your session. ghCLI, authenticated (gh auth login). During private preview the plugin repository is private, so the plugin downloads its binary from a private GitHub Release using yourghauthentication. Each machine that runs the plugin needsghinstalled and authenticated with access tofiddler-labs/fiddler-coding-agent-pluginbefore the first session. Request access through your Fiddler account team.- A Fiddler GenAI application, with its application ID and an API key.
Installation
1
Add the marketplace
2
Install the plugin
3
Configure and activate
Add the configuration values below. The plugin activates on install; if Claude Code prompts you to, run
/reload-plugins to apply it without restarting. The plugin downloads its binary on the first session.Upgrading
New versions are published to the marketplace repository. Third-party marketplaces do not auto-update by default, so upgrades are manual. To move to a newer version, re-run the install command; it refreshes the marketplace and installs the latest version:1
Update the plugin
/plugin marketplace update fiddler-plugins, though the install command already does this.2
Activate the new version
Run
/reload-plugins if Claude Code prompts you; no restart is needed. On the next session the plugin downloads the binary matching the new version (again using your gh authentication) and caches it./plugin list.
Because the versioned binary is fetched from a private GitHub Release,
gh must still be authenticated with repository access when you upgrade, the same requirement as the first install.Configuration
Set three values under"env" in your Claude Code settings, either ~/.claude/settings.json (user-level) or .claude/settings.local.json (project-level):
All three values must be set for the plugin to send traces.
Optional Settings
These are read from the process environment (not from"env" in settings):
What You Get
Each user turn produces one trace in Fiddler, nested under a root agent span, with:- The user prompt and the assistant’s response for the turn.
- One LLM span per model call, with token usage (including cache tokens), model, and finish reason.
- One tool span per tool call, with the tool name, arguments, and result, plus the permission decision for the call.
- Error, refusal, and interrupt outcomes marked on the relevant spans.
Data Capture and Privacy
The plugin makes only outbound OTLP/HTTP calls to your configured Fiddler endpoint. The auth token is delivered through Claude Code’s plugin configuration (marked sensitive), is never logged, and is never written to plaintext project config.Troubleshooting
No Plugin Traces Appearing in Fiddler
- After installing or upgrading, make sure the plugin is active (run
/reload-pluginsif Claude Code prompts you), and confirmgh auth statusshows an authenticated account with access tofiddler-labs/fiddler-coding-agent-plugin(needed to download the binary). - Confirm all three configuration values are set (
CLAUDE_PLUGIN_OPTION_OTLP_URL,CLAUDE_PLUGIN_OPTION_APP_ID,CLAUDE_PLUGIN_OPTION_AUTH_TOKEN). If any is empty, the plugin sends nothing. - Confirm
CLAUDE_PLUGIN_OPTION_APP_IDis a valid application ID; Fiddler drops spans without one. - Confirm the auth token is the bare token, with no
Bearerprefix.
Some Turns Are Missing Token Usage or the Response
Turns that were interrupted, or that were in flight when the session ended, are recovered with the prompt but without token usage or response text, which are available only when a turn completes normally.Related Documentation
- Claude Code Integration: Native, no-plugin OTel trace ingestion for Claude Code (per-model-call timing; complements this plugin)
- OpenTelemetry Integration: GenAI semantic conventions and manual OTel instrumentation
- Fiddler OTel SDK: Foundation package for custom OTel instrumentation