GitHub Copilot Usage Metrics: What the Dashboard Proves and Misses

Use GitHub's usage API and managed OpenTelemetry together to measure Copilot adoption, runtime health, review flow, and rollout risk.

Monday, July 13, 2026Omid Saffari
GitHub Copilot Usage Metrics: What the Dashboard Proves and Misses

GitHub Copilot usage metrics are good enough to govern adoption, but not to prove engineering productivity. Use the usage API for cohort and pull-request trends, managed OpenTelemetry for runtime behavior, and your delivery system for quality outcomes.

The production verdict

GitHub Copilot's measurement stack is worth using because it exposes adoption, code-generation activity, agent use, review flow, tool execution, latency, tokens, and errors. Its hard limit is equally important: those signals show what Copilot touched and how the workflow behaved, not whether the resulting software was better.

Treat the product as separate evidence planes:

Evidence planeSourceBest questionBlind spotProduction decision
AdoptionUsage dashboard, API, NDJSONWho uses Copilot, which features, and how often?Aggregate activity can rise while delivery gets worseContinue enablement, change policy, or reclaim unused seats
RuntimeManaged OpenTelemetryWhich models, tools, hooks, tokens, latencies, and errors shape an agent run?A clean trace does not prove the change was correctFix reliability, cost, and policy failures
OutcomesGitHub pull requests plus your CI, incidents, and developer feedbackDid review flow, quality, and developer experience improve?Team mix and work mix can create false correlationsExpand, hold, or stop the rollout
Evidence planes for measuring a GitHub Copilot rollout
Use GitHub usage metrics for adoption, OpenTelemetry for runtime behavior, and delivery data for outcomes.

GitHub itself calls lines-of-code data a directional measure. That is the right frame. More generated code can mean useful acceleration, unnecessary churn, or a repository that needed deletion rather than addition. Acceptance rate has the same constraint: it measures an editor action, not whether the code passed review, stayed in the branch, or survived production.

Pros
  • Enterprise, organization, and user report shapes cover adoption and feature use.
  • Managed OpenTelemetry exposes the agent loop instead of only the final editor action.
  • Pull-request cohort fields connect adoption phases to review flow.
  • NDJSON and API access make the data usable outside GitHub's dashboard.
Cons
  • Dashboard charts omit Copilot CLI usage.
  • Rich IDE breakdowns depend on client telemetry reaching GitHub.
  • The new review fields exclude pull requests that never merge.
  • Runtime traces and aggregate usage reports do not establish causality.

If you are still choosing the coding-agent surface, settle that boundary before instrumenting it. The production coding-agent comparison covers the control and ownership differences that telemetry cannot fix after rollout.

What GitHub added in July 2026

The July releases close a useful gap: GitHub now gives administrators a centrally enforced runtime stream and better pull-request outcome fields in the aggregate API.

On July 8, 2026, GitHub released enterprise-managed OpenTelemetry export for the Copilot Chat extension in VS Code and the agent host that powers Copilot CLI. Administrators can set an approved endpoint, transport, service name, resource attributes, headers, and content-capture policy through managed settings. A managed value overrides environment variables and user settings. GitHub's release note documents the control surface.

GitHub changelog for enterprise-managed OpenTelemetry export
GitHub added centrally managed OTel export for VS Code and Copilot CLI.

On July 7, 2026, GitHub added two adoption-phase fields to enterprise and organization 1-day and 28-day reports:

FieldWhat it measuresScope that matters
avg_pull_requests_minutes_to_reviewMedian minutes from pull-request creation to first reviewMerged pull requests, attributed to merge day
avg_pull_requests_review_cyclesMedian review submissions before mergeMerged pull requests, attributed to merge day

The avg_ prefix is easy to misread. GitHub defines both fields as medians, so do not average those medians again across teams or reporting days and call the result a company metric. Pull the underlying daily cohorts, preserve their scope, and show the sample volume beside the distribution.

The merged-only rule creates survivorship bias. A change that stalls, is abandoned, or never earns approval contributes to neither field. Pair both medians with opened, merged, closed-unmerged, and reverted pull-request counts from your delivery system. GitHub's change note states the inclusion rule explicitly.

Configure the runtime plane with content capture locked off

Start with metadata-only OpenTelemetry and make content capture an exception that needs a security review. The default already excludes prompts, responses, and tool arguments. Keep that boundary centrally enforced because enabling content capture can send source code, file contents, system prompts, tool schemas, arguments, and results to the collector.

A production managed-settings.json can begin with this shape:

JSON
{
  "telemetry": {
    "enabled": true,
    "endpoint": "https://otel-collector.example.net",
    "protocol": "otlp-http",
    "captureContent": false,
    "lockCaptureContent": true,
    "serviceName": "github-copilot",
    "resourceAttributes": {
      "rollout.cohort": "pilot",
      "engineering.unit": "platform"
    }
  }
}

The keys above map to GitHub's managed telemetry schema. Replace the example endpoint and cohort values with approved infrastructure identifiers. Keep user identity, prompt text, repository secrets, and customer data out of resource attributes. Resource attributes are for bounded operational dimensions, not a second content channel.

  1. Choose one authoritative delivery channel

    Use native MDM, server-managed settings, or the file-based configuration. Native MDM has precedence over server-managed settings, which has precedence over the file. A higher-precedence channel wins as a whole, so a small MDM fragment can cause a complete server configuration to be ignored. Test the resolved policy on a managed device before rollout.

  2. Send metadata to an approved collector

    Enable telemetry.enabled, set telemetry.endpoint, and use otlp-http unless every client path has been validated for another transport. The Copilot CLI terminal runtime supports only HTTP even when otlp-grpc is configured, and its terminal sessions appear as independent root traces under service github-copilot.

  3. Lock content capture off

    Set captureContent to false and lockCaptureContent to true. The metadata stream still includes model, token, duration, tool, hook, error, repository, branch, and commit signals needed for operational analysis. Apply collector-side access control and retention to that metadata too.

  4. Validate every agent surface

    Run a foreground chat, a VS Code agent task, and a Copilot CLI terminal task. Confirm model and token attributes, tool spans, hook decisions, errors, and the expected service names. Reload VS Code after changing a managed telemetry value because the agent host computes its configuration when it starts.

The trace model is useful for diagnosis. An invoke_agent span contains nested chat, execute_tool, and execute_hook work. Standard and Copilot-specific metrics expose LLM duration, token use, tool-call count and duration, end-to-end agent duration, turns, edit outcomes, and errors. Use the canonical github.copilot.* namespace for new queries where GitHub provides one. The VS Code OTel reference lists the emitted signals and attributes.

One release caveat deserves a deployment test: managed telemetry.headers are applied only to the Copilot Chat extension exporter and are not delivered to the agent host process in this release. Do not assume an authentication header that works for the extension also protects the CLI path. Verify collector authentication from each process before requiring export.

Build the adoption scorecard from the API

Use the API as a scheduled reporting input, not an alert stream. GitHub documents daily reports and a latest 28-day report under API version 2026-03-10; dashboard data may appear up to 3 full UTC days behind. Runtime alerts belong in OpenTelemetry. Adoption and workflow reviews can tolerate the aggregate delay.

The minimum extraction set is the aggregate report, per-user report, and user-team join for the same day:

Bash
set -euo pipefail

: "${GITHUB_TOKEN:?set GITHUB_TOKEN}"
: "${ENTERPRISE:?set ENTERPRISE}"
: "${DAY:?set DAY as YYYY-MM-DD}"

api="https://api.github.com/enterprises/${ENTERPRISE}/copilot/metrics/reports"
headers=(
  -H "Accept: application/vnd.github+json"
  -H "Authorization: Bearer ${GITHUB_TOKEN}"
  -H "X-GitHub-Api-Version: 2026-03-10"
)

curl -fsSL "${headers[@]}" "${api}/enterprise-1-day?day=${DAY}"
curl -fsSL "${headers[@]}" "${api}/users-1-day?day=${DAY}"
curl -fsSL "${headers[@]}" "${api}/user-teams-1-day?day=${DAY}"

Each response provides signed report download links. Store the downloaded NDJSON in a restricted analytics bucket with its report day, scope, and schema version. The documented daily enterprise history starts on October 10, 2025 and is available for up to 1 year, so long-term retention is your responsibility if the rollout needs a longer baseline. GitHub documents the report endpoints and access rules.

Build a scorecard around decisions, not whatever fields are easiest to chart:

Decision questionGitHub inputRequired joinDo not conclude
Are paid seats becoming active?Daily and weekly active usersSeat assignments from the Copilot user management APIActivity alone justifies every seat
Are teams moving beyond completions?used_agent, used_cli, chat modes, feature breakdownsUser-team reportAgent use is automatically better than completion use
Is the agent loop reliable?OTel tool errors, hook outcomes, latency, turns, and tokensCohort and repository mappingA successful trace produced a correct change
Is review flow changing?Review latency, review cycles, merge countsRepository workload and PR-size bandsAdoption phase caused the difference
Is quality holding?None by itselfCI failures, escaped defects, rollbacks, incidents, and review findingsLines added are productivity
Is spend controlled?ai_credits_used plus seat assignmentsCollector ingestion and retention costCredits equal the full rollout cost

Team metrics require a daily join between user-team membership and per-user usage; GitHub does not pre-aggregate them. Teams with fewer than 5 seated Copilot users on a day are excluded from that join report. Preserve that privacy boundary rather than reconstructing small-team behavior from other fields.

For a defensible comparison, take a full 28-day baseline before changing enablement or policy, then compare it with a matched rollout window. Match teams by repository type and work mix, annotate major releases and incidents, and keep qualitative developer feedback beside the quantitative view. The result is evidence for a rollout decision, not a causal study.

What the dashboard misses in production

The first production failure is scope mismatch. Dashboard charts do not include Copilot CLI usage, while API reports expose separate CLI fields. Copilot Chat on GitHub.com and GitHub Mobile are also outside the usage-metrics dataset. A dashboard can therefore show flat adoption while a team moves significant work into a surface it does not chart.

The second failure is partial client telemetry. The dashboard is primarily fed by IDE telemetry and supplemented by server-side signals. A user found only through server-side data can count as active while feature and lines-of-code breakdowns remain empty. Monitor missing dimensions as a data-quality signal; do not treat an empty breakdown as zero usage.

The third failure is sensitive or expensive telemetry. Repository, branch, commit, model, tool, token, and duration attributes are useful, but unbounded branch names and per-commit views can create high-cardinality storage. Transform identifiers at the collector, apply explicit retention, and reserve raw traces for a narrow operational window. Keep content capture locked off unless a documented incident workflow requires it.

The fourth failure is measurement gaming. A rollout score tied to prompt count, accepted code, or lines changed encourages more activity rather than better engineering. The safer review asks whether developers can finish suitable tasks with fewer blocked runs, whether review flow holds, whether quality gates stay green, and whether the tool remains useful in developer feedback.

Who should use this stack

Use the combined stack when an engineering organization has a real Copilot rollout owner, an approved OTLP collector, enough team size for cohort reporting, and access to delivery and quality data. It is especially useful when VS Code agents and Copilot CLI are moving from opt-in experiments to a governed team workflow.

Do not build this pipeline for an individual seat or a tiny trial that cannot support privacy-safe cohorts. Do not use it if the organization has not defined which tasks are appropriate for agents, which tools require approval, what quality gates cannot be bypassed, and who owns failed runs. Telemetry cannot repair a missing operating policy.

GitHub currently lists Copilot Business at $19 USD per granted seat per month and Copilot Enterprise at $39 USD per granted seat per month. Budget the observability backend, secure storage, data transformation, and review ownership separately. The seat-mix and rollout-cost model is reusable even when the vendor changes.

GitHub Copilot organization plan pricing
GitHub lists Business at $19 and Enterprise at $39 per granted seat per month.

The production rule is simple: expand only when adoption is healthy, runtime failures are understood, review flow is stable or improving, and quality does not regress. If those signals disagree, hold the rollout and investigate the disagreement. More telemetry is useful only when it changes a decision.

Frequently asked questions

What does GitHub Copilot usage metrics track?

GitHub exposes adoption, engagement, acceptance, code-generation activity, agent and CLI indicators, AI-credit use, and pull-request lifecycle fields across dashboard, API, and NDJSON shapes. The exact fields vary by enterprise, organization, aggregate, and per-user scope.

Does the GitHub Copilot usage dashboard include Copilot CLI activity?

No. GitHub's field reference says the dashboard charts do not include Copilot CLI usage. Use the API's used_cli, CLI active-user counts, and totals_by_cli fields, then use OTel for run-level CLI behavior.

How current are GitHub Copilot usage metrics?

GitHub's dashboard-specific documentation says data may appear up to 3 full UTC days behind. Use the aggregate data for rollout reviews and the managed OTel stream for operational failures that need faster attention.

How do I check Copilot agent usage in VS Code?

Enable managed OTel export to an approved collector and query invoke_agent, chat, execute_tool, and execute_hook spans by service, cohort, and repository. Keep content capture off; model, token, duration, tool, hook, and error metadata are enough for the first operational dashboard.

Can Copilot metrics prove developer productivity?

No. They show adoption and correlated workflow patterns. A credible rollout review also needs matched delivery and quality data, developer feedback, and a baseline that accounts for team and work mix.

Last Updated

Jul 13, 2026

CategoryCoding

More from Coding

View all Coding articles
Newsletter

One letter, every week. Working systems — not hot takes.

Build logs, agentic engineering decisions, agent failures, evals, and what survives real users. Sent weekly, never more.

Weekly. No spam. Unsubscribe anytime.