Skip to main content

Data available in Copilot usage metrics

Copilot usage metrics data is available through the dashboard and APIs, using a consistent set of fields to represent adoption, usage, and code generation activity.

Who can use this feature?

Enterprise owners, organization administrators, billing managers, and people with an enterprise custom role with the "View Enterprise Copilot Metrics" permission.

The Copilot usage metrics dashboard and APIs display and export data using a consistent set of fields. This reference lists all available metrics and describes how to interpret their values in both dashboard visuals and NDJSON or API exports.

  • The Copilot usage metrics dashboards are available at the enterprise and organization level.
  • The Copilot usage metrics APIs return reports scoped to the enterprise, organization, or individual user level, in different shapes depending on scope and granularity.
  • Team-level metrics are not pre-aggregated; you construct them by joining the user-teams report with the per-user usage metrics report. See Team-level Copilot usage metrics.

For guidance on how to read and interpret these metrics, see GitHub Copilot usage metrics.

Copilot usage dashboard metrics

These metrics appear directly in the Copilot usage dashboard. These charts do not include Copilot CLI usage.

MetricDescription
Agent adoptionPercentage of Copilot-licensed active users who tried an agent in the current calendar month.
Average chat requests per active userAverage number of chat requests per active user.
Code completions (suggested/accepted)Total number of inline code suggestions shown and accepted.
Code completion acceptance ratePercentage of suggestions accepted by users.
Daily active usersNumber of unique users who used Copilot on a given day.
Weekly active usersNumber of unique users who used Copilot during a seven-day window.
Total active usersLicensed users active in the current calendar month.
Language usageDistribution of programming languages used with Copilot.
Language usage per dayDaily breakdown of languages used.
Model usageDistribution of AI models used for chat.
Model usage per dayDaily breakdown of chat model usage.
Model usage per chat modeModel usage by Copilot feature (ask, edit, plan, agent).
Model usage per languageDistribution of languages broken down by model.
Most used chat modelThe most frequently used chat model in the last 28 days.
Requests per chat modeNumber of chat requests by mode (ask, edit, plan, agent).

Code generation dashboard metrics

These metrics appear in the code generation dashboard and provide a breakdown of how code is being generated across user-initiated and agent-initiated activity. All values are derived from lines of code (LoC) added or deleted in the IDE.

MetricDescription
Lines of code changed with AITotal lines of code added and deleted across all modes in the last 28 days.
Agent contributionPercentage of lines of code added and deleted by agents (including edit, agent, and custom modes) in the last 28 days.
Average lines deleted by agentAverage number of lines automatically deleted by agents on behalf of active users during the current calendar month.
Daily total of lines added and deletedTotal number of lines added to and deleted from the codebase across all modes for each day.
User-initiated code changesLines suggested or manually added by users through code completions and chat panel actions (insert, copy, or apply).
Agent-initiated code changesLines automatically added to or deleted from the codebase by agents on behalf of users across edit, agent, and custom modes.
User-initiated code changes per modelUser-initiated lines of code, grouped by model used in the IDE.
Agent-initiated code changes per modelAgent-initiated lines of code, grouped by model performing the agent actions.
User-initiated code changes per languageUser-initiated lines of code, grouped by programming language.
Agent-initiated code changes per languageAgent-initiated lines of code, grouped by programming language.

API and export fields

These fields appear in the exported NDJSON reports and in the Copilot usage metrics APIs. Most tables below list the field name, its JSON type, whether the value can be null, and a description.

Reports come in different shapes depending on their scope and granularity, so the fields available in a record depend on which report it comes from:

  • Per-user reports (*-users-1-day and *-users-28-day) contain one record per user, including user_id, user_login, the used_* indicators, and ai_adoption_phase. They do not contain active-user counts, pull_requests, or totals_by_ai_adoption_phase.
  • Aggregated reports (enterprise-1-day and org-1-day) contain one aggregated record per enterprise or organization, including active-user counts, pull_requests, and totals_by_ai_adoption_phase. They do not contain user_id, user_login, or the used_* indicators.
  • 28-day reports (enterprise-28-day and org-28-day) wrap an array of daily aggregated records in a day_totals field, with the reporting window at the top level.
  • User-teams reports (*-user-teams-1-day) map users to the teams they belong to, so you can construct team-level metrics.

Organization-scope reports also include organization_id alongside enterprise_id. For example schemas of the data returned by the APIs, see Example schema for Copilot usage metrics.

The Type column uses JSON Schema types: string, integer, number, boolean, array, and object. The Nullable column indicates whether a field's value can be null or absent from a record where it would otherwise apply. Arrays are always present but can be empty ([]), so they are not nullable.

Report identification and partition fields

These fields identify the scope, date, and (for exports) partition of each record. The exact set present depends on the report shape.

FieldTypeNullableDescription
daystringNoCalendar day this record represents, in YYYY-MM-DD format. In 28-day reports, day appears within each day_totals entry rather than at the top level.
enterprise_idstringNoUnique ID of the enterprise. Included in both enterprise- and organization-scope reports.
organization_idstringYesUnique ID of the organization. Included in organization-scope reports only; omitted from enterprise-scope reports.
etl_id / day_partitionstringNoPartition fields used for housekeeping. Included in exported NDJSON files and returned by the usage metrics APIs.
entity_id_partitionintegerNoEntity partition used for housekeeping. Included in exported NDJSON files and returned by the usage metrics APIs.

Per-user report fields

Per-user reports contain one record per user for the reporting period. The 28-day per-user report also includes report_start_day and report_end_day to mark the reporting window.

FieldTypeNullableDescription
user_idintegerNoUnique identifier for the user.
user_loginstringNoGitHub username for the user.
user_initiated_interaction_countintegerNoNumber of explicit prompts sent to Copilot.

Only counts messages or prompts actively sent to the model. Does not include opening the chat panel, switching modes (for example, ask, edit, plan, or agent), using keyboard shortcuts to open the inline UI, or making configuration changes.
code_generation_activity_countintegerNoNumber of distinct Copilot output events generated.

Includes: All generated content, including comments and docstrings.
Multiple blocks: Each distinct code block from a single user prompt counts as a separate generation.
Note: This metric is not directly comparable to user_initiated_interaction_count, since one prompt can produce multiple generations.
code_acceptance_activity_countintegerNoNumber of suggestions or code blocks accepted by users.

Counts: All built-in accept actions, such as “apply to file,” “insert at cursor,” “insert into terminal,” and use of the Copy button.
Does not count: Manual OS clipboard actions (for example, Ctrl+C).
Granularity: Each acceptance action increments the count once, regardless of how many code blocks were generated by the initial prompt.
loc_suggested_to_add_sumintegerNoLines of code Copilot suggested to add (completions, inline chat, chat panel, and so on; excludes agent edits).
loc_suggested_to_delete_sumintegerNoLines of code Copilot suggested to delete (future support planned).
loc_added_sumintegerNoLines of code actually added to the editor (accepted completions, applied code blocks, agent and edit mode).
loc_deleted_sumintegerNoLines of code deleted from the editor (currently from agent edits).
used_agentbooleanNoWhether the user used agent mode in the IDE that day. Does not include Copilot code review activity, which is captured separately in used_copilot_code_review_active and used_copilot_code_review_passive.
used_chatbooleanNoWhether the user used IDE chat that day.
used_clibooleanNoWhether the user used Copilot CLI that day.
used_copilot_coding_agentbooleanNoWhether the user used Copilot cloud agent (previously Copilot coding agent) that day.
used_copilot_cloud_agentbooleanNoWhether the user used Copilot cloud agent that day. Carries the same value as used_copilot_coding_agent; both names are retained for backward compatibility.
used_copilot_code_review_activebooleanYesWhether the user actively engaged with Copilot code review that day. A user is considered active if they manually requested a Copilot review, or applied a Copilot review suggestion. Null when there is no Copilot code review signal for the user that day.
used_copilot_code_review_passivebooleanYesWhether the user had Copilot automatically assigned to review their pull request that day, without actively engaging with the review. Null when there is no Copilot code review signal for the user that day.
ai_adoption_phaseobjectNoThe user's AI adoption phase for the day. Always present; defaults to the "No Cohort" phase. See AI adoption phase fields.
totals_by_cliobjectYesCLI-specific metrics for the user. Omitted when the user had no Copilot CLI usage that day. See Copilot CLI metrics fields.
totals_by_idearrayNoPer-IDE breakdown of the user's activity. See Activity breakdown objects.
totals_by_featurearrayNoPer-feature breakdown of the user's activity. See Activity breakdown objects.
totals_by_language_featurearrayNoBreakdown combining language and feature dimensions. See Activity breakdown objects.
totals_by_language_modelarrayNoBreakdown combining language and model dimensions, for chat activity. See Activity breakdown objects.
totals_by_model_featurearrayNoBreakdown combining model and feature dimensions, for chat activity. See Activity breakdown objects.

Aggregated enterprise and organization report fields

Aggregated reports contain one record per enterprise or organization, summarizing all users for the day. The following tables list the active-user counts, then the activity totals and breakdowns.

Active-user counts:

FieldTypeNullableDescription
daily_active_usersintegerNoNumber of unique users who used Copilot on a given day.
weekly_active_usersintegerNoNumber of unique users who used Copilot during a trailing seven-day window.
monthly_active_usersintegerNoNumber of unique users who used Copilot during a trailing 28-day window.
monthly_active_chat_usersintegerNoNumber of unique users who used chat during a trailing 28-day window.
monthly_active_agent_usersintegerNoNumber of unique users who used agent mode during a trailing 28-day window.
daily_active_copilot_cloud_agent_usersintegerNoNumber of unique users who used Copilot cloud agent on a given day.
weekly_active_copilot_cloud_agent_usersintegerNoNumber of unique users who used Copilot cloud agent during a trailing seven-day window.
monthly_active_copilot_cloud_agent_usersintegerNoNumber of unique users who used Copilot cloud agent during a trailing 28-day window.
daily_active_copilot_code_review_usersintegerNoNumber of unique users who actively used Copilot code review on a given day. Active usage means manually requesting a review or applying a suggestion. When a user has both active and passive signals in the same period, they are counted as active only.
weekly_active_copilot_code_review_usersintegerNoNumber of unique users who actively used Copilot code review during a trailing seven-day window. When a user has both active and passive signals in the same period, they are counted as active only.
monthly_active_copilot_code_review_usersintegerNoNumber of unique users who actively used Copilot code review during a trailing 28-day window. When a user has both active and passive signals in the same period, they are counted as active only.
daily_passive_copilot_code_review_usersintegerNoNumber of unique users who had Copilot code review automatically assigned to review their pull request on a given day, with no active engagement.
weekly_passive_copilot_code_review_usersintegerNoNumber of unique users who had Copilot code review automatically assigned to review their pull request during a trailing seven-day window, with no active engagement.
monthly_passive_copilot_code_review_usersintegerNoNumber of unique users who had Copilot code review automatically assigned to review their pull request during a trailing 28-day window, with no active engagement.
daily_active_cli_usersintegerYesNumber of unique users who used Copilot CLI on a given day. This count is independent of IDE active-user counts and is not included in IDE-based active-user definitions. Omitted for enterprises or organizations with no CLI usage that day.

Activity totals and breakdowns:

FieldTypeNullableDescription
user_initiated_interaction_countintegerNoTotal number of explicit prompts sent to Copilot across all users for the day.
code_generation_activity_countintegerNoTotal number of distinct Copilot output events generated across all users for the day.
code_acceptance_activity_countintegerNoTotal number of suggestions or code blocks accepted across all users for the day.
loc_suggested_to_add_sumintegerNoAggregated lines of code suggested to add for the day. Same definition as the per-user field.
loc_suggested_to_delete_sumintegerNoAggregated lines of code suggested to delete for the day. Same definition as the per-user field.
loc_added_sumintegerNoAggregated lines of code added for the day. Same definition as the per-user field.
loc_deleted_sumintegerNoAggregated lines of code deleted for the day. Same definition as the per-user field.
totals_by_idearrayNoAggregated per-IDE activity breakdown. See Activity breakdown objects.
totals_by_featurearrayNoAggregated per-feature activity breakdown. See Activity breakdown objects.
totals_by_language_featurearrayNoAggregated language-and-feature activity breakdown. See Activity breakdown objects.
totals_by_language_modelarrayNoAggregated language-and-model activity breakdown. See Activity breakdown objects.
totals_by_model_featurearrayNoAggregated model-and-feature activity breakdown. See Activity breakdown objects.
totals_by_cliobjectYesAggregated Copilot CLI metrics for the day. Omitted when there is no CLI usage that day. Unlike the per-user form, it does not include last_known_cli_version. See Copilot CLI metrics fields.
totals_by_ai_adoption_phasearrayYesPer-phase aggregates of users and their average activity. Omitted when no adoption-phase data is available. See AI adoption phase fields.
pull_requestsobjectNoDaily pull request activity for the enterprise or organization. See Pull request activity fields.

28-day report fields

The 28-day reports (enterprise-28-day and org-28-day) are wrappers: they carry the reporting window at the top level and an array of daily aggregated records.

FieldTypeNullableDescription
report_start_daystringNoFirst calendar day of the 28-day reporting window, in YYYY-MM-DD format.
report_end_daystringNoLast calendar day of the 28-day reporting window, in YYYY-MM-DD format.
created_atstringNoTimestamp (ISO 8601) when the report was generated.
day_totalsarrayNoArray of daily aggregated records. Each entry has the same fields as an aggregated 1-day report. See Aggregated enterprise and organization report fields.

User-teams fields

These fields appear in the daily user-teams report (available via REST API at the organization and enterprise scopes) and are used to construct team-level metrics by joining with the per-user usage metrics report. For the full join recipe and the endpoint URLs, see Team-level Copilot usage metrics.

Teams with fewer than 5 seated Copilot users on a given day are excluded from the user-teams report.

FieldTypeNullableDescription
user_idintegerNoUnique identifier for the user.
user_loginstringNoGitHub username for the user.
daystringNoCalendar day this record represents.
organization_idstringNoUnique ID of the organization the team belongs to. Organization scope only.
enterprise_idstringNoUnique ID of the enterprise the team belongs to. Enterprise scope only. The enterprise-scoped report includes both enterprise teams and business teams.
team_idintegerNoUnique ID of the team the user belongs to.
slugstringNoURL-friendly identifier for the team.

Activity breakdown objects

The totals_by_* fields are arrays of breakdown objects. The array is always present but can be empty. Within each object, the metric fields (*_count and loc_*_sum) follow the same definitions as the top-level per-user fields, and the dimension fields carry the values documented in Breakdown dimension values.

ObjectDimension fieldsDescription
totals_by_ide[]ideBreakdown by IDE. In per-user reports, each entry also includes last_known_ide_version and last_known_plugin_version.
totals_by_feature[]featureBreakdown by Copilot feature (for example, inline chat or chat panel).
totals_by_language_feature[]language, featureBreakdown combining language and feature. Does not include user_initiated_interaction_count.
totals_by_language_model[]language, modelBreakdown combining language and model, for chat activity (not completions).
totals_by_model_feature[]model, featureBreakdown combining model and feature, for chat activity (not completions).

In per-user reports, each totals_by_ide[] entry also reports the most recently detected IDE and Copilot Chat extension versions for the user.

FieldTypeNullableDescription
last_known_ide_versionobjectYesMost recent IDE version detected for the user, as { ide_version, sampled_at }. Omitted for aggregated breakdown rows, such as the capped "others" IDE bucket.
last_known_ide_version.ide_versionstringNoIDE version string. Present when last_known_ide_version is present.
last_known_ide_version.sampled_atstringYesTimestamp (ISO 8601) when the version was sampled.
last_known_plugin_versionobjectYesMost recent Copilot extension detected for the user, as { plugin, plugin_version, sampled_at }. Omitted for aggregated breakdown rows.
last_known_plugin_version.pluginstringNoExtension name (for example, copilot or copilot-chat). Present when last_known_plugin_version is present.
last_known_plugin_version.plugin_versionstringNoExtension version string. Present when last_known_plugin_version is present.
last_known_plugin_version.sampled_atstringYesTimestamp (ISO 8601) when the version was sampled.

Copilot CLI metrics fields

The totals_by_cli object contains the following nested fields when Copilot CLI usage is present; the object is omitted when there is no CLI usage. CLI usage is independent of IDE metrics—it is not reflected in fields such as totals_by_ide or totals_by_feature. The last_known_cli_version object appears in per-user reports only.

FieldTypeNullableDescription
totals_by_cli.session_countintegerNoNumber of distinct CLI sessions initiated on this day.
totals_by_cli.request_countintegerNoTotal number of requests made to Copilot via the CLI on this day, including both user-initiated prompts and automated agentic follow-up calls.
totals_by_cli.prompt_countintegerNoTotal number of user prompts, commands, or queries executed within a session.
totals_by_cli.token_usage.output_tokens_sumintegerNoTotal number of output tokens generated across all CLI requests on this day.
totals_by_cli.token_usage.prompt_tokens_sumintegerNoTotal number of prompt tokens sent across all CLI requests on this day.
totals_by_cli.token_usage.avg_tokens_per_requestnumberYesAverage number of output and prompt tokens per CLI request, computed as (output_tokens_sum + prompt_tokens_sum) ÷ request_count. Null when there were no requests that day.
totals_by_cli.last_known_cli_versionobjectNoMost recent Copilot CLI version detected for the user that day, as { cli_version, sampled_at }. Per-user reports only.
totals_by_cli.last_known_cli_version.cli_versionstringNoCopilot CLI version string. Defaults to unknown if no version was detected.
totals_by_cli.last_known_cli_version.sampled_atstringYesTimestamp (ISO 8601) when the version was sampled.

Pull request activity fields

Important

Organization- and enterprise-level reports may show different totals due to differences in user deduplication and attribution timing. For guidance on interpreting pull request metrics across scopes, see GitHub Copilot usage metrics.

The pull_requests object appears in aggregated enterprise and organization reports only. It captures daily pull request creation, review, merge, and suggestion activity at the enterprise or organization scope, including activity performed by Copilot.

FieldTypeNullableDescription
pull_requests.total_createdintegerNoTotal number of pull requests created on this specific day.

Creation is a one-time event. Each pull request is counted only on the day it is created.
pull_requests.total_reviewedintegerNoTotal number of pull requests reviewed on this specific day.

The same pull request may be counted on multiple days if it receives reviews on multiple days. Within a single day, each pull request is counted once, even if multiple review actions occur.
pull_requests.total_mergedintegerNoTotal number of pull requests merged on this specific day.

Merging is a one-time event. Each pull request is counted only on the day it is merged.
pull_requests.median_minutes_to_mergenumberYesMedian time, in minutes, between pull request creation and merge for pull requests merged on this specific day.

Median is used to reduce the impact of outliers from unusually long-running pull requests. Null when no pull requests were merged that day.
pull_requests.total_suggestionsintegerNoTotal number of pull request review suggestions generated on this specific day, regardless of author.
pull_requests.total_applied_suggestionsintegerNoTotal number of pull request review suggestions that were applied on this specific day, regardless of author.
pull_requests.total_created_by_copilotintegerNoNumber of pull requests created by Copilot on this specific day.
pull_requests.total_reviewed_by_copilotintegerNoNumber of pull requests reviewed by Copilot on this specific day.

A pull request may be counted on multiple days if Copilot reviews it on multiple days.
pull_requests.total_merged_created_by_copilotintegerNoNumber of pull requests created by Copilot that were merged on this specific day. Each pull request is counted only on the day it is merged.
pull_requests.total_merged_reviewed_by_copilotintegerNoNumber of pull requests that were both merged and reviewed by Copilot code review during the reporting period.
pull_requests.median_minutes_to_merge_copilot_authorednumberYesMedian time, in minutes, between pull request creation and merge for pull requests created by Copilot and merged on this specific day. Null when no such pull requests were merged that day.
pull_requests.median_minutes_to_merge_copilot_reviewednumberYesMedian time, in minutes, between pull request creation and merge, calculated only for pull requests reviewed by Copilot code review. Null when no such pull requests were merged that day.
pull_requests.total_copilot_suggestionsintegerNoNumber of pull request review suggestions generated by Copilot on this specific day.
pull_requests.total_copilot_applied_suggestionsintegerNoNumber of pull request review suggestions generated by Copilot that were applied on this specific day.
pull_requests.copilot_suggestions_by_comment_typearrayNoAggregated counts of Copilot code review suggestions, broken down by the comment type Copilot assigned (for example, security or bug_risk). Each entry includes comment_type, total_copilot_suggestions, and total_copilot_applied_suggestions. Always present but can be empty. Not available at the repository level.

AI adoption phase fields

Copilot groups users into AI adoption phases based on their activity. Phase information appears in two places: the per-user ai_adoption_phase object, and the aggregated totals_by_ai_adoption_phase array. For the phase values, see Breakdown dimension values.

The per-user ai_adoption_phase object contains:

FieldTypeNullableDescription
ai_adoption_phase.phase_numberintegerNoNumeric phase identifier (for example, 0 for "No Cohort").
ai_adoption_phase.phasestringNoHuman-readable phase name.
ai_adoption_phase.versionstringNoVersion of the adoption-phase model used (for example, v1).

Each entry in the aggregated totals_by_ai_adoption_phase array contains:

FieldTypeNullableDescription
phasestringNoHuman-readable phase name.
phase_numberintegerNoNumeric phase identifier.
total_engaged_usersintegerNoNumber of users grouped into this phase for the period.
avg_user_initiated_interactionsnumberNoAverage user-initiated interactions per user in this phase.
avg_code_generation_activitiesnumberNoAverage code generation activities per user in this phase.
avg_code_acceptance_activitiesnumberNoAverage code acceptance activities per user in this phase.
avg_loc_addednumberNoAverage lines of code added per user in this phase.
avg_loc_deletednumberNoAverage lines of code deleted per user in this phase.
avg_pull_requests_reviewednumberNoAverage pull requests reviewed per user in this phase.
avg_pull_requests_creatednumberNoAverage pull requests created per user in this phase.
avg_pull_requests_mergednumberNoAverage pull requests merged per user in this phase.
avg_pull_requests_median_minutes_to_mergenumberNoAverage of the per-user median minutes to merge for users in this phase.

Breakdown dimension values

The breakdown objects above use dimension fields whose values come from fixed sets. These are field values, not separate fields. For example, agent_edit and the chat_panel_*_mode values are values of the feature field, not top-level fields.

The feature dimension identifies the Copilot feature or mode an activity is attributed to:

ValueDescription
code_completionInline code completions.
chat_inlineInline chat in the editor.
chat_panel_ask_modeChat panel interactions with ask mode selected.
chat_panel_edit_modeChat panel interactions with edit mode selected.
chat_panel_agent_modeChat panel interactions with agent mode selected.
chat_panel_plan_modeChat panel interactions with plan mode selected.
chat_panel_custom_modeChat panel interactions with a custom agent selected.
chat_panel_unknown_modeChat panel interactions where the mode is unknown.
agent_editLines added and deleted when Copilot (in agent and edit mode) writes changes directly into your files in the IDE. Counts edits from custom agents as well. agent_edit is not included in suggestion-based metrics and may not populate suggestion-style fields, such as user_initiated_interaction_count.
copilot_cliActivity attributed to Copilot CLI.
othersAny feature not covered by the values above.

The ide dimension identifies the IDE an activity occurred in. This is not an exhaustive list, but examples of observed values include vscode, visualstudio, intellij, eclipse, xcode, neovim, vim, emacs, and zed.

The model dimension identifies the AI model used for chat activity. Values include specific model identifiers (for example, gpt-5.4 or claude-sonnet-4.6), auto, unknown, and others. The auto value represents activity where auto model selection was used and the request was not attributed to a specific model.

The phase dimension identifies the AI adoption phase a user is grouped into: No Cohort, Phase 1, Phase 2, or Phase 3.