GitHub's Copilot Usage Metrics API Separates BYOK and Enterprise Custom Models: Local BYOK Is a Lower Bound Without Model Breakdown; Older Report Days Do Not Backfill the is_custom_enterprise_model Flag
On November 3, 2026, the GitHub changelog said the Copilot usage metrics API now separates BYOK: local BYOK configured in developers' clients (used_local_byok, totals_by_local_byok) and enterprise custom models configured by administrators (is_custom_enterprise_model), across enterprise and organization, user and aggregate, 1-day and 28-day reports. Local BYOK relies on client telemetry, so it is a lower bound, token counts may undercount, and there is no model breakdown; report days before the release lack is_custom_enterprise_model; the fields are counts, not dollars. The REST docs do not define the fields, and their permission names differ from the changelog.
On November 3, 2026, the GitHub changelog announced that the Copilot usage metrics API now shows bring-your-own-key (BYOK) usage separately, so administrators can tell it apart from usage of Copilot-hosted models. Until now, local and custom models often shared names with Copilot models, so BYOK usage blended into the hosted totals. The update splits BYOK into two kinds. Local BYOK is configured by developers in their own client. Enterprise custom models are configured by administrators in GitHub settings. Both appear in enterprise and organization reports, at user and aggregate level, in 1-day and 28-day reports.
Local BYOK covers a developer's own provider key and local models served by tools such as Ollama, Foundry Local, LM Studio and llama-server. Requests go from Copilot CLI or the GitHub Copilot app directly to the developer's provider key or local model, not through GitHub. The fields are used_local_byok, which tells whether a user made at least one local BYOK request in Copilot CLI or the Copilot app that day and appears in user-level reports; totals_by_local_byok, which gives session, request, prompt and token counts broken out by byok_kind (local_managed, local_user, local_auto or remote_user) and surface (copilot_cli or copilot_app) in user-level and aggregate reports; and daily, weekly and monthly active local BYOK user counts in aggregate reports.
Enterprise custom models are configured by administrators in GitHub settings, and requests route through GitHub to your provider. The new is_custom_enterprise_model field is a boolean on each totals_by_client model entry, and it is true when the request used a custom model configured for your enterprise or organization. GitHub observes these requests server-side, so the field covers every client, including IDEs. A model used both as a Copilot-hosted model and as a custom model appears as two entries, so the counts stay separate, and custom model entries carry real request and token counts.
This helps with governance and cost analysis. Administrators can see who sends requests to their own provider keys, local models or enterprise custom models and check that against their BYOK policy. They can separate Copilot-hosted usage from usage billed by their own provider or run on free local models, so cost per user reflects only what Copilot actually serves. They can also view usage across tools in one place and compare users of BYOK or custom models with the Copilot metrics they already track. Note that the fields are counts of sessions, requests, prompts and tokens. The post does not describe a dollar-amount field, so the numbers are not a bill.
Several limits sit in the "Important notes". First, existing totals do not change: BYOK usage was already counted, local BYOK is a subset of totals_by_cli and totals_by_copilot_app, and custom model usage is already in totals_by_client. Second, local BYOK is a lower bound, because those fields rely on client telemetry and undercount when telemetry is disabled, and token counts can undercount because some local providers do not report token usage. Enterprise custom model counts are observed server-side and do not have this limit. Third, custom model names follow the existing normalization, so unrecognized names appear as unknown, and local BYOK is not broken out by model name. Fourth, there is no backfill: report days before the release lack is_custom_enterprise_model, and the post does not say whether earlier days carry the local BYOK fields. Fifth, access is limited to enterprise owners, enterprise billing managers, organization owners and anyone with a custom organization or enterprise role that grants the View Copilot Metrics permission, and the Copilot usage metrics policy must be enabled.
A practical consequence of the subset rule is double counting. Because local BYOK is already inside totals_by_cli and totals_by_copilot_app, and custom model usage is already inside totals_by_client, a dashboard that adds the new fields to the old totals would count the same requests twice. The new fields are slices to subtract or filter, not extra rows to add. The two kinds also differ in trust. Custom model counts are observed server-side by GitHub, while local BYOK counts come from client telemetry that a developer or a policy may switch off, so a falling local BYOK line can mean less usage or less telemetry, and the report alone cannot tell which.
The supporting REST documentation is more specific about the endpoints. Reports are NDJSON files reached through signed download links with limited lifetime. The enterprise endpoints require the "Copilot usage metrics" policy to be set to Enabled everywhere for the enterprise. The fine-grained permission for enterprise endpoints is called "View Enterprise Copilot Metrics" and for organization endpoints "View Organization Copilot Metrics". History reaches back up to one year, from October 10, 2025. That REST page does not itself define the new BYOK fields, so the changelog is the only description of them in the captured sources, and its permission name "View Copilot Metrics" does not exactly match the two names in the documentation. The post gives no mapping, so check the settings in your own GitHub account before configuring access.
Sources
FAQ
Can the new fields tell me what BYOK usage costs?
Not directly. The post describes counts of sessions, requests, prompts and tokens and mentions no dollar field. The fields help separate hosted usage from usage billed by your own provider, but the cost still comes from that provider's invoice. Local BYOK is not broken out by model name, and its token counts may undercount.
Are the local BYOK numbers complete?
No, treat them as a lower bound. The fields rely on client telemetry, so they undercount when telemetry is disabled, and token counts can be low because some local providers do not report token usage. Enterprise custom model counts are observed server-side by GitHub and do not have this limit.
Will earlier report days show this data?
The post says only that report days before the release lack is_custom_enterprise_model, because there is no backfill. It does not say whether earlier days carry the local BYOK fields. For trends, start from the date the new fields first appear, and spot-check an actual report before relying on history.