Dash0 acquires Polar Signals
Monitor Claude Code with cost visibility, adoption tracking, and productivity signals across your engineering teams — without changing how developers work.
Claude Code is Anthropic's agentic coding tool that runs in your terminal. It can emit OpenTelemetry metrics and events about every session — token usage, cost, tool calls, and the pull requests it helps ship. Sending that telemetry to Dash0 gives engineering leaders and platform teams a single place to understand how Claude Code is adopted, what it costs, and the impact it has — without changing how developers work.
The Dash0 agent plugin captures Claude Code agent activity as OpenTelemetry traces — tool calls, LLM invocations, token usage, and errors. Sending this data to Dash0 powers the AI Coding section, giving you cost visibility, adoption tracking, and productivity signals across your teams.
Install the plugin from the official Claude Code marketplace by running this command inside Claude Code:
When asked for the installation scope, choose the user scope — this installs the plugin once for every project you work on, and also works with git worktrees and multiple clones of the same repository.
Configure the plugin through the plugin UI: run /plugin, select dash0 under Installed, choose Configure,
and set the OTLP endpoint, auth token, dataset, and team name. The auth token is stored in your OS keychain. Run
/reload-plugins afterwards to apply the changes.
Alternatively, ask the agent directly by entering a prompt like this:
dash0: connected.Instead of having every developer install and configure the plugin, admins can roll it out to the whole organization using Claude Code managed settings. Managed settings take top precedence and cannot be overridden by user or project settings. This requires a Team or Enterprise plan and the Owner or Primary Owner role.
In the claude.ai Organization plugins admin page, set the plugin to Required (auto-installed, not removable) or Installed by default. This is what downloads the plugin onto each member's machine; it takes effect on their next session.
Managed settings only enable and configure a plugin — they never fetch it. Skipping this step is the most likely
reason a rollout produces no telemetry: enabledPlugins names a plugin that was never downloaded, so there is nothing
to load.
Add the following payload in claude.ai → Admin Settings → Claude Code → Managed settings. Clients fetch it at startup and re-poll hourly.
Providing AUTH_TOKEN here makes the rollout fully zero-touch, but the token is then stored in plaintext on every machine
in the fleet (in ~/.claude/remote-settings.json) and in the console. Use an ingest-only token scoped to the single
dataset you send to, so a leak can write telemetry there and read nothing. If policy forbids plaintext credentials at rest,
omit AUTH_TOKEN and have each developer add it once via /plugin → Configure (stored in the OS keychain) — this is
no longer zero-touch.
Do not let developers also self-install the plugin. If a developer already installed it at user scope, both installs are enabled and every span is exported twice. Let managed settings be the single source of truth.
Do not add TEAM_NAME to the managed settings payload above. Managed values cannot be overridden by the developer, so
setting it centrally tags every developer with the same team and leaves nobody able to correct it. Omitting it is safe —
pluginConfigs merges per key, so the rest of the managed configuration still applies while each developer's own
TEAM_NAME passes through.
Per-developer team names come from team_name: in ~/.claude/dash0-agent-plugin.local.md, or from the DASH0_TEAM_NAME
environment variable for the Cursor, Copilot, and Codex integrations. Distributing those per-user values is an
organizational concern the plugin cannot solve — whichever system already tracks team membership has to write the file
or export the variable, and update it when someone changes teams. A repository-level .claude/dash0-agent-plugin.local.md
takes precedence over the user-level file, so a checked-in team name file will hide a provisioned one for anyone working
in that repo.
To verify the rollout, a developer can run /status → Setting sources (should list Enterprise managed settings) and
claude plugin list (should show exactly one Dash0 identity with Status: ✔ enabled and Scope: managed).
For the full managed-settings reference — including the Dash0 marketplace payload, the MDM on-disk alternative, per-team attribution, and network prerequisites — see the Dash0 Agent Plugin README.