Skip to main content
Skip to content

企业管理设置

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

使用此参考资料来了解 Copilot 的企业管理设置。 大多数设置都可以在managed-settings.json中配置。 下面列出了需要设备管理的设置。

有关创建文件的说明,请参阅 企业管理设置入门。

支持的密钥

KeyPurpose
permissions.disableBypassPermissionsMode禁用绕过或 YOLO 样式允许的所有行为
permissions.deny阻止特定操作
permissions.ask需要新的人工批准,然后才能执行特定操作
permissions.allow允许在不出现提示的情况下执行特定操作
permissions.disableAssistedPermissionsMode防止用户启用 assisted permissions
permissions.defaultMode控制新会话的默认权限模式
features.computerUse控制用户是否可以启用计算机使用功能
model将首选模型设置为新对话的默认值
fusionTier当所选模型为 fusion 时,设置新对话的默认工作量级别
autoTier设置新对话的默认自动路由层
enabledPlugins按密钥启用或禁用特定插件
extraKnownMarketplaces添加用户可以访问的插件市场
strictKnownMarketplaces仅允许从明确列出的应用市场安装插件
telemetry配置 OpenTelemetry 导出,将 Copilot 使用数据路由到你所选择的收集器
remoteControl根据所列出的组织的控制客户端的 SSO 授权状态,限制是否可以远程控制此设备上托管的会话。 不会影响用户远程控制在其他设备上托管的会话的能力
forceRemoteSettingsRefresh需要在客户端启动时获取新的服务器托管设置
allowedMcpServers定义允许运行的 MCP 服务器的允许列表。 任何不匹配的服务器都将被阻止。 省略以允许所有服务器,但受任何拒绝规则的约束
deniedMcpServers定义了被无条件阻止的 MCP 服务器,即使它们也与 allowedMcpServers 中的某个条目匹配
sandbox对命令执行、文件系统和网络访问、凭据以及本地 MCP 和 LSP 服务器强制实施最低本地沙盒限制。 受最低客户端版本要求的约束。

按键的客户端支持

| Key | Copilot CLI | VS Code | GitHub Copilot app | Copilot in the cloud (沙盒) | Copilot in the cloud(GitHub Actions) | JetBrains IDEs | | --- | --- | --- | --- | --- | --- | --- | | permissions.disableBypassPermissionsMode | | | | | | | | permissions.deny | | | | | | | | permissions.ask | | | | | | | | permissions.allow | | | | | | | | permissions.disableAssistedPermissionsMode | | | | | | | | permissions.defaultMode | | | | | | | | features.computerUse | | | | | | | | model | | | | | | | | fusionTier | | | | | | | | autoTier | | | | | | | | enabledPlugins | | | | | | | | extraKnownMarketplaces | | | | | | | | strictKnownMarketplaces | | | | | | | | telemetry | | | | | | | | remoteControl | | | | | | | | forceRemoteSettingsRefresh | | | | | | | | allowedMcpServers | | | | | | | | deniedMcpServers | | | | | | | | sandbox | | | | | | |

对 telemetry 子属性和测试框架的支持各不相同。 请参阅支持精细捕获的客户端的 捕获控件 。

关于 Copilot in the cloud 的详细信息

云会话可以在沙盒中或在GitHub Actions上运行。 目前,策略和企业托管设置的覆盖范围因环境而异。 在用户可以在这些环境之间进行选择的情况下,云沙盒是默认设置。 但是,目前某些界面只能在 GitHub Actions 上使用(例如将议题分配给 Copilot 或在拉取请求中提及 @Copilot)。

表中为 Copilot in the cloud(沙盒) 定义的密钥在所有支持在云沙盒中启动会话的界面中均受支持。 例外情况是,model 键仅在从 GitHub 网站、Copilot CLI 和 VS Code 启动的云会话中受支持。

allowedMcpServers 并 deniedMcpServers 应用于在用户设置和存储库设置中定义的 MCP 服务器,但 不适用于 存储库自定义代理配置文件中定义的 MCP 服务器。 但是,你可以通过确保组织或存储库级自定义防火墙不允许启动这些服务器所需的任何域名,来防止使用在自定义代理配置档案中配置的 MCP 服务器。 请参阅“自定义或禁用GitHub Copilot的防火墙”。

配置示例

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

{
  "features": {
    "computerUse": false
  },
  "model": "auto",
  "autoTier": "intelligence",
  "permissions": {
    "disableBypassPermissionsMode": "disable",
    "deny": [
      "Shell(rm -rf *)",
      "Read(~/.ssh/**)",
      "Edit(//etc/**)",
      "Domain(*.unapproved.example)"
    ],
    "ask": [
      "Shell(git push *)",
      "Edit(/src/**)",
      "Domain(api.github.com)"
    ],
    "allow": [
      "Shell(npm test *)",
      "Read(/src/**)",
      "Domain(registry.npmjs.org)"
    ]
  },
  "enabledPlugins": {
    "my-plugin@agent-skills": true
  },
  "extraKnownMarketplaces": {
    "agent-skills": {
      "source": {
        "source": "github",
        "repo": "OWNER/REPO"
      },
      "autoUpdate": true
    }
  },
  "strictKnownMarketplaces": [
    {
      "source": "github",
      "repo": "OWNER/REPO"
    }
  ],
  "telemetry": {
    "enabled": true,
    "endpoint": "https://otel-collector.example.com",
    "protocol": "http/protobuf",
    "capture": {
      "identity": true,
      "prompts": false,
      "responses": false,
      "toolArguments": false,
      "toolOutput": false,
      "policyDetail": false
    },
    "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,
    "failIfUnavailable": true,
    "allowBypass": false,
    "sandboxMcpServers": true,
    "sandboxLspServers": true
  }
}

features.computerUse

控制用户是否可以在 GitHub Copilot CLI 和 GitHub Copilot app 中启用计算机使用。 false设置为features.computerUse阻止用户启用计算机使用。 本地设置不能替代此限制。 将该值设置为 true,或省略该键,以允许用户通过其本地设置控制计算机的使用。

enabledPlugins

定义为所有企业用户自动安装或禁止的插件。 每个条目使用格式 PLUGIN-NAME@MARKETPLACE-NAME 作为键,并带有布尔值: true 要求启用插件或 false 要求禁用插件。 请参阅“关于企业管理的插件标准”。

托管值始终优先于存储库默认值和成员首选项。 存储库默认值无法启用受托管策略阻止的插件或使用策略禁止的市场。

extraKnownMarketplaces

定义可供用户使用的其他插件市场。 每个条目都是一个命名的市场对象,其中包含一个 source 属性和一个可选的 autoUpdate 布尔值。

将 autoUpdate 设置为 true,以要求客户端定期刷新该市场并更新从该市场安装的插件。 将其设置为false,以要求该市场继续禁用自动更新。 如果省略 autoUpdate,客户端将使用其现有的默认或用户配置行为。

由于托管设置优先,用户无法替代定义的 autoUpdate 值。 该设置仅适用于该市场,并且在刷新和更新操作之前,strictKnownMarketplaces 中的任何限制仍然适用。

支持以下源类型:

  • "github" - 需要 repo 格式的 OWNER/REPO;可选的 ref(分支、标记或 SHA)和 path(子目录)
  • "git" — 需要 url;可选 ref 和 path
  • "directory" — 需要 path

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

对于由服务器管理的企业团队覆盖设置,请用 overridable 包裹完整的 marketplace 映射:

{
  "extraKnownMarketplaces": {
    "overridable": {
      "enterprise-plugins": {
        "source": {
          "source": "github",
          "repo": "OWNER/REPO"
        }
      }
    }
  }
}

然后,企业团队文件可以提供常规市场映射文件来替换此默认值。 包括企业团队应保留的任何默认应用市场。 如果企业团队省略密钥,则企业默认值将保持不变。

strictKnownMarketplaces

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

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

对于企业团队,此键是可替代的。 在企业级用 overridable 包裹完整的允许列表:

{
  "strictKnownMarketplaces": {
    "overridable": [
      { "source": "github", "repo": "OWNER/REPO" }
    ]
  }
}

使用企业团队文件中的常规数组替换默认允许列表。 省略密钥会保留企业默认值。 显式空数组 [],表示完全锁定,而不是非托管策略。

模型

将首选模型设置为新对话的默认模型。 这允许你选择最适合企业工作流的默认模型。 用户仍然可以按对话选择不同的模型。

  • "fusion"设置为model用作Copilot Fusion默认值,因此新会话会自动选择模型或执行模式,除非用户按会话指定不同的模型。 请参阅“关于 GitHub Copilot Fusion”。
  • 将 "auto" 设置为 model 以将 auto model selection 设为默认值,这样新会话就会自动选择模型,除非用户针对单个对话指定了其他模型。 请参阅“关于 GitHub Copilotauto model selection”。
  • 将 model 设置为特定的模型和版本,使该模型成为新对话的默认模型,例如 "kimi-k3"。

企业团队映射可以替代此键。 在你的 managed-settings.json 中,使用 { "overridable": "auto" } 语法针对企业团队自定义该密钥的配置。 然后,可以在企业团队设置文件中设置 "model": "unmanaged",为该企业团队成员提供优先于 managed-settings.json 的特化设置。

注意

model 最初记录为 permissions.model. 客户端在缺少顶级model密钥时仍会读取嵌套permissions.model值,但应在新配置中使用顶级model密钥。

fusionTier

设置所选模型 "fusion"时新对话的默认工作量级别。 接受的值,从最严格到最不严格的值,是"standard","max"``"high"和"unmanaged"。 此设置不选择模型本身。

此设置项需要以下版本:

  • 在 Copilot CLI 中,它需要版本 1.0.104-3 或更高版本。
  • 在 VS Code 中,它需要版本 1.144.0 或更高版本。
  • 在 GitHub Copilot app 中,它需要 1.1.33-4 或更高版本。

将 fusionTier 设置为不同于 "unmanaged" 的字符串,以锁定工作级别,防止用户和存储库覆盖。 若要提供企业团队可以覆盖的默认值,请使用 overridable:

{
  "model": "fusion",
  "fusionTier": { "overridable": "standard" }
}

例如,团队设置文件可以设置 "fusionTier": "high"。 如果未设置 fusionTier团队,则应用企业默认值。

autoTier

当所选模型为 "auto" 时,设置新对话的默认路由层级。 接受的值,从最严格到最不严格的值,是"efficiency","intelligence"``"balance"和"unmanaged"。 此设置不选择模型本身。

在 Copilot CLI此设置中,需要版本 1.0.87-0 或更高版本。 在 VS Code 中,需要 1.140.0 或更高版本。

设置为 autoTier 字符串,而不是 "unmanaged" 针对用户和存储库替代锁定层。 若要提供企业团队可覆盖的默认值,请使用 overridable:

{
  "model": "auto",
  "autoTier": { "overridable": "balance" }
}

例如,企业团队设置文件可以设置为 "autoTier": "intelligence"。 如果企业团队未设置 autoTier,则应用企业默认值。

forceRemoteSettingsRefresh

在 、 和 中,启动时需要重新下载由服务器管理的设置。 将true设置为forceRemoteSettingsRefresh,以启用此要求。

在 GitHub Copilot app 和 Copilot CLI 中,这会跳过正常的一小时缓存,并在下载失败时阻止回退到较旧的缓存策略。 不成功的刷新使策略未确认,因此受影响的操作受到限制。 在 VS Code 中,在所需的刷新成功之前,Copilot 功能将被阻止。 因此,在启动客户端时,用户需要网络连接。

若要使该要求从设备首次启动时起生效,请通过 MDM 管理的或基于文件的设置传递它。 在客户端收到后,服务器托管的值可能需要在后续启动时进行刷新。 策略帮助程序脚本无法设置此键。

在 managed-settings.json 中,使用 JSON 布尔值,例如 "forceRemoteSettingsRefresh": true。 通过Windows注册表或 macOS 托管首选项进行配置Copilot CLI时,请将此值存储为包含true或false的字符串。 请勿使用 DWORD 或本机布尔值。

权限

拒绝、询问、允许

在 VS Code 中,这些细粒度权限规则适用于使用代理主机的 Copilot 会话。 permissions.disableBypassPermissionsMode 设置对 VS Code 的支持范围更广,并且不限于 Agent Host。

permissions.deny、permissions.ask 和 permissions.allow 键采用 拒绝 > 询问 > 允许 的优先级顺序。 如果 MDM 托管的、服务器托管的或基于文件的源定义了任何权限规则,或者任何适用的源声明了 allow 列表,则任何未匹配的受支持操作默认需要获得批准。 否则,它遵循普通的权限流。

  • deny阻止特定操作,无论它们是否也与规则ask``allow匹配。 任何托管设置源设置的拒绝规则都会阻止所有用户的操作,而不考虑其他源中的规则。
  • ask 需要重新获得一次性批准后,特定操作才能继续进行,即使该操作在其他情况下原本会被允许。 托管ask规则无法通过绕过模式(也称为全部允许模式或 YOLO 模式)、自动审批设置、挂钩或其他审批快捷方式,或者先前审批中持久保存的授权来满足。 下次请求时,同一操作会再次提示。
  • allow 允许特定操作在没有提示的情况下继续。 有效允许列表是声明了允许列表的所有源的交集,而不是并集。 不声明 allow 列表的源对此密钥没有限制。

规则使用以下选择器:

SelectorMatches
Shell(...)Shell 命令。 使用 <command> *(例如 git push *)来匹配命令前缀;否则,该规则匹配精确文本。
Bash(...) 是 Shell(...) 的兼容别名。
PowerShell(...) 使用同一选择器系列,并采用命令不区分大小写的匹配方式。
Read(...)文件读取和查看路径。 支持 glob 模式和以下根路径:// 表示文件系统根目录,/ 表示工作区根目录,~/ 表示主目录,./ 表示当前工作目录。
Edit(...)文件写入和编辑路径,其匹配方式与 Read(...) 相同。
Write(...) 是 Edit(...) 的别名。
Domain(...)网络源。 未指定协议的主机默认使用 HTTPS,并且主机匹配不区分大小写。 使用 *. 以包含子域;例如,*.example.com 同时匹配 example.com 及其子域。

企业团队可以覆盖每个子键。 将企业值设置为 { "overridable": <VALUE> },并用规则数组替换 <VALUE>。 然后使用常规语法在每个企业团队的文件中定义替换规则。

禁用绕过权限模式

使用此选项可阻止用户启用绕过模式。 绕过模式允许代理在不请求批准的情况下运行命令、访问文件和提取 URL。

将此键设置为 "disable" 以关闭旁路模式。

此设置不会阻止 assisted permissions。 适用权限规则允许的只读操作和请求仍可在没有提示的情况下继续。 托管 deny 规则和 ask 规则继续适用。 有关 assisted permissions 的详细信息,请参阅 允许安全命令在未经手动批准的情况下运行。

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

  • 在 Copilot CLI 中,允许所有权限(--yolo、--allow-all 以及单独的 --allow-all-tools、--allow-all-paths 和 --allow-all-urls 选项)的所有命令行选项在启动时都不起作用,并且无法授予提升的权限。 /permissions allow-all 斜杠命令及其别名 /allow-all 和 /yolo 也将被阻止。 此设置不阻止 /permissions assisted 或 /allow-all auto。 该 permissions.disableAssistedPermissionsMode 设置控制用户是否可以启用 assisted permissions。
  • 在中 VS Code,全局自动批准设置(chat.tools.global.autoApprove)已关闭,无法重新启用。
  • 在GitHub Copilot app会话中,即使用户在 “设置”“会话” 中将其选为默认设置,会话也无法对 > 使用 “全部批准”。

对于此密钥,所有策略层中限制性最高的值都会获胜。 由任何层设置的 "disable" 都会生效,且不能放宽。 当任何层禁用绕过模式后,较低权限层级或按团队覆盖设置都无法将此键重新设为非托管。

注意

如果 disableBypassPermissionsMode 被设置为 Copilot CLI 无法识别的值,CLI 会记录该问题,并强制将 "disable" 作为故障关闭的默认值。

disableAssistedPermissionsMode

将true设置为permissions.disableAssistedPermissionsMode,以阻止用户启用assisted permissions。 此设置不会禁用绕过模式。

defaultMode

将 permissions.defaultMode 设置为 "manual"、"assisted" 或 "allow-all",以选择新会话的默认权限模式。 如果所选模式不可用或被策略阻止,会话将从手动批准开始。

此设置选择默认值,而不是锁定模式。 会话的显式允许选择优先于托管默认值。 恢复的会话保留其保存模式,并受当前策略限制。

在 Copilot CLI 中,此托管默认值优先于用户的 defaultPermissionMode 设置。

遥测

配置 OpenTelemetry 导出,将使用情况数据路由 Copilot 到所选收集器。

有关客户端支持,请参阅支持的按键表。

设置 telemetry 属性时, Copilot 遥测数据将发送到指定的终结点。 支持以下子属性:

  • enabled:设置为 true 打开遥测导出,或 false 将其关闭。
  • endpoint:OTLP 收集器的 URL(例如 https://otel-collector.example.com)。
  • protocol:用于遥测导出的传输协议。 接受的值是 "http/json" 和 "http/protobuf"。
  • capture:具有独立、细粒度控件的对象,用于身份信息和敏感内容。 每个子属性默认为 false. 详情请参阅 捕获控制。
  • captureContent:用于同时启用或禁用 toolOutput、policyDetail、prompts、toolArguments 和 responses 捕获类的旧式速记。 它不会影响 identity。 显式配置的 capture 子属性优先于该类的 captureContent。
  • lockCaptureContent:设置为 true 以防止本地设置启用旧版内容类,除非在受管理的 telemetry 对象中显式配置该类或 captureContent。 此属性不管理身份标识。
  • serviceName:遥测服务名称的标签(例如 "copilot")。
  • resourceAttributes:一个包含 OpenTelemetry 资源属性的对象,用于附加到所有导出的遥测数据(例如 {"deployment.environment": "production"})。
  • headers:要与每个遥测请求一起包含的 HTTP 标头字面量对象(例如,用于收集器的 Authorization 标头)。 必须在同一endpoint对象中配置telemetry。 标头值不包括在日志或状态输出中。 当标头包含凭据时使用 HTTPS,因为 HTTP 以纯文本形式发送值。
  • headersProvider:运行命令来提供新的 OTLP 标头的对象,或用于禁用动态标头的 false。 托管帮助程序替代用户帮助程序,托管静态 headers 内容优先于用户帮助程序输出。 此属性适用于 Copilot CLI. 有关字段和行为,请参阅 GitHub Copilot CLI 命令参考。

托管 telemetry 值优先于本地设置、SDK 配置和环境变量。 如果多个托管源定义 telemetry,则优先级最高的源提供完整的托管 telemetry 对象。 优先级较低的托管源中的对象不会合并到其中。

拍摄控件

当需要将代理活动归因于某对象而不收集提示、响应或工具内容时,使用 capture.identity。 使用其他捕获类仅收集用于您的审核或调查所需的其他内容。

使用 Agent Host 时,Copilot CLI、GitHub Copilot app 和 VS Code 会话支持精细捕获控件。 VS Code的本地代理框架支持capture.identity和旧版captureContent设置,但不会独立应用prompts、responses、toolArguments、toolOutput或policyDetail。

Key捕获的数据
identity经身份验证的Copilot帐户名称为user.name,本地操作系统帐户为process.user.name,以及本地计算机名称为host.name。 帐户名当前为 GitHub 登录名。 此设置不会影响化名 enduser.pseudo.id 属性。
prompts用户、系统和开发人员提示文本和相关模型输入,包括支持的附件、压缩摘要、技能内容和工作区上下文。
responses来自顶层代理和子代理的助理响应文本和支持的推理内容。
toolArguments原始工具参数、命令、被拒绝的资源、进程名称、工具说明和模式,以及 MCP 服务器、插件、钩子、服务器和工具的原始标识符。
toolOutput工具结果内容和执行错误详细信息来自工具、挂钩、MCP 服务器和子代理。
policyDetail无界的策略详细信息,例如原始沙盒文件系统路径数组。 当此设置为 false 时,受限策略态势、计数、结果和分类仍然可用。

例如,以下配置将追踪数据归因于用户和机器,而无需捕获提示、响应、工具内容或原始策略详细信息:

{
  "telemetry": {
    "capture": {
      "identity": true
    }
  }
}

警告

捕获的内容可以包括源代码、文件内容、提示、命令、工具结果、MCP 标识符,以及指向工作区、用户个人资料或可能包含机密的文件的路径。 仅启用用例所需的捕获类,并将数据发送到已批准的收集器。

远程控制

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

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

允许的MCP服务器

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

完全省略此键即可允许所有服务器,但仍受 deniedMcpServers 中任何条目的限制。 将其设置为空数组,以阻止除内置默认服务器之外的所有服务器。

当多个设置来源定义了 allowedMcpServers 时,生效的允许列表是所有来源的交集。 服务器必须获得每个源的许可才能运行。

每个条目必须恰好包含一个匹配器属性。

财产匹配行为适用的服务器
serverName与用户分配的服务器标签完全匹配。 不支持通配符。 允许列表条目区分大小写,并且仅限使用字母、数字以及字符 _、.、/ 和 -,因此像 microsoft/playwright-mcp 这样的注册表名称是可接受的。 由于服务器名称由用户自行选择,因此当您需要强制验证服务器身份时,请使用 serverUrl 或 serverCommand。任意服务器。 内存中服务器只能使用 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 时,有效的拒绝名单是所有源的并集。 被任何源阻止的服务器也会被所有源阻止。

每个条目都使用了 allowedMcpServers 中所述的相同 serverName、serverUrl 或 serverCommand 属性。

sandbox

对 Copilot CLI、Copilot Agent Host 会话在 VS Code 和 GitHub Copilot app 中强制实施最低本地沙盒限制。 托管沙盒设置设置的是限制,而不是默认值:

  • 对于强制启用设置,受管控值为 true 时会强制执行该设置。 false 或遗漏会使用户的配置保持不变。
  • 对于功能项设置,受管理的值 false 会禁用该功能项。 true 或遗漏会使用户的配置保持不变。
  • 受管理的读/写和只读路径列表会限制用户配置的授权,而受管理的拒绝路径则会增加到用户配置的拒绝项中。

在 VS Code 1.138.0 及更高版本中,这些设置适用于使用 Agent Host 内置沙盒的 Copilot 会话。 此支持不适用于VS Code中的每种类型的聊天会话或终端。 在 VS Code 1.140.0 及更高版本中,将 sandbox.enabled 设置为 true 可防止用户通过会话的沙盒切换将沙盒关闭。 如果策略允许绕过,用户仍可以在响应沙盒旁路权限提示时对当前会话关闭绕过。 这不会更改组织的政策。

对于其中的 Copilot app会话,嵌入式运行时将分析、合并并强制执行完整的托管 sandbox 对象,包括应用存储库设置中不可用的属性。 该应用显示用户的存储库设置,而不是完整的有效托管策略,并且不显示按设置的托管锁。

支持以下子属性:

  • enabled:true 默认要求启用沙盒。 用户无法通过配置或 CLI --no-sandbox 选项禁用它。 在 GitHub Copilot app 中,存储库设置和 /sandbox off 命令都不能覆盖它。 如果有效策略允许绕过,用户仍然可以从活动沙盒旁路权限提示中为当前会话的其余部分禁用沙盒。 在 Copilot CLI 中,他们还可以使用 /sandbox disable 进行此仅限本次会话的退出选择。两者都不会更改保存的策略。
  • failIfUnavailable:true与enabled: true结合使用时,必须使用托管沙盒。 如果 Copilot 无法利用可用的沙盒后端来验证、编译或执行沙盒策略,它会阻止模型和工具的执行,而不是允许命令失败或在未启用沙盒的情况下运行。 此属性本身并不会启用沙盒机制。
  • allowBypass:false 防止单个命令在沙盒外运行,并防止用户从活动的沙盒绕过权限提示中为当前会话的其余部分禁用沙盒。 在 Copilot CLI 中,它还会阻止用户使用 /sandbox disable 禁用沙盒。
  • addCurrentWorkingDirectory: false 防止运行时自动将当前工作目录添加到沙盒的读/写路径。
  • sandboxMcpServers: true 要求在会话中启动本地 MCP 服务器才能在沙盒中运行。 远程 MCP 服务器不会在本地沙盒中运行。
  • sandboxLspServers: true 要求在会话中启动的语言服务器才能在沙盒中运行。
  • auth.git: false 防止运行时在沙盒中为经过身份验证的 Git HTTPS 操作注入 GitHub 令牌。
  • auth.gh:false 可防止运行时在沙盒中为 GitHub CLI 注入 GitHub 令牌。
  • allowDevToolAccess: false 防止自动访问开发工具配置、缓存、注册表和工具链。 这些位置中可能包含软件包注册表凭据或令牌。 禁用访问可能会导致程序包还原、需要身份验证的注册表操作或使用共享缓存的构建失败,除非你显式授予对所需路径的访问权限。
  • learningMode:控制受支持的 Windows 主机上的沙盒命令是记录被阻止的访问,还是记录并允许访问。 请参阅 sandbox.learningMode。
  • userPolicy:配置文件系统、网络和 macOS 特定安全带限制的对象。 以下各节介绍了支持的属性。

在不受支持的 CLI 主机上,服务器托管的 failIfUnavailable: true 可能会被拒绝,除非 enabled: true 也需要强制执行。 本机 MDM、基于文件的托管设置和策略帮助程序设置仍然强制实施 enabled: true,因此在沙盒中运行的命令会失败,而不是在没有沙盒的情况下运行。 当同时需要 enabled 和 failIfUnavailable 时,如果 CLI 无法实施强制措施,则会阻止模型和工具执行。 解决已报告的主机或策略问题,然后启动新会话。

对于由服务器管理的企业团队覆盖配置,请将整个 sandbox 对象包装在 overridable 中:

{
  "sandbox": {
    "overridable": {
      "enabled": true,
      "allowBypass": false
    }
  }
}

包装器必须是直接位于 sandbox 内部的唯一属性。 单个子属性(例如 sandbox.enabled)不能使用自己的 overridable 包装器。 企业团队文件的常规沙盒对象取代了整个封装的默认配置,因此请包含应保留的每个限制。 省略 sandbox 保留企业默认值。

sandbox.learningMode

控制 Windows 上沙盒命令的访问记录功能。 当沙盒关闭或Windows主机不支持访问录制时,此设置不起作用。

  • "deny" (默认值):强制实施文件系统和进程限制,并记录被阻止的访问。
  • "allow":记录并允许文件系统和进程访问,否则将被阻止。 网络限制仍然存在。 此模式不提供正常的文件系统和进程保护。

该值仅可通过本机 Windows 设备管理(例如 Intune 或 Windows 注册表)接受。 在managed-settings.json中会忽略它。 "deny"来自任何托管源的值优先。

sandbox.userPolicy.filesystem

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

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

sandbox.userPolicy.network

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

  • allowOutbound: false 阻止出站网络访问。
  • allowLocalNetwork: false 限制本地网络访问。 它对沙盒命令的影响因操作系统而异。 Windows 代理和主机规则需要本地网络访问,因此,将它们与false结合的策略会阻止这些命令启动。
  • allowedHosts:允许沙盒进程访问的主机名或 IP 地址数组。 非空列表会阻止不匹配的主机。 条目可以是确切的主机名、确切的 IP 地址、用于子域名但不包括根域的 *.example.com,或用于所有主机的 *。 请勿包括 URL 或端口。 用户允许列表和托管允许列表以限制性方式合并。 如果它们没有重叠的主机,则所有主机均被拒绝。
  • blockedHosts:沙盒进程无法访问的主机名或 IP 地址数组。 被阻止的主机优先级高于允许的主机,阻止某个域名也会阻止其子域名。
  • proxy:通过上游 HTTP 代理路由沙盒网络流量的对象。 将 proxy.url 设置为代理 URL。 平台支持和强制执行各不相同。

Copilot CLI主机规则和上游代理使用内置的本地代理。 在 macOS 和 Linux 上,沙盒阻止程序通过直接连接绕过它。 在Windows,沙盒依赖于遵循代理设置的程序。 因此,在Windows上,这些控件不会针对直接连接提供相同的保护。 有关平台要求和限制,请参阅 配置网络设置。

sandbox.userPolicy.seatbelt

配置 macOS 特有的 Seatbelt 选项。

  • keychainAccess: false 阻止沙盒进程访问 macOS 密钥链。

最低客户端版本强制实施

将 sandbox 键添加到托管设置时,Copilot 为范围内的所有用户强制实施本地沙盒。 这些用户必须使用支持本地沙盒的 Copilot 客户端版本。 在用户将客户端更新到至少最低支持版本之前,其与 Copilot 的连接将被阻止。

支持的客户端最低版本
VS Code
1.141.0
Copilot 命令行界面(CLI)
1.0.93
GitHub Copilot 应用
1.1.26