> ## Documentation Index
> Fetch the complete documentation index at: https://docs.weaveos.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Copilot plugin

> Send GitHub Copilot Chat telemetry to Weave with Copilot's native OpenTelemetry export

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](/ai-tools/copilot) — 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.

<Note>
  The [GitHub Copilot](/ai-tools/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.
</Note>

## 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](/reports/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

<Steps>
  <Step title="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.
  </Step>

  <Step title="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.

    ```bash theme={null}
    export COPILOT_OTEL_ENABLED=true
    export COPILOT_OTEL_CAPTURE_CONTENT=true
    export OTEL_EXPORTER_OTLP_ENDPOINT='https://app.workweave.ai/ingest'
    export OTEL_RESOURCE_ATTRIBUTES='weave.token=wcopkey_...'
    ```

    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.
  </Step>

  <Step title="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.**

    ```json theme={null}
    {
      "github.copilot.chat.otel.enabled": true,
      "github.copilot.chat.otel.captureContent": true,
      "github.copilot.chat.otel.otlpEndpoint": "https://app.workweave.ai/ingest",
      "github.copilot.chat.otel.resourceAttributes": {
        "weave.token": "wcopkey_..."
      }
    }
    ```
  </Step>

  <Step title="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.
  </Step>
</Steps>

Keys use the `wcopkey_` prefix.

### Install command and hosted config

The **Install command** in the modal only fetches settings JSON:

```bash theme={null}
curl -fsSL "https://app.workweave.ai/api/copilot/config/wcopkey_..."
```

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:

* **[Conversation prompt quality](/metrics/conversation-prompt-quality)** — prompt-level signals from captured sessions
* **[AI skills](/reports/ai-skills)** — per-conversation scoring (planning, verification, ownership, and more)

[AI code LOC](/metrics/ai-code-loc), [AI output percentage](/metrics/ai-output-percentage), and billed Copilot spend come from the [GitHub Copilot integration](/ai-tools/copilot) 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](/ai-tools/copilot). 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

<AccordionGroup>
  <Accordion icon="terminal" title="No activity after install">
    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)
  </Accordion>

  <Accordion icon="sliders" title="I only applied settings.json">
    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.
  </Accordion>

  <Accordion icon="user" title="Usage is not attributed to a Weave member">
    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](https://app.workweave.ai/members).
  </Accordion>

  <Accordion icon="heart-pulse" title="How do I know the setup worked?">
    If a name is on **People we're receiving data from**, the install worked. Dashboards update about hourly — that list is the live check.
  </Accordion>
</AccordionGroup>

## 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.

## Related integrations

* [GitHub Copilot](/ai-tools/copilot) — GitHub usage and billing (spend, seats)
* [Cursor plugin](/ai-tools/cursor-plugin) — the equivalent per-machine plugin for Cursor
* [Claude Code plugin](/ai-tools/claude-code-plugin) — the equivalent per-machine plugin for Claude Code
* [Codex plugin](/ai-tools/codex-plugin) — the equivalent per-machine plugin for Codex


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.