kibble

Kibble Blog

How to track GitHub Copilot usage across a team

To track GitHub Copilot usage across a team, start with GitHub's own reporting: since June 2026 the Copilot usage metrics API reports the AI credits each user consumed per day. Use a local collector when you also need the split by model and repository, or Copilot beside Claude Code and Codex on one page. In Kibble, Copilot cost is a list-price token estimate from the session logs Copilot CLI and VS Code already write, never a GitHub invoice import.

What does GitHub already provide?

GitHub changed how Copilot is billed on 1 June 2026. A seat now includes a monthly allowance of AI credits equal to its price, $19 on Business and $39 on Enterprise, and everything past the allowance is charged by tokens at a published rate per model, one credit being one US cent, if an administrator allows additional usage at all. Budgets can be set at the enterprise, cost-center and user level. Code completions and next edit suggestions stay unlimited and consume no credits. The sources are GitHub's announcement of 27 April 2026 and its models and pricing page, both read on 10 September 2026.

For visibility, the Copilot usage metrics API added an ai_credits_used field on 19 June 2026, per user per day, in the one-day and 28-day user reports for organizations and enterprises. GitHub describes it as a metrics signal for analysing consumption rather than a billed total, and it is not broken down by feature, model or surface. Organization owners and enterprise administrators can read it.

QuestionGitHub's reportingA local collector
Who consumed the most this month?ai_credits_used per user per dayEstimated cost per member from local counters
Which model drove it?Not broken down by modelTokens and estimated cost per model per day
Which repository?NoRepository names, resolved from the working directory on the machine
Terminal or editor?Not broken down by surfaceCopilot CLI and VS Code chat read separately, then summed
Copilot beside Claude Code and Codex?Copilot onlyOne page, one agent filter, the same estimate method
What did GitHub bill?The billing page, per invoiceNever; an estimate is not a bill

Kibble's role is a combined local-usage view across the agents a team runs. It does not replace GitHub's usage metrics, budgets or invoices, and it has no import of them today.

How do you connect a machine running Copilot?

Use Node.js 20 or later on a machine that already has Copilot CLI sessions or Copilot Chat history in VS Code. Nothing needs switching on in Copilot: no telemetry setting, no OpenTelemetry exporter, no extension. Sign in to Kibble with Google, then run:

npm install -g @usekibble/cli
kibble login
kibble schedule status

kibble login opens a browser and links the machine to your own member identity. When your organization has automatic collection on, login sends usage straight away and schedules the hourly and startup pushes; the first sync imports today and the preceding 29 UTC days, wherever the local logs still exist. kibble push sends now, and kibble push --dry-run prints exactly what would be sent without sending it. The setup guide covers policy settings and the status commands.

Two environment variables matter when Copilot is not in the default place. COPILOT_HOME moves Copilot CLI's whole directory, and Kibble reads the same variable. If VS Code runs with --user-data-dir, set KIBBLE_VSCODE_USER_DATA_DIR to that directory; a portable VS Code is found through VSCODE_PORTABLE. The stable and Insiders builds are both read, on macOS, Windows and Linux.

For a team, an owner upgrades to Pro, invites engineers at their verified email addresses and assigns teams. Every engineer links their own machines; a shared login would make the per-engineer breakdown meaningless.

What does the Copilot collector see?

The adapters are public in Kibble's source: copilot.ts reads Copilot CLI's durable counters from ~/.copilot/session-state/<id>/events.jsonl, and vscode.ts reads the chat session stores under the editor's user-data directory. Both take a short allowlist of counters and names from each record and nothing else: the prompt, the reply, tool arguments and output, and the paths of edited files sit in the same files, and the collector never reads those fields. Where GitHub Copilot keeps its usage logs walks both formats field by field.

QuestionKibble's Copilot view
How much did a member use?Daily token totals and estimated cost across their linked machines, CLI and editor added together
Which models?Model names as recorded, including the model behind VS Code's Auto choice; cost at list rates
Which repositories?Checkout names from the working directory; a multi-root VS Code window stays unattributed
Which skills and MCP servers?Copilot CLI: skill invocations by name, and whether the person or the model invoked them; MCP server names from tool calls. VS Code: explicit skill, slash-command and MCP server names
How is the machine billed?Subscription when a GitHub login is saved, API or cloud when a provider is configured explicitly; the tier is unknown
What did GitHub bill?No import; read the billing page
What was the prompt or the code?Not sent

An owner sees member totals, a manager sees the teams they were assigned, and a member sees themself. Names, counts and the billing mode leave the machine; prompts, code, tool arguments, paths and the GitHub login do not. The privacy policy is the field boundary.

What does the collector not cover?

How do you read Copilot beside Claude Code and Codex?

  1. Check who reported and whether the scheduled pushes are healthy. Missing data is not zero usage.
  2. Filter the same date range by agent. All three are priced by the same method from the same pinned rate table, so the comparison is like for like, and all three are estimates.
  3. Look at Copilot by model. On GitHub's rate card the default GPT-5.6 Luna costs a tenth of Claude Sonnet 5 per input token, so a model switch moves cost without moving tokens.
  4. Use the repository cut to find the change worth a conversation, not to allocate the credit bill to the cent.
  5. Put the estimate beside GitHub's ai_credits_used for the same people and days. They will not match exactly, and the gap is the reading: a surface the collector cannot see, cache accounting, or a machine that has not reported.

The personal plan keeps 30 days of history; Pro keeps everything received. The cost article prices three labelled scenarios in credits. Estimated against billed is the rule that keeps the two columns apart, and the usage-log guide explains why a token count is not yet a cost.