Skip to main content
The Weave Copilot plugin is not a VS Code extension Weave installs. It turns on GitHub Copilot Chat’s built-in OpenTelemetry export so Copilot itself sends session, prompt, tool, edit, and model telemetry to Weave. Unlike the GitHub Copilot integration — which rides on your GitHub App connection and reports org usage and billed spend — the plugin works on any Copilot plan that can emit Copilot Chat OTEL, including individual setups, and reports prompt-, edit-, and tool-level detail per developer.
The GitHub Copilot page covers usage and cost synced from GitHub. This page covers the per-machine Plugin, which adds conversation-level telemetry. Run both: the plugin for per-developer activity, GitHub for seat and usage spend.

What’s tracked

Copilot Chat emits OTLP logs and traces. Weave stores:
  • Session activity — session start, duration, model, git repository/branch/commit, and final status
  • Prompts — prompt submissions and (when content capture is on) prompt text for activity classification
  • Agent output — assistant replies, reasoning, and user feedback ratings (content follows your org policy)
  • Tool calls — tool name, type, success, duration, model, and (when allowed) tool input
  • File edits — relative path, language, lines added/removed, and whether the edit was accepted
  • Subagents — subagent start/stop, status, duration, and tool-call counts
  • LLM calls — per-call model plus input, output, cache-read, cache-creation, and reasoning tokens
  • Install health — members appear under People we’re receiving data from once Chat telemetry arrives (there is no Weave hook installer that pings on setup)
Copilot’s own cumulative OTEL metrics are not written as event rows (they would double-count). Per-action facts come from logs and traces.

What it unlocks

  • No GitHub org-admin requirement — GitHub usage APIs need Copilot Business/Enterprise and App permissions; the plugin reports from each developer’s Copilot Chat
  • Per-developer, per-session granularity — attribute activity to individual machines and GitHub emails
  • File- and tool-level detail — accepted/rejected edits, line counts, and tool calls the GitHub usage API does not expose
  • AI skills — conversation scoring needs the plugin’s session-level prompts, agent messages, and tool calls
  • Install health monitoring — People we’re receiving data from is the live check that Chat telemetry is reaching Weave; dashboards update about hourly

Prerequisites

  • GitHub Copilot Chat in VS Code, or Copilot CLI, with a build that supports Copilot Chat OTEL (github.copilot.chat.otel.*)
  • A Weave account. Any signed-in member can create a personal install command. An admin can also create a shared plugin API key.
  • The ability to set process environment variables before launching VS Code or Copilot CLI
There is no Node.js install and no ~/.weave hook runtime. Copilot exports OTLP itself.

Setup

1

Create a plugin API key in Weave

Go to Data → Copilot → Connect (or Configure if Copilot is already connected), select Weave Plugin Install, and click Install Weave Plugin. If you can’t open that page, open Personal plugin setup on the Data page and choose Copilot. The page is titled Copilot plugin API keys. Click Create my install command to write telemetry onto your own Weave account. Revoke my install command removes those personal commands. An admin can click Create API key for a shared key that attributes by email. Weave shows the full key once, plus env vars, settings JSON, and an install command.
2

Export environment variables before launching Copilot

This is the required path on current Copilot Chat. Process env is what delivers weave.token. Do not skip it even if you also apply settings JSON.
Weave’s modal fills the real endpoint and key. COPILOT_OTEL_CAPTURE_CONTENT follows your org’s prompt-body retention: it is false when prompt bodies are denied.For per-user attribution, append ,user.email=you@corp.com to OTEL_RESOURCE_ATTRIBUTES. Copilot also sends user.email in its OTEL resource when the GitHub account email is present; add the attribute if usage does not link to a Weave member.
3

Optionally merge VS Code settings

Settings JSON is a forward-compatible extra for newer Copilot builds. Merge it into user or MDM settings.json. Settings alone do not deliver weave.token on current marketplace Copilot Chat.
4

Restart VS Code or Copilot CLI

Quit the app completely so it picks up process env, then run a Copilot Chat session and confirm activity in Weave.
Keys use the wcopkey_ prefix.

Install command and hosted config

The Install command in the modal only fetches settings JSON:
Still apply the environment variables so Copilot has the Weave token. MDM / hosted config is the same JSON with the key baked in (GET /api/copilot/config/:key). Push it via MDM together with the environment variables — a settings-only rollout does not send telemetry today. Append ?email=you@corp.com to bake user.email into resourceAttributes.

Privacy

Copilot Chat has a single content toggle (COPILOT_OTEL_CAPTURE_CONTENT / github.copilot.chat.otel.captureContent), not the per-category install flags the Claude Code, Cursor, and Codex plugins use. Weave sets that toggle from your org’s prompt bodies policy. After ingest, Weave still applies the full telemetry content policy (prompt bodies, agent messages, tool I/O, file paths, git context) before storing rows. Admins set the org floor under Telemetry content retention; members can opt out further, but not back in past the org floor.

Fleet / MDM rollout

  1. Create one org plugin API key.
  2. Deploy the four environment variables to each developer (login item, launchd, Intune, Jamf). VS Code and Copilot CLI must inherit them — a settings-only MDM profile is not enough on current Copilot.
  3. Optionally merge the hosted settings.json (curl https://app.workweave.ai/api/copilot/config/<key>) and add ?email= per user for attribution. The curl one-liner is settings JSON only — it is not a hook installer, and Enhanced AI tools treat that fetch as macOS/Linux (use WSL on Windows).
  4. On the Copilot plugin page, link installs that are not yet matched to Weave members.

Metrics enabled

Once reporting, the plugin feeds: AI code LOC, AI output percentage, and billed Copilot spend come from the GitHub Copilot integration and git attribution, not from this OTEL export. File-edit events on the plugin are stored for session detail; they are not the source of the org AI LOC metric.

Cost tracking

The plugin captures activity, tokens, and behavioral signals, not GitHub invoices. Session-level cost estimates in Weave are modeled from captured tokens and model rates. Billed Copilot spend (usage report + seats) comes from the GitHub Copilot integration. Run the plugin and the GitHub connection together.

Sync frequency

Telemetry is sent in real time over OTLP as Copilot Chat emits log and trace records.

Uninstall

There is no --uninstall script. Remove the COPILOT_OTEL_* / OTEL_* environment variables and the github.copilot.chat.otel.* settings, then restart VS Code or Copilot CLI. Rotate or delete the API key on the Copilot plugin API keys page where you created it if you want every reference to it gone.

Troubleshooting

  1. Confirm the four environment variables are set in the process that launches VS Code / Copilot CLI (GUI apps often do not inherit your shell profile)
  2. Fully quit and reopen VS Code (OTEL settings load on startup)
  3. Confirm Copilot Chat is actually used — completions-only usage without Chat OTEL will not appear here
  4. Verify the machine can reach the ingest endpoint (check network/firewall)
On current marketplace Copilot Chat, github.copilot.chat.otel.resourceAttributes does not deliver weave.token. Export OTEL_RESOURCE_ATTRIBUTES (and the other env vars) as well.
Append ,user.email=you@corp.com to OTEL_RESOURCE_ATTRIBUTES, or ?email=you@corp.com on the hosted config URL. Events without a resolvable email are dropped. Then link unmatched installs on the Copilot plugin page or the Members page.
If a name is on People we’re receiving data from, the install worked. Dashboards update about hourly — that list is the live check.

Data privacy

The plugin receives whatever Copilot Chat puts on the OTEL export: session metadata, token counts, tool usage, edit stats, and — when content capture is on — prompt and agent text. Weave does not read source files beyond paths Copilot includes on edit events.
Last modified on October 17, 2026