Dash0 acquires Polar Signals
Track what the GitHub Copilot app costs, who uses it, and which pull requests it helps ship, across your engineering teams.
The GitHub Copilot app is GitHub's desktop app for agentic coding. The Dash0 agent plugin adds an extension to it that sends an OpenTelemetry trace for every turn. Each trace records token usage, the model, tool and MCP calls, and sub-agent activity. Dash0 links those sessions to the pull requests they help ship. Engineering leaders and platform teams see in one place how widely the Copilot app is used, what it costs, and what it delivers.
The Dash0 agent plugin includes an extension for the GitHub Copilot app. The extension joins each session, reads its events, and sends one trace per turn, with token usage per model, tool and MCP calls, and sub-agent activity. Dash0 prices the tokens to show cost. It leaves prompt and response text out unless you turn it on. See Data collected and privacy. The AI Coding section in Dash0 then shows what the Copilot app costs, how widely your teams use it, and what it helps ship.
The Copilot app and Copilot CLI read the same configuration file, so you configure Dash0 once for both. To set up the CLI, use the GitHub Copilot CLI integration.
amd64 or
arm64.Ask Copilot in the app to install the extension, and give it the link to the repository:
Start a new session and send any prompt. The extension starts with the first prompt and posts
dash0: telemetry is not active ... Run /dash0-configure. to the session timeline. Then run the configure skill:
When prompted, enter your Dash0 connection details:
{{endpoint_otlp_http}}{{token_ingestion}}{{dataset}}For the privacy options (omit_io, omit_user_info), see Data collected and privacy.
For help choosing a dataset, see the
dataset documentation.
Dash0 breaks Copilot app activity down by user and model without extra setup. To break it down by team as well, enter a
team name when you run /dash0-configure. The extension sends it as dash0.team.name on every span.
dash0: connected. The extension starts with the first prompt, so the line appears after
it.chat <model> span with
token usage, an execute_tool <Name> span per tool call, and an invoke_agent <agent> span per sub-agent.If no traces arrive, add debug: true and debug_file: /tmp/dash0-copilot-app-debug.log to
~/.copilot/dash0-agent-plugin.local.md. The extension then writes every span it sends to that file as a
[dash0:trace] line. If the lines are there but Dash0 shows nothing, check the endpoint and token.
Delete ~/.copilot/extensions/copilot-app/ and start a new session. Keep ~/.copilot/dash0-agent-plugin.local.md if
you still use the Copilot CLI plugin, which reads the same file.
The extension sends spans over OTLP/HTTP to the endpoint you configure. It authenticates with your auth token and sets
the Dash0-Dataset header when you configure a dataset. Before it runs the binary from
GitHub Releases, it checks it against the release checksums.
The extension always sends:
user.name and user.email, or the OS account name when git has no name set.bash tool, only the binary name (for example git or npm), not the full command
line.By default the extension does not send prompts, responses, tool inputs, or tool outputs. With omit_io at its default
of true, it replaces them with <REDACTED>, and a failed turn reports only its error category. With omit_io: false,
it sends that content truncated at 16 KB per attribute. It does not scrub secrets, so file contents, command output, and
anything pasted into a prompt reach Dash0 unchanged.
With omit_user_info: true (default false), the extension hashes user.name, drops user.email, and
replaces your home directory in the working directory with ~. With
omit_identity_fallback: true, it drops the OS account name instead of reporting it. Set these options in the YAML
frontmatter of ~/.copilot/dash0-agent-plugin.local.md
(%USERPROFILE%\.copilot\dash0-agent-plugin.local.md on Windows).
To turn the extension off in one repository, commit .copilot/dash0-agent-plugin.local.md with enabled: false in the
YAML frontmatter. The app runs each session in a fresh worktree, so an uncommitted file has no effect. The project file
replaces the global file in that repository, and it also turns off the Copilot CLI plugin there.