使用此参考了解当前支持的密钥 managed-settings.json。
有关部署方法和支持的客户端,请参阅 配置企业管理设置。
优先规则
当存在多个设置源时,此列表中的前面设置优先于列表中的设置:
- 受 MDM 管理的设置
- 由服务器管理的设置
- 基于文件的配置
- 用户级设置
其中 Copilot CLI, sandbox 键是这些优先规则的例外。 由 MDM 管理、服务器管理以及基于文件的设置所施加的沙盒限制会彼此叠加,并与用户的沙盒设置一起按最严格的方式生效。
支持的密钥
| Key | Purpose | Copilot CLI | VS Code | GitHub Copilot app | Copilot cloud agent | JetBrains IDEs |
|---|---|---|---|---|---|---|
permissions.disable | 禁用绕过或 YOLO 样式允许的所有行为 | |||||
model | 将自动模型选择设置为新对话的默认值 | |||||
enabledPlugins | 按密钥启用或禁用特定插件 | |||||
extra | 添加用户可以访问的插件市场 | |||||
strict | 仅允许从明确列出的应用市场安装插件 | |||||
telemetry | 配置 OpenTelemetry 导出,将 Copilot 使用数据路由到你所选择的收集器 | |||||
remoteControl | 根据所列出的组织的控制客户端的 SSO 授权状态,限制是否可以远程控制此设备上托管的会话。 不会影响用户远程控制在其他设备上托管的会话的能力 | |||||
allowedMcpServers | 定义允许运行的 MCP 服务器的允许列表。 任何不匹配的服务器都将被阻止。 省略以允许所有服务器,但受任何拒绝规则的约束 | |||||
deniedMcpServers | 定义了被无条件阻止的 MCP 服务器,即使它们也与 allowedMcpServers 中的某个条目匹配 | |||||
sandbox | 对命令执行、文件系统和网络访问、凭据以及本地 MCP 和 LSP 服务器强制实施最低本地沙盒限制 |
将不同的设置应用于企业团队
对于服务器管理的部署,企业可以根据其企业团队成员身份将不同的治理应用于用户组。 企业定义所有设置 - 团队成员身份仅确定哪些用户会收到一组给定的值。
要使某个键可使用团队特定的值,请在 managed-settings.json 中使用 { "overridable": <VALUE> } 语法将其标记为可重写。 可覆盖键如果已设置,则使用团队的值;如果团队未设置该项,则回退到你的企业默认值。 语法适用于 、、 和 键。 未标记为可重写的密钥仍然是团队无法修改的企业级决策。
enabledPlugins 和 extraKnownMarketplaces 以累加方式起作用。 企业 managed-settings.json 设定了基准,而企业团队文件可以在此基础上添加更多插件和应用市场。 有关完整设置步骤,请参阅 配置企业管理设置。
配置示例
以下示例在一个托管设置文件中显示这些密钥。
{
"model": "auto",
"permissions": {
"disableBypassPermissionsMode": "disable"
},
"enabledPlugins": {
"my-plugin@agent-skills": true
},
"extraKnownMarketplaces": {
"agent-skills": {
"source": {
"source": "github",
"repo": "OWNER/REPO"
}
}
},
"strictKnownMarketplaces": [
{
"source": "github",
"repo": "OWNER/REPO"
}
],
"telemetry": {
"enabled": true,
"endpoint": "https://otel-collector.example.com",
"protocol": "http/protobuf",
"captureContent": false,
"lockCaptureContent": true,
"serviceName": "copilot",
"resourceAttributes": {
"deployment.environment": "production"
},
"headers": {
"Authorization": "Bearer TOKEN"
}
},
"remoteControl": {
"mode": "requireSSO",
"githubDotComOrganizations": ["ORG-NAME"]
},
"allowedMcpServers": [
{ "serverUrl": "https://api.githubcopilot.com/*" },
{ "serverCommand": ["npx", "@playwright/mcp@latest"] },
{ "serverCommand": ["cmd", "/c", "uvx", "markitdown-mcp"] }
],
"deniedMcpServers": [
{
"serverCommand": [
"npx",
"-y",
"@modelcontextprotocol/server-filesystem",
"/"
]
}
],
"sandbox": {
"enabled": true,
"allowBypass": false,
"sandboxMcpServers": true,
"sandboxLspServers": true
}
}
enabledPlugins
定义为所有企业用户自动安装或禁止的插件。 每个条目使用格式 PLUGIN-NAME@MARKETPLACE-NAME 作为键,并带有布尔值: true 要求启用插件或 false 要求禁用插件。 请参阅“关于企业管理的插件标准”。
extraKnownMarketplaces
定义可供用户使用的其他插件市场。 每个条目都是包含属性 source 的命名市场对象。 支持以下源类型:
"github"- 需要repo格式的OWNER/REPO;可选的ref(分支、标记或 SHA)和path(子目录)"git"— 需要url;可选ref和path"directory"— 需要path
请参阅“关于企业管理的插件标准”。
strictKnownMarketplaces
将插件安装限制为仅可从企业明确指定的应用市场进行安装。 空数组表示完全锁定。 每个条目都是一个市场对象,其中包含一个 source 指示源类型的属性。 支持以下源类型:
"github"— 需要repo为OWNER/REPO格式,可选ref和path"git"— 需要url;可选ref和path"url"— 需要url;可选headers对象"npm"— 需要package"file"— 需要path"directory"— 需要path"hostPattern"— 需hostPattern(匹配 marketplace 主机的正则表达式)"pathPattern"— 要求pathPattern(用于匹配市场路径的正则表达式)
模型
将自动模型选择设置为新对话的默认值。 请参阅“关于 Copilotauto model selection”。
- 如果设置为
model``"auto",则新会话将使用自动模型,除非用户为每个会话指定不同的模型。 - 企业团队映射可以替代此密钥。 在你的
managed-settings.json中,使用{ "overridable": "auto" }语法按团队分别定制该密钥的配置。 然后,您可以在团队设置文件中设置"model": "unmanaged",为该主题团队的成员提供优先于managed-settings.json的特化配置。
注意
model 最初记录为 permissions.model. 客户端在缺少顶级model密钥时仍会读取嵌套permissions.model值,但应在新配置中使用顶级model密钥。
权限
禁用绕过权限模式
阻止用户启用绕过模式(也称为“YOLO 模式”)。 绕过模式允许代理在不请求批准的情况下运行命令、访问文件和提取 URL。
当您将 disableBypassPermissionsMode 设置为 "disable" 时,用户无法启用绕过模式:
- 在Copilot CLI中,用于允许所有权限的所有命令行选项(
--yolo、--allow-all以及单独的--allow-all-tools、--allow-all-paths和--allow-all-urls选项)都会在启动时被禁用,且无法授予更高权限。/yolo和/allow-all斜杠命令也被阻止了。 - 在中 VS Code,全局自动批准设置(
chat.tools.global.autoApprove)已关闭,无法重新启用。 - 在 GitHub Copilot app 的会话设置中,“工具权限”的“允许所有”设置被禁用。
- 企业团队映射可以替代此密钥。 在你的
managed-settings.json中,使用{ "overridable": "disable" }语法按团队分别定制该密钥的配置。 然后,您可以在团队设置文件中设置"disableBypassPermissionsMode": "unmanaged",为该主题团队的成员提供优先于managed-settings.json的特化配置。
遥测
配置 OpenTelemetry 导出,将使用情况数据路由 Copilot 到所选收集器。
Copilot CLI 和 VS Code 支持此属性。
设置 telemetry 属性时, Copilot 遥测数据将发送到指定的终结点。 支持以下子属性:
enabled:设置为true打开遥测导出,或false将其关闭。endpoint:OTLP 收集器的 URL(例如https://otel-collector.example.com)。protocol:用于遥测导出的传输协议。 接受的值是"http/json"和"http/protobuf"。captureContent:设置为true时,在遥测有效负载中包含提示和响应内容;设置为false时,则不包含这些内容。lockCaptureContent:设置为true阻止用户更改captureContent设置。serviceName:遥测服务名称的标签(例如"copilot")。resourceAttributes:一个包含 OpenTelemetry 资源属性的对象,用于附加到所有导出的遥测数据(例如{"deployment.environment": "production"})。headers:一个 HTTP 标头对象,用于随每个遥测请求一起发送(例如,用于收集器的Authorization标头)。
远程控制
限制设备上托管的 Copilot 会话是否可被远程控制。 这不会影响用户远程控制在其他设备上托管的会话的能力。
mode:设置为"disabled"以防止对设备上的会话进行远程控制,设置为"requireSSO"以仅允许来自已获得githubDotComOrganizations中所列组织的 SSO 授权的客户端的远程控制,或设置为"enabled"以不受限制地允许远程控制。githubDotComOrganizations:由组织登录名组成的数组。 当mode是"requireSSO"时为必需项。
允许的MCP服务器
定义允许运行的 MCP 服务器的允许列表。 设置后,仅允许与至少一个条目匹配的服务器。 任何不匹配的服务器都将被阻止。
完全省略此键即可允许所有服务器,但仍受 deniedMcpServers 中任何条目的限制。 将其设置为空数组,以阻止除内置默认服务器之外的所有服务器。
当多个设置来源定义了 allowedMcpServers 时,最终生效的允许列表是所有来源的交集。 服务器必须获得每个源的许可才能运行。
每个条目必须恰好包含一个匹配器属性。
| 财产 | 匹配行为 | 适用的服务器 |
|---|---|---|
serverName | 与用户分配的服务器标签完全匹配。 不支持通配符。 由于服务器名称由用户自行选择,因此当您需要强制验证服务器身份时,请使用 serverUrl 或 serverCommand。 | 任意服务器。 内存中服务器只能使用 serverName。 |
serverUrl | 匹配远程服务器的 URL。 支持 * 子域或路径前缀的通配符,例如或 https:/。 | 通过 HTTP 或服务器发送事件(SSE)连接的远程服务器。 此属性不适用于本地服务器,即使它们具有 URL 也是如此。 |
serverCommand | 匹配本地服务器的确切命令和每个参数,例如 ["npx", "-y", "my-mcp-server"]。 不支持通配符和命令行扩展。 | 使用标准输入和输出的本地服务器(stdio)。 此属性不适用于远程服务器,即使它们具有命令也是如此。 |
对于企业团队,此密钥是可替代的。 在企业级将 overridable 下的匹配器对象包装起来,然后使用常规语法在每个团队的文件中定义允许列表和拒绝列表。
URL 规范化
在将 serverUrl 模式与服务器 URL 进行比较之前,客户端会先将这两个值规范化:
- 将协议和主机名转换为小写。
- 将国际化域名或 Unicode 主机名转换为 Punycode。
- 删除 HTTP 的默认端口
:80或 HTTPS 的默认端口:443。 - 解码百分比编码的主机八进制数。 例如,
%65vil将变为evil。 - 从 DNS 名称中删除 URL 片段和尾随点。
- 防止权限部分中的通配符跨越
/边界并匹配到路径部分。
deniedMcpServers
定义无条件阻止的 MCP 服务器。 即使某台服务器同时匹配了 allowedMcpServers 中的某个条目,只要它匹配任意条目,也会被阻止。 拒绝规则始终优先于允许规则。
第一方 Copilot 服务器(如内置 GitHub MCP 服务器)不受拒绝规则的豁免,并且无法阻止。
当多个设置源定义 deniedMcpServers 时,有效的拒绝名单是所有源的并集。 所有源阻止的服务器将被阻止。
每个条目都使用了 allowedMcpServers 中所述的相同 serverName、serverUrl 或 serverCommand 属性。
sandbox
对 Copilot CLI 强制执行最小本地沙盒限制。 托管沙盒设置设置的是限制,而不是默认值:
- 对于强制启用设置,受管控值为
true时会强制执行该设置。false或遗漏会使用户的配置保持不变。 - 对于功能项设置,受管理的值
false会禁用该功能项。true或遗漏会使用户的配置保持不变。 - 受管理的读/写和只读路径列表会限制用户配置的授权,而受管理的拒绝路径则会增加到用户配置的拒绝项中。
支持以下子属性:
enabled:true要求使用沙盒,并阻止用户将其禁用。allowBypass:false阻止模型请求单个命令在沙盒外部运行。addCurrentWorkingDirectory:false防止 Copilot CLI 自动将当前工作目录添加到沙盒的读/写路径。sandboxMcpServers:true要求由 Copilot CLI 启动的本地 MCP 服务器在沙盒中运行。 远程 MCP 服务器不会在本地沙盒中运行。sandboxLspServers:true要求由 Copilot CLI 启动的语言服务器在沙盒中运行。gitAuth:false防止 Copilot CLI 在沙盒中为经过身份验证的 Git HTTPS 操作注入 GitHub 令牌。ghAuth:false可防止 Copilot CLI 在沙盒中为 GitHub 注入 GitHub CLI 令牌。allowDevToolAccess:false防止自动访问开发工具配置、缓存、注册表和工具链。 这些位置中可能包含软件包注册表凭据或令牌。 禁用访问可能会导致程序包还原、需要身份验证的注册表操作或使用共享缓存的构建失败,除非你显式授予对所需路径的访问权限。userPolicy:配置文件系统、网络和 macOS 特定安全带限制的对象。 以下各节介绍了支持的属性。
sandbox.userPolicy.filesystem
为沙盒进程配置文件系统访问。 路径应为绝对路径。 托管授权列表与用户配置的列表按精确的路径字符串进行匹配,而不是按父路径或子路径的覆盖关系进行匹配。
readwritePaths:沙盒进程可以读取和写入的路径数组。 仅当用户配置的确切字符串也出现在指定此属性的每个托管源中时,用户配置的路径才可用。 空的托管数组会移除所有用户配置的读/写路径授权,但不会移除单独授予的访问权限,例如对临时目录或当前工作目录的访问权限。readonlyPaths:沙盒进程可以读取但不写入的路径数组。 仅当用户配置的确切字符串也出现在指定此属性的每个托管源中时,用户配置的路径才可用。 空的托管数组会移除所有用户配置的只读路径授权,但不会移除另行组装的访问权限。deniedPaths:沙盒进程无法访问的路径数组。 托管值会添加到用户现有的拒绝路径列表中,而不是替换它们。
sandbox.userPolicy.network
为沙盒进程配置网络访问。
allowOutbound:false阻止出站网络访问。allowLocalNetwork:false阻止访问本地网络。
网络行为因操作系统而异。 具体而言,代理不是完整的出口控制边界,因为某些应用程序可以忽略代理设置。
sandbox.userPolicy.seatbelt
配置 macOS 特有的 Seatbelt 选项。
keychainAccess:false阻止沙盒进程访问 macOS 密钥链。