Skip to content

Commit 239ccc4

Browse files
guntripCopilotamrithssgpadakmyarb
authored
Managed Settings Overrides for Enterprise Teams (#62088)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: amrithss <89491847+amrithss@users.noreply.github.com> Co-authored-by: Greg Padak <gpadak@github.com> Co-authored-by: Melanie Yarbrough <11952755+myarb@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent 275ddfd commit 239ccc4

2 files changed

Lines changed: 50 additions & 3 deletions

File tree

content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings.md

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ category:
1515
- Manage Copilot for a team
1616
---
1717

18-
With enterprise managed settings, enterprise owners can centrally define and distribute configuration settings to supported clients for users on your enterprise's {% data variables.product.prodname_copilot_short %} plan, ensuring every member works within the same guardrails.
18+
With enterprise managed settings, enterprise owners can centrally define and distribute configuration settings to supported clients for users on your enterprise's {% data variables.product.prodname_copilot_short %} plan, ensuring every member works within the guardrails you define, while letting teams tailor the settings you allow.
1919

2020
The following clients are supported, although not every client supports every property:
2121

@@ -24,14 +24,16 @@ The following clients are supported, although not every client supports every pr
2424
* The {% data variables.copilot.github_copilot_app %}
2525
* {% data variables.copilot.copilot_cloud_agent %}
2626

27-
These settings apply enterprise-wide, with no organization-level override. For each supported key, the `{% data variables.copilot.managed_setting_file %}` value takes precedence over any file-based configuration a user sets in their client.
27+
These settings apply enterprise-wide and enterprises can customize specific keys to enterprise teams. For each supported key, the `{% data variables.copilot.managed_setting_file %}` value takes precedence over any file-based configuration a user sets in their client.
2828

2929
Managed settings are loaded locally when the client starts, even if the device has no network connection. This means controls such as suppressing the `allow-all` permission options and restricting plugin configuration still apply before sign in or any server round trip, and remain active when users switch accounts.
3030

3131
## Defining settings
3232

3333
For detailed information on the available properties and syntax, see [AUTOTITLE](/copilot/reference/enterprise-managed-settings-reference).
3434

35+
Use `copilot/{% data variables.copilot.team_mappings_file %}` and the `copilot/{% data variables.copilot.team_settings_directory %}` directory when you need one or more enterprise teams to use settings that differ from the defaults in `copilot/{% data variables.copilot.managed_setting_file %}`. For more information, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/configure-enterprise-managed-settings#overriding-settings-for-specific-teams).
36+
3537
## Choosing a deployment method
3638

3739
There are multiple ways to deploy enterprise managed settings. Use the following guidelines to choose the right method for you. For any method, pilot on a small device group before broad deployment.
@@ -50,6 +52,47 @@ There are additional considerations if you use a dedicated enterprise for {% dat
5052
1. Commit and push your changes to the default branch.
5153
1. Confirm that enterprise users are running a supported client. Updated settings are applied automatically within about an hour, or immediately after the client restarts or the user signs in again.
5254

55+
## Overriding settings for specific teams
56+
57+
For server-managed deployments, use `copilot/{% data variables.copilot.team_mappings_file %}` and the `copilot/{% data variables.copilot.team_settings_directory %}` directory when one or more enterprise teams should use settings that differ from your default `copilot/{% data variables.copilot.managed_setting_file %}` values. `enabledPlugins` and `extraKnownMarketplaces` work additively. The enterprise `{% data variables.copilot.managed_setting_file %}` sets a baseline, and an enterprise team file can add more plugins and marketplaces on top of it.
58+
59+
1. In your enterprise's `copilot/{% data variables.copilot.managed_setting_file %}` file, mark each key you want to make eligible for override using the `{ "overridable": <VALUE> }` syntax. The `json` files you map to teams can only send different values for keys you mark overridable. An `overridable` value you provide in `managed-settings.json` is the default when teams files do not declare a different value for a given key.
60+
For example, to defer both `model` and `disableBypassPermissionsMode`:
61+
62+
```json
63+
{
64+
"model": { "overridable": "auto" },
65+
"permissions": {
66+
"disableBypassPermissionsMode": { "overridable": "disable" }
67+
}
68+
}
69+
```
70+
71+
1. In your enterprise's `.github-private` repository, create `copilot/{% data variables.copilot.team_mappings_file %}`. Map each team settings file to one or more enterprise team slugs. The key is the settings file name and the value is an array of team slugs, so you can apply one file across multiple teams.
72+
73+
```json
74+
{
75+
"devs.json": ["developers-all", "finops-dev"],
76+
"ai-users.json": ["ai-baseline-trained"],
77+
"frontier.json": ["ai-pioneers"]
78+
}
79+
```
80+
81+
1. Create the team settings file under `copilot/{% data variables.copilot.team_settings_directory %}`. Include only the keys you marked as overridable. Every other key stays governed by your enterprise default.
82+
83+
```json
84+
{
85+
"model": "unmanaged",
86+
"permissions": {
87+
"disableBypassPermissionsMode": "unmanaged"
88+
}
89+
}
90+
```
91+
92+
1. Commit and push your changes to the default branch.
93+
94+
{% data variables.product.prodname_dotcom %} evaluates enterprise team membership and applies matching settings for each person. If a user belongs to multiple teams, their team files are combined using the least restrictive value for each key, then applied beneath the enterprise settings, where platform decisions always win.
95+
5396
## Deploying MDM-managed settings
5497

5598
1. Create or update your `{% data variables.copilot.managed_setting_file %}` payload using the same JSON schema used for server-managed settings.
@@ -70,7 +113,9 @@ There are additional considerations if you use a dedicated enterprise for {% dat
70113

71114
## Verifying the configuration has applied
72115

73-
Once the configuration is committed, users on a supported client see the specified settings within about an hour, since clients periodically check the server for updated configuration. Restarting the client or signing in again applies the latest settings immediately.
116+
Once the configuration is committed, users on a supported client see the specified settings within about an hour, since clients periodically check the server for updated configuration. For server-managed deployments, 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 %}`.
117+
118+
Restarting the client or signing in again applies the latest settings immediately.
74119

75120
If a user does not see these settings, ensure they receive access to {% data variables.product.prodname_copilot_short %} through your enterprise or one of its organizations. If a user receives a license from multiple billing entities, ensure they have selected your enterprise in the "Usage billed to" dropdown in their [personal {% data variables.product.prodname_copilot_short %} settings](https://github.com/settings/copilot/features).
76121

data/variables/copilot.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,3 +262,5 @@ copilot_byok_supported_features: '{% data variables.copilot.copilot_chat_short %
262262

263263
## File for enterprise client management
264264
managed_setting_file: 'managed-settings.json'
265+
team_mappings_file: 'team-mappings.json'
266+
team_settings_directory: 'teams/'

0 commit comments

Comments
 (0)