Skip to main content

企业托管设置

了解客户端使用 Copilot 的企业托管设置架构。

使用此参考了解当前支持的密钥 managed-settings.json

有关部署方法和支持的客户端,请参阅 配置企业管理设置

优先规则

当存在多个设置源时,此列表中的前面设置优先于列表中的设置:

  1. 受 MDM 管理的设置
  2. 由服务器管理的设置
  3. 基于文件的配置
  4. 用户级设置

其中 Copilot 命令行界面(CLI), sandbox 键是这些优先规则的例外。 MDM 管理的、服务器管理的和基于文件的设置的托管沙盒限制相互结合,以及用户沙盒设置在最严格的方向。

支持的密钥

KeyPurposeCopilot 命令行界面(CLI)VS CodeGitHub Copilot 应用Copilot云代理JetBrains IDEs
permissions.disableBypassPermissionsMode禁用绕过或 YOLO 样式允许的所有行为
permissions.model将自动模型选择设置为新对话的默认值
enabledPlugins按密钥启用或禁用特定插件
extraKnownMarketplaces添加用户可以访问的插件市场
strictKnownMarketplaces仅允许从明确列出的应用市场安装插件
telemetry配置 OpenTelemetry 导出,将 Copilot 使用数据路由到你所选择的收集器
remoteControl根据所列出的组织的控制客户端的 SSO 授权状态,限制是否可以远程控制此设备上托管的会话。 不会影响用户远程控制在其他设备上托管的会话的能力
allowedMcpServers定义允许运行的 MCP 服务器的允许列表。 任何不匹配的服务器都将被阻止。 省略以允许所有服务器,但受任何拒绝规则的约束
deniedMcpServers定义无条件阻止的 MCP 服务器,即使它们也与条目匹配 allowedMcpServers
sandbox对命令执行、文件系统和网络访问、凭据以及本地 MCP 和 LSP 服务器强制实施最低本地沙盒限制

将不同的设置应用于企业团队

对于服务器管理的部署,企业可以根据其企业团队成员身份将不同的治理应用于用户组。 企业定义所有设置 - 团队成员身份仅确定哪些用户会收到一组给定的值。

若要使密钥符合特定于团队的值的条件,请使用语法将其标记为可managed-settings.json``{ "overridable": <VALUE> }重写。 可重写的密钥在设置时使用团队的值,或者在团队离开时回退到企业默认值。 语法适用于 <a0/> 键。 未标记为可重写的密钥仍然是团队无法修改的企业级决策。

enabledPluginsextraKnownMarketplaces 累加工作。 企业 managed-settings.json 设置基线,企业团队文件可以在其中添加更多插件和市场。 有关完整设置步骤,请参阅 配置企业管理设置

配置示例

以下示例在一个托管设置文件中显示这些密钥。

{
  "permissions": {
    "disableBypassPermissionsMode": "disable",
    "model": "auto"
  },
  "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;可选 refpath
  • "directory" — 需要 path

请参阅“关于企业管理的插件标准”。

strictKnownMarketplaces

将插件安装限制为仅可从企业明确指定的应用市场进行安装。 空数组表示完全锁定。 每个条目都是一个市场对象,其中包含一个 source 指示源类型的属性。 支持以下源类型:

  • "github" — 需要 repoOWNER/REPO 格式,可选 refpath
  • "git" — 需要 url;可选 refpath
  • "url" — 需要 url;可选 headers 对象
  • "npm" — 需要 package
  • "file" — 需要 path
  • "directory" — 需要 path
  • "hostPattern" — 需 hostPattern(匹配 marketplace 主机的正则表达式)
  • "pathPattern" — 要求 pathPattern(用于匹配市场路径的正则表达式)

权限

disableBypassPermissionsMode

阻止用户启用绕过模式(也称为“YOLO 模式”)。 绕过模式允许代理在不请求批准的情况下运行命令、访问文件和提取 URL。

当您将 disableBypassPermissionsMode 设置为 "disable" 时,用户无法启用绕过模式:

  • 在managed-settings.json中,允许所有权限(--yolo以及--allow-all单个--allow-all-tools``--allow-all-paths权限和--allow-all-urls选项)的所有命令行选项在启动时被禁止,并且无法授予提升的权限。 /yolo /allow-all还会阻止斜杠命令。
  • 在中 managed-settings.json,全局自动批准设置(chat.tools.global.autoApprove)已关闭,无法重新启用。
  • 在 Copilot 命令行界面(CLI) 的会话设置中,“工具权限”的“允许所有”设置被禁用。
  • 企业团队映射可以替代此密钥。 在语法 VS Code{ "overridable": "disable" } ,使用语法根据团队专门化密钥的配置。 然后,可以在团队设置文件中设置 "disableBypassPermissionsMode": "unmanaged" ,提供优先于 GitHub Copilot 应用 主题团队成员的特殊化。

模型

将自动模型选择设置为新对话的默认值。 请参阅“关于 Copilot自动模型选择”。

  • 如果设置为permissions.model``"auto",则新会话将使用自动模型,除非用户为每个会话指定不同的模型。
  • 企业团队映射可以替代此密钥。 在语法 managed-settings.json{ "overridable": "auto" } ,使用语法根据团队专门化密钥的配置。 然后,可以在团队设置文件中设置 "model": "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 标头)。

remoteControl

限制是否可以 Copilot 远程控制设备上托管的会话。 这不会影响用户远程控制在其他设备上托管的会话的能力。

  • mode:设置为 "disabled" 防止对设备上的会话进行远程控制, "requireSSO" 以便仅允许远程控制针对所列 githubDotComOrganizations组织的 SSO 授权的客户端,或 "enabled" 允许其不受限制。
  • githubDotComOrganizations:组织登录名数组。 当 mode"requireSSO" 时为必需项。

allowedMcpServers

定义允许运行的 MCP 服务器的允许列表。 设置后,仅允许匹配至少一个条目的服务器。 任何不匹配的服务器都将被阻止。

完全省略此密钥以允许所有服务器,但受任何 deniedMcpServers条目的约束。 将其设置为空数组,以阻止除内置默认服务器之外的所有服务器。

当多个设置源定义 allowedMcpServers时,有效允许列表是所有源的交集。 每个源必须允许服务器运行。

每个条目必须仅包含一个匹配程序属性。

财产匹配行为适用的服务器
serverName与用户分配的服务器标签完全匹配。 不支持通配符。 由于用户选择服务器名称,请使用 serverUrlserverCommand 需要强制实施服务器的标识。任何服务器。 内存中服务器只能使用 serverName
serverUrl匹配远程服务器 URL。 支持 * 子域或路径前缀的通配符,例如或 https://mcp.example.com/*``https://*.internal.example.com/*通过 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时,有效拒绝列表是所有源的联合。 所有源阻止的服务器将被阻止。

每个条目都使用相同的 serverName属性 serverUrlserverCommand 属性 allowedMcpServers

sandbox

对 .. 强制实施最低本地沙盒限制 Copilot 命令行界面(CLI)。 托管沙盒设置施加限制,而不是默认设置:

  • 对于强制设置,强制设置的 true 托管值将强制设置。 false 或遗漏会使用户的配置保持不变。
  • 对于功能设置,托管值 false 禁止该功能。 true 或遗漏会使用户的配置保持不变。
  • 托管读取/写入和只读路径列表限制用户配置的授予,而托管拒绝的路径会添加到用户配置的拒绝。

支持以下子属性:

  • enabledtrue 需要沙盒并阻止用户禁用它。
  • allowBypassfalse 阻止模型请求单个命令在沙盒外部运行。
  • addCurrentWorkingDirectoryfalse 防止 Copilot 命令行界面(CLI) 自动将当前工作目录添加到沙盒的读/写路径。
  • sandboxMcpServerstrue 要求本地 MCP 服务器在 Copilot 命令行界面(CLI) 沙盒中运行。 远程 MCP 服务器不会在本地沙盒中运行。
  • sandboxLspServerstrue 要求语言服务器在 Copilot 命令行界面(CLI) 沙盒中运行。
  • gitAuthfalse 防止 Copilot 命令行界面(CLI) 在沙盒中为经过身份验证的 Git HTTPS 操作注入 GitHub 令牌。
  • ghAuthfalse 防止 Copilot 命令行界面(CLI) 在沙盒中注入 GitHub 令牌 GitHub CLI 。
  • allowDevToolAccessfalse 防止自动访问开发工具配置、缓存、注册表和工具链。 这些位置可以包含包注册表凭据或令牌。 禁用访问权限可能会导致包还原、经过身份验证的注册表操作或使用共享缓存的生成失败,除非显式授予所需的路径。
  • userPolicy:配置文件系统、网络和 macOS 特定安全带限制的对象。 以下各节介绍了支持的属性。

sandbox.userPolicy.filesystem

为沙盒进程配置文件系统访问。 路径应为绝对路径。 托管授权列表通过确切的路径字符串而不是父路径或子路径覆盖率与用户配置的列表匹配。

  • readwritePaths:沙盒进程可以读取和写入的路径数组。 仅当用户配置的确切字符串也出现在指定此属性的每个托管源中时,用户配置的路径才可用。 空托管数组将删除所有用户配置的读/写路径授予,但不会删除单独组装的访问,例如临时目录或当前工作目录。
  • readonlyPaths:沙盒进程可以读取但不写入的路径数组。 仅当用户配置的确切字符串也出现在指定此属性的每个托管源中时,用户配置的路径才可用。 空托管数组删除所有用户配置的只读路径授予,但不删除单独组合的访问。
  • deniedPaths:沙盒进程无法访问的路径数组。 托管值将添加到用户被拒绝的路径而不是替换。

sandbox.userPolicy.network

为沙盒进程配置网络访问。

  • allowOutboundfalse 阻止出站网络访问。
  • allowLocalNetworkfalse 阻止访问本地网络。

网络行为因操作系统而异。 具体而言,代理不是完整的出口控制边界,因为某些应用程序可以忽略代理设置。

sandbox.userPolicy.seatbelt

配置特定于 macOS 的 Seatbelt 选项。

  • keychainAccessfalse 阻止沙盒进程访问 macOS 密钥链。