Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ Users are grouped into the following phases:

| Phase | What it represents |
|:--|:--|
| Passive users | The user has not met the engagement threshold for a phase during the period. A passive user may still be using {% data variables.product.prodname_copilot_short %} regularly, for example by asking questions in {% data variables.copilot.copilot_chat_short %} or agent mode without applying any code edits. In the API, this phase is labeled `No Cohort`. |
| Chat-first users | The user is active but hasn't used a qualifying feature on at least two distinct days in the trailing 28-day window. For example, a chat-first user may be asking questions in {% data variables.copilot.copilot_chat_short %} or agent mode without applying any code edits. In the API, this phase is labeled `No Cohort`. |
| Phase 1: Code first | The user engaged with code completions and/or agent edits, where {% data variables.product.prodname_copilot_short %} writes changes directly into files in the IDE. Using {% data variables.copilot.copilot_chat_short %} or agent mode without producing code completion or agent edit activity does not qualify on its own. |
| Phase 2: Agent first | The user engaged with a single {% data variables.product.github %}-based agent surface, such as {% data variables.copilot.copilot_cloud_agent %}, {% data variables.copilot.copilot_code-review_short %}, or {% data variables.copilot.copilot_cli_short %}. Both active engagement with {% data variables.copilot.copilot_code-review_short %} and having it automatically assigned to review a pull request count as the same surface. |
| Phase 3: Multi-agent | The user engaged with two or more {% data variables.product.github %}-based agent surfaces, or with the {% data variables.copilot.github_copilot_app %}. |
Expand All @@ -179,17 +179,17 @@ Phase assignment is recalculated daily from the trailing 28-day window, so a use

The impact dashboard counts every user who was active during the trailing 28-day window and groups each user by their current phase. The phase classification rules are the same, but the dashboard population is broader than the `totals_by_ai_adoption_phase.total_engaged_users` field in API and NDJSON reports, which counts users who were active on a specific day.

Users who haven't met any phase's threshold are grouped into **Passive users**, which is not a measure of inactivity, but a signal that a user's engagement hasn't yet reached the level needed to reliably classify their adoption depth. For example, a user with fewer than two active days in the trailing 28-day window, or one who only lightly uses a surface like {% data variables.copilot.copilot_chat_short %} on {% data variables.product.prodname_dotcom_the_website %}, shows as a passive user.
Users who haven't met any phase's threshold are grouped into **Chat-first users**, which is not a measure of inactivity, but a signal that a user's engagement hasn't yet reached the level needed to reliably classify their adoption depth. For example, a user with fewer than two active days in the trailing 28-day window, or one who only lightly uses a surface like {% data variables.copilot.copilot_chat_short %} on {% data variables.product.prodname_dotcom_the_website %}, shows as a chat-first user.

Because phase assignment is based on **which surfaces a user engages with**, not simply how many actions they take, a user with high completion volume but no agent usage stays in Phase 1, while a user with lighter but broader usage across agent surfaces progresses to Phase 2 or Phase 3.

For the underlying schema fields, see [AI adoption phase fields](/copilot/reference/copilot-usage-metrics/copilot-usage-metrics#ai-adoption-phase-fields).

The impact dashboard's **adoption multiplier** divides the average amount of pull requests merged for engaged users, which are ones in Phase 1, 2, or 3, by the amount of pull requests merged for Passive users.
The impact dashboard's **adoption multiplier** divides the average amount of pull requests merged for engaged users, which are ones in Phase 1, 2, or 3, by the amount of pull requests merged for chat-first users.

This shows the relative impact of deeper adoption, independent of how many users fall into each phase. This is a measurement to understand the potential lift that becoming a more engaged user can provide.

For example, if users in the engaged cohorts averaged 20 pull requests/user/month and the passive cohort averaged 10, then the equation is 20 / 10 = 2x multiplier.
For example, if engaged users averaged 20 merged pull requests per user per month and chat-first users averaged 10, the multiplier is 20 / 10 = 2x.

### Understanding industry comparisons

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,3 +168,13 @@ You can configure how {% data variables.copilot.copilot_code-review_short %} com
* **Let organizations decide**: Organization owners can choose whether to enable {% data variables.product.prodname_copilot_short %} approvals.
* **Enable for selected organizations**: {% data variables.product.prodname_copilot_short %} approvals are enabled only for the organizations you select.
* **Disabled everywhere**: Organizations cannot enable {% data variables.product.prodname_copilot_short %} approvals. This is the default.

## Configuring {% data variables.copilot.copilot_code-review_short %} with the API

You can use the {% data variables.product.github %} REST and GraphQL APIs to manage some {% data variables.copilot.copilot_code-review_short %} settings.

* **Enterprise**: Enable or disable {% data variables.copilot.copilot_code-review_short %} for all organizations, or let organization owners decide.
* **Organization**: Enable or disable {% data variables.copilot.copilot_code-review_short %} when the enterprise lets organization owners decide, set the default review effort level, and configure the runner that {% data variables.copilot.copilot_code-review_short %} uses.
* **Repository**: Set the review effort level and choose whether reviews use custom instructions and MCP servers.

Other settings on this page, such as maximum review effort, billing, and approvals, are not available through the API. For more information, see [GraphQL API reference for {% data variables.product.prodname_copilot_short %}](/graphql/reference/copilot).
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ By default, {% data variables.product.prodname_copilot_short %} leaves a "Commen

{% data variables.product.prodname_copilot_short %}'s review comments work like comments from human reviewers. Add reactions, reply, resolve, or hide them. Any replies you add are visible to other people but not to {% data variables.product.prodname_copilot_short %}.

You can also request a review from {% data variables.product.prodname_copilot_short %} through the {% data variables.product.github %} REST API by requesting `copilot-pull-request-reviewer[bot]` as a reviewer. For more information, see [AUTOTITLE](/rest/pulls/review-requests#request-reviewers-for-a-pull-request).
You can also use the {% data variables.product.github %} REST API to request reviews from {% data variables.product.prodname_copilot_short %} and to identify reviews and comments from {% data variables.copilot.copilot_code-review_short %}. For more information, see [AUTOTITLE](/rest/pulls/review-requests#request-reviewers-for-a-pull-request), [AUTOTITLE](/rest/pulls/reviews), and [AUTOTITLE](/rest/pulls/comments).

## Work with suggested changes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ These instructions explain how to use {% data variables.copilot.copilot_code-rev

Any comments you add to {% data variables.product.prodname_copilot_short %}'s review comments will be visible to humans, but they won't be visible to {% data variables.product.prodname_copilot_short %}, and {% data variables.product.prodname_copilot_short %} won't reply.

You can also request a review from {% data variables.product.prodname_copilot_short %} through the {% data variables.product.github %} REST API by requesting `copilot-pull-request-reviewer[bot]` as a reviewer. For more information, see [AUTOTITLE](/rest/pulls/review-requests#request-reviewers-for-a-pull-request).
You can also use the {% data variables.product.github %} REST API to request reviews from {% data variables.product.prodname_copilot_short %} and to identify reviews and comments from {% data variables.copilot.copilot_code-review_short %}. For more information, see [AUTOTITLE](/rest/pulls/review-requests#request-reviewers-for-a-pull-request), [AUTOTITLE](/rest/pulls/reviews), and [AUTOTITLE](/rest/pulls/comments).

## Enabling automatic reviews

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ These metrics appear in the impact dashboard, which groups users into adoption c
|:--|:--|
| Engagement trends | How the organization's adoption cohort mix and pull request throughput (total pull requests merged per month) have changed over the last six months. |
| Feature engagement | Number of active users who engaged with each included {% data variables.product.prodname_copilot_short %} feature on at least two distinct days during the inclusive 28-day window. |
| Adoption cohort distribution | Share of licensed users grouped into each adoption phase (Passive users, Phase 1, Phase 2, Phase 3) for the period. Passive users correspond to the `No Cohort` value in the API. |
| Adoption multiplier | Compares engaged users (Phase 1, 2, or 3) against passive users on code shipped (pull requests merged per user per month) and time to merge pull requests, to show the relative impact of deeper {% data variables.product.prodname_copilot_short %} adoption. |
| Adoption cohort distribution | Share of licensed users grouped into each adoption phase (Chat-first users, Phase 1, Phase 2, Phase 3) for the period. Chat-first users correspond to the `No Cohort` value in the API. |
| Adoption multiplier | Compares engaged users (Phase 1, 2, or 3) against chat-first users on code shipped (pull requests merged per user per month) and time to merge pull requests, to show the relative impact of deeper {% data variables.product.prodname_copilot_short %} adoption. |
| Recommendations | Suggested actions, such as configuring {% data variables.copilot.copilot_cloud_agent %} or enabling {% data variables.copilot.copilot_code-review_short %}, based on the organization's current cohort distribution. |

## Code generation dashboard metrics
Expand Down Expand Up @@ -236,17 +236,17 @@ The 28-day aggregate reports (`enterprise-28-day` and `organization-28-day`) are

#### {% data variables.product.prodname_copilot_short %} feature engagement fields

The optional `copilot_feature_engagement` object summarizes the report's rolling active-user population and engagement with seven features. For the `day_totals` entry whose `day` matches `report_end_day`, `copilot_feature_engagement.active_user_count` equals the sum of the mutually exclusive `totals_by_ai_adoption_phase[].users_in_phase_28d` values.
The optional `copilot_feature_engagement` object summarizes the report's rolling active-user population and engagement with nine features. For the `day_totals` entry whose `day` matches `report_end_day`, `copilot_feature_engagement.active_user_count` equals the sum of the mutually exclusive `totals_by_ai_adoption_phase[].users_in_phase_28d` values.

Counts for individual features overlap because a user can engage with more than one feature. Do not add the `engaged_user_count` values together. The initial feature set reports active and passive {% data variables.copilot.copilot_code-review_short %} as separate features. It does not include {% data variables.copilot.copilot_chat_short %} or {% data variables.product.prodname_vscode_shortname %} Agent.
Counts for individual features overlap because a user can engage with more than one feature. Do not add the `engaged_user_count` values together. The feature set reports active and passive {% data variables.copilot.copilot_code-review_short %} as separate features.

{% data variables.copilot.copilot_chat_short %} is planned for a later release after 28 consecutive days of data have been collected and report consumers support the additional entry.
The array also includes {% data variables.copilot.copilot_chat_short %} (`chat`) and the {% data variables.product.prodname_vscode_shortname %} Agents window (`vscode_agent`). These two features are reported for engagement only and aren't used to classify adoption phases. `chat` covers {% data variables.copilot.copilot_chat_short %} use captured by usage metrics, including agent mode. Users counted under `agent_edit` are also counted under `chat`. Reports for windows before these features were added can contain only the original seven entries.

| Field | Type | Nullable | Description |
|:--|:--|:--|:--|
| `copilot_feature_engagement.active_user_count` | `integer` | No | Nonnegative number of distinct active users in the inclusive 28-day report window. A valid zero-user report sets this field to `0`. |
| `copilot_feature_engagement.totals_by_feature` | `array` | No | Feature engagement counts. The initial array contains exactly one entry for each of these values: `code_completion`, `agent_edit`, `code_review_passive`, `code_review_active`, `cloud_agent`, `copilot_cli`, and `github_app`. A valid zero-user report includes all seven entries with `engaged_user_count` set to `0`. |
| `copilot_feature_engagement.totals_by_feature[].feature` | `string` | No | Feature identifier. In this object, `github_app` represents the {% data variables.copilot.github_copilot_app_short %}. This differs from the `copilot_app` value used in activity breakdown arrays such as `totals_by_feature`. |
| `copilot_feature_engagement.totals_by_feature` | `array` | No | Feature engagement counts, sorted alphabetically by `feature`. The array contains exactly one entry for each of these values: `agent_edit`, `chat`, `cloud_agent`, `code_completion`, `code_review_active`, `code_review_passive`, `copilot_cli`, `github_app`, and `vscode_agent`. A valid zero-user report includes all nine entries with `engaged_user_count` set to `0`. |
| `copilot_feature_engagement.totals_by_feature[].feature` | `string` | No | Feature identifier. In this object, `github_app` represents the {% data variables.copilot.github_copilot_app_short %}. Activity breakdown arrays such as `totals_by_feature` use `copilot_app` instead. The `vscode_agent` value represents the dedicated {% data variables.product.prodname_vscode_shortname %} Agents window, not agent mode in the editor. |
| `copilot_feature_engagement.totals_by_feature[].engaged_user_count` | `integer` | No | Nonnegative number of distinct active users who engaged with the feature on at least two distinct days during the inclusive 28-day report window. |

### User-teams fields
Expand Down Expand Up @@ -611,7 +611,7 @@ A user is classified into a phase based on the {% data variables.product.prodnam

| Phase | Engagement criteria |
|:--|:--|
| No Cohort (displayed as "Passive users" in the impact dashboard) | The user isn't engaged with any feature that qualifies for a phase. This doesn't mean the user is inactive. A user in this group can still be using {% data variables.product.prodname_copilot_short %} regularly and consuming premium requests, but hasn't used a qualifying feature on at least two distinct days within the trailing 28-day window. The most common case is conversational use of {% data variables.copilot.copilot_chat_short %} or agent mode, recorded as `chat_panel_agent_mode`, that never produces `code_completion` or `agent_edit` activity. Copying code out of a chat response also doesn't produce either signal. |
| No Cohort (displayed as "Chat-first users" in the impact dashboard) | The user isn't engaged with any feature that qualifies for a phase. This doesn't mean the user is inactive. A user in this group can still be using {% data variables.product.prodname_copilot_short %} regularly and consuming premium requests, but hasn't used a qualifying feature on at least two distinct days within the trailing 28-day window. The most common case is conversational use of {% data variables.copilot.copilot_chat_short %} or agent mode, recorded as `chat_panel_agent_mode`, that never produces `code_completion` or `agent_edit` activity. Copying code out of a chat response also doesn't produce either signal. |
| Phase 1: Code first | Engaged with inline code completions (the `code_completion` value of the `feature` dimension) or with agent edits written directly to files (the `agent_edit` value of the `feature` dimension). |
| Phase 2: Agent first | Engaged with exactly one {% data variables.product.github %}-based agent surface: {% data variables.copilot.copilot_cli_short %} (the `copilot_cli` value of the `feature` dimension), {% data variables.copilot.copilot_cloud_agent %} (`used_copilot_cloud_agent`), or {% data variables.copilot.copilot_code-review_short %} (`used_copilot_code_review_active` or `used_copilot_code_review_passive`). Active and passive {% data variables.copilot.copilot_code-review_short %} count together as a single surface. |
| Phase 3: Multi-agent | Engaged with the {% data variables.copilot.github_copilot_app_short %} (the `copilot_app` value of the `feature` dimension), or engaged with two or more of the agent surfaces listed for Phase 2. |
Expand Down
36 changes: 24 additions & 12 deletions content/copilot/reference/copilot-usage-metrics/example-schema.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ In this example, `used_copilot_code_review_active` and `used_copilot_code_review
"loc_suggested_to_delete_sum" : 6,
"missing_client_telemetry_user_count" : 0,
"monthly_active_agent_users" : 0,
"monthly_active_chat_users" : 0,
"monthly_active_chat_users" : 2,
"monthly_active_copilot_cloud_agent_users" : 1,
"monthly_active_copilot_code_review_users" : 1,
"monthly_active_local_byok_users" : 2,
Expand Down Expand Up @@ -567,26 +567,32 @@ In this example, `used_copilot_code_review_active` and `used_copilot_code_review
"copilot_feature_engagement" : {
"active_user_count" : 2,
"totals_by_feature" : [ {
"feature" : "code_completion",
"engaged_user_count" : 2
}, {
"feature" : "agent_edit",
"engaged_user_count" : 1
}, {
"feature" : "code_review_passive",
"feature" : "chat",
"engaged_user_count" : 2
}, {
"feature" : "cloud_agent",
"engaged_user_count" : 1
}, {
"feature" : "code_completion",
"engaged_user_count" : 2
}, {
"feature" : "code_review_active",
"engaged_user_count" : 1
}, {
"feature" : "cloud_agent",
"feature" : "code_review_passive",
"engaged_user_count" : 1
}, {
"feature" : "copilot_cli",
"engaged_user_count" : 1
}, {
"feature" : "github_app",
"engaged_user_count" : 1
}, {
"feature" : "vscode_agent",
"engaged_user_count" : 1
} ]
},
"report_end_day" : "2025-10-01",
Expand Down Expand Up @@ -614,7 +620,7 @@ In this example, `used_copilot_code_review_active` and `used_copilot_code_review
"loc_suggested_to_delete_sum" : 3,
"missing_client_telemetry_user_count" : 1,
"monthly_active_agent_users" : 0,
"monthly_active_chat_users" : 0,
"monthly_active_chat_users" : 2,
"monthly_active_copilot_cloud_agent_users" : 0,
"monthly_active_copilot_code_review_users" : 0,
"monthly_active_local_byok_users" : 0,
Expand Down Expand Up @@ -776,26 +782,32 @@ In this example, `used_copilot_code_review_active` and `used_copilot_code_review
"copilot_feature_engagement" : {
"active_user_count" : 2,
"totals_by_feature" : [ {
"feature" : "code_completion",
"engaged_user_count" : 2
}, {
"feature" : "agent_edit",
"engaged_user_count" : 1
}, {
"feature" : "code_review_passive",
"feature" : "chat",
"engaged_user_count" : 2
}, {
"feature" : "cloud_agent",
"engaged_user_count" : 1
}, {
"feature" : "code_completion",
"engaged_user_count" : 2
}, {
"feature" : "code_review_active",
"engaged_user_count" : 1
}, {
"feature" : "cloud_agent",
"feature" : "code_review_passive",
"engaged_user_count" : 1
}, {
"feature" : "copilot_cli",
"engaged_user_count" : 1
}, {
"feature" : "github_app",
"engaged_user_count" : 1
}, {
"feature" : "vscode_agent",
"engaged_user_count" : 1
} ]
},
"report_end_day" : "2025-10-01",
Expand Down
Loading
Loading