You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/copilot/how-tos/administer-copilot/manage-for-enterprise/use-managed-settings/get-started.md
+24-2Lines changed: 24 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -104,9 +104,31 @@ You can override supported properties of the `{% data variables.copilot.managed_
104
104
105
105
Later, you can add different overrides for other keys and other teams. **For a more complete example**, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-managed-settings/override-settings-for-teams).
106
106
107
-
## 4. Check the settings are active
107
+
## 4. Validate and check the settings
108
108
109
-
Check that the settings you defined are active for users and overridden for specific teams. In this example, most of your enterprise's {% data variables.product.prodname_copilot_short %} users should find that new conversations in their client start in auto mode. The `special-team` enterprise team should not have this experience.
109
+
Validate your repository-based settings, then confirm that supported clients receive the expected configuration.
110
+
111
+
### Validate server-managed settings
112
+
113
+
For server-managed deployments, {% data variables.product.github %} automatically validates the settings in your selected `.github-private` repository. The validator checks the following files:
114
+
115
+
* `copilot/{% data variables.copilot.managed_setting_file %}`
116
+
* `copilot/{% data variables.copilot.team_mappings_file %}`
117
+
* Any files in `copilot/{% data variables.copilot.team_settings_directory %}` that are referenced in `copilot/{% data variables.copilot.team_mappings_file %}`
118
+
119
+
To review configuration issues:
120
+
121
+
{% data reusables.enterprise-accounts.access-enterprise %}
122
+
{% data reusables.enterprise-accounts.ai-controls-tab %}
123
+
1. On the **Agents** tab, find the "Copilot settings validation" section.
124
+
1. Review the errors and warnings. Each issue identifies the affected file and and JSON path.
125
+
1. To fix an issue, update the affected file and commit the change to the default branch of the `.github-private` repository. Then reload the **Agents** page to check the updated configuration.
126
+
127
+
If the validator finds no issues, the "Copilot settings validation" section isn't displayed. If validation is temporarily unavailable, your existing settings continue to apply. Reload the **Agents** page later to check again.
128
+
129
+
### Check settings on clients
130
+
131
+
After checking for validation issues, confirm that your settings are active for users and overridden for specific teams. In this example, new conversations should start in auto mode for most {% data variables.product.prodname_copilot_short %} users in your enterprise. New conversations should not start in auto mode for members of the `special-team` enterprise team.
110
132
111
133
For server-managed deployments, users on a supported client see the specified settings within about an hour. This includes `copilot/{% data variables.copilot.managed_setting_file %}`, `copilot/{% data variables.copilot.team_mappings_file %}`, and files in `copilot/{% data variables.copilot.team_settings_directory %}`. Restarting the client or signing in again triggers an immediate refresh.
Copy file name to clipboardExpand all lines: content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md
+41-1Lines changed: 41 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -252,7 +252,7 @@ Teams with fewer than 5 seated {% data variables.product.prodname_copilot_short
252
252
253
253
### Repository-level fields (API only)
254
254
255
-
Repository-level reports show daily pull request creation, review, merge, and suggestion activity for repositories in an organization or enterprise, including pull requests created by {% data variables.copilot.copilot_cloud_agent %} and reviewed by {% data variables.copilot.copilot_code-review_short %}. Each row represents one repository that had pull request activity on the requested day; repositories with no activity are omitted. These reports focus on pull request lifecycle activity and can contain data even when IDE usage metrics are absent.
255
+
Repository-level reports show daily pull request creation, review, merge, and suggestion activity, plus pull request review stage durations, for repositories in an organization or enterprise, including pull requests created by {% data variables.copilot.copilot_cloud_agent %} and reviewed by {% data variables.copilot.copilot_code-review_short %}. Each row represents one repository that had pull request activity on the requested day; repositories with no activity are omitted. These reports focus on pull request lifecycle activity and can contain data even when IDE usage metrics are absent.
256
256
257
257
These fields are returned by the daily repository-level report (`repos-1-day`), available via the REST API at the organization and enterprise scopes. For the endpoint URLs, response envelope, permissions, and download workflow, see [AUTOTITLE](/rest/copilot/copilot-usage-metrics). For example rows, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/example-schema#repository-level-schema-example).
258
258
@@ -266,6 +266,7 @@ These fields are returned by the daily repository-level report (`repos-1-day`),
266
266
|`repo_name`|`string`| No | Repository name. |
267
267
|`repo_visibility`|`string`| No | Repository visibility. Possible values are `PRIVATE`, `INTERNAL`, and `PUBLIC`. |
268
268
|`pull_requests`|`object`| No | Daily pull request activity for the repository. See [Pull request activity fields](#pull-request-activity-fields). |
269
+
|`pull_request_review_times`|`array`| No | Review stage durations for qualifying pull requests merged in the repository on this day, with one entry per author and reviewer type. Empty when no qualifying pull requests were merged. See [Pull request review time fields](#pull-request-review-time-fields). |
269
270
270
271
### Activity breakdown objects
271
272
@@ -416,6 +417,45 @@ The `pull_requests` object appears in aggregated enterprise and organization rep
416
417
|`pull_requests.total_copilot_applied_suggestions`|`integer`| No | Number of pull request review suggestions generated by {% data variables.copilot.copilot_code-review_short %} that were applied on this specific day. |
417
418
|`pull_requests.copilot_suggestions_by_comment_type`|`array`| No | Aggregated counts of {% data variables.copilot.copilot_code-review_short %} suggestions, broken down by the assigned comment type (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. |
418
419
420
+
### Pull request review time fields
421
+
422
+
The `pull_request_review_times` array appears only in repository-level reports. It breaks down how long merged pull requests spent in three stages of review, so you can see whether pull requests are waiting for a first review, waiting on back-and-forth between reviewers, or waiting to be merged after the final review.
423
+
424
+
Each entry covers pull requests merged in the repository on this specific day. All durations are attributed to the merge day, even when the reviews happened on earlier days.
425
+
426
+
**Which pull requests are counted**
427
+
428
+
A pull request is included when a person opened it, it reached ready for review, and at least one other person reviewed it. Only human reviews are timed. Reviews from {% data variables.copilot.copilot_code-review_short %}, from other bots, and from the pull request author are ignored, so a pull request reviewed by both a person and {% data variables.copilot.copilot_code-review_short %} is still included, with its stages timed from the human reviews. Time spent in draft before the first review is not counted.
429
+
430
+
A merged pull request is excluded from `pull_request_review_times` when any of the following is true:
431
+
432
+
* It was created by a bot, including {% data variables.copilot.copilot_cloud_agent %}.
433
+
* It never received a qualifying human review, including pull requests merged without any review.
434
+
* The time it became ready for review is unknown.
435
+
* Its timestamps are out of order. For example, its final review is recorded after its merge.
436
+
437
+
Exclusions are not reported for individual pull requests. Because `pull_requests.total_merged` counts every pull request merged that day, `pull_request_review_times[].total_merged` is usually lower. Compare the two values to see how many merged pull requests the durations cover.
438
+
439
+
**Data availability**
440
+
441
+
* Data builds forward from the release of these fields and is not backfilled.
442
+
* Pull requests that became ready for review before September 21, 2026 are excluded from this array, but still count toward `pull_requests.total_merged`.
443
+
* The array is empty (`[]`) on days when the repository merged no qualifying pull requests. An empty array means no data for that day, not zero minutes.
444
+
445
+
| Field | Type | Nullable | Description |
446
+
|:--|:--|:--|:--|
447
+
|`pull_request_review_times[].authored_by`|`string`| No | Who opened the pull requests in this entry. Currently always `human`. |
448
+
|`pull_request_review_times[].reviewed_by`|`string`| No | Who reviewed the pull requests in this entry. Currently always `human`. |
449
+
|`pull_request_review_times[].total_merged`|`integer`| No | Number of qualifying pull requests merged in the repository on this specific day. This counts only the pull requests described above, not all merged pull requests. |
450
+
|`pull_request_review_times[].median_minutes_ready_to_first_review`|`number`| No | Median time, in minutes, from the pull request becoming ready for review to its first qualifying review. |
451
+
|`pull_request_review_times[].p90_minutes_ready_to_first_review`|`number`| No | 90th percentile time, in minutes, from the pull request becoming ready for review to its first qualifying review. |
452
+
|`pull_request_review_times[].median_minutes_first_to_final_review`|`number`| No | Median time, in minutes, from the first qualifying review to the final qualifying review. <br/><br/>A pull request with a single qualifying review contributes a duration of `0`, because its first and final reviews are the same event. |
453
+
|`pull_request_review_times[].p90_minutes_first_to_final_review`|`number`| No | 90th percentile time, in minutes, from the first qualifying review to the final qualifying review. <br/><br/>A pull request with a single qualifying review contributes a duration of `0`, because its first and final reviews are the same event. |
454
+
|`pull_request_review_times[].median_minutes_final_review_to_merge`|`number`| No | Median time, in minutes, from the final qualifying review to merge. |
455
+
|`pull_request_review_times[].p90_minutes_final_review_to_merge`|`number`| No | 90th percentile time, in minutes, from the final qualifying review to merge. |
456
+
457
+
Medians and 90th percentiles are exact values calculated with linear interpolation and rounded to two decimal places.
458
+
419
459
### AI adoption phase fields
420
460
421
461
{% data variables.product.prodname_copilot_short %} 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](#breakdown-dimension-values).
Copy file name to clipboardExpand all lines: content/copilot/reference/copilot-usage-metrics/example-schema.md
+45-3Lines changed: 45 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -662,6 +662,8 @@ The following example shows a repository-level report from an NDJSON file downlo
662
662
663
663
Both enterprise- and organization-scoped rows include `organization_id`, which identifies the organization that owns the repository. Enterprise-scoped rows also include `enterprise_id`. Organization-scoped rows include `enterprise_id` only when an enterprise owns the organization.
664
664
665
+
The `pull_request_review_times` array is empty when the repository merged no qualifying pull requests that day. For which pull requests are counted, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/copilot-usage-metrics#pull-request-review-time-fields).
666
+
665
667
For the field reference, see [AUTOTITLE](/copilot/reference/copilot-usage-metrics/copilot-usage-metrics#repository-level-fields-api-only).
666
668
667
669
```json copy
@@ -690,7 +692,8 @@ For the field reference, see [AUTOTITLE](/copilot/reference/copilot-usage-metric
0 commit comments