使用策略集中管理 VS Code 设置
Visual Studio Code 中的企业策略使组织能够为其开发团队集中管理 VS Code 设置,以确保整个组织内的一致性和兼容性。设置策略值后,该值将覆盖在任何级别(默认、用户和工作区)配置的 VS Code 设置值。
IT 管理员可以通过不同的设备管理解决方案在用户的设备上部署和强制执行特定的 VS Code 配置。VS Code 支持在 Windows、macOS 和 Linux 上应用策略。

在本文中,您将了解 VS Code 中可用的企业策略,以及如何在不同的操作系统上配置它们。
Windows 组策略
VS Code 支持 基于 Windows 注册表的组策略。
这些配置文件可以使用移动设备管理 (MDM) 解决方案部署,也可以在个人设备上手动安装。
第 1 步:获取示例 ADMX 和 ADML 文件
从 VS Code 1.69 版本开始,每个发行版都附带一个 policies 目录,其中包含定义可用策略的 ADMX 模板文件。
您可以从现有安装中获取 ADMX 和 ADML 文件,也可以通过下载并解压 VS Code zip 压缩包来获取。请按照以下步骤获取这些文件:
- 下载适用于您所用 VS Code 版本的 VS Code zip 压缩包。
- 将 zip 文件解压到临时位置。
- 导航到解压文件中的
policies文件夹。该文件夹包含 ADMX 模板文件(例如vscode.admx)以及一个包含不同语言 ADML 文件的locales子文件夹。
第 2 步:配置策略值
根据您的要求编辑策略值
字符串策略 - 接受文本值或 JSON 字符串的策略
<!-- Example: Allow extensions from specific publishers -->
<key>AllowedExtensions</key>
<string>{"microsoft": true, "github": true}</string>
<!-- Example: Set update mode to a specific value -->
<key>UpdateMode</key>
<string>start</string>
如果策略值存在语法错误,则该设置将不会应用。您可以在 VS Code 的窗口日志中检查错误(按 ⇧⌘P(Windows、Linux 为 Ctrl+Shift+P),然后输入 Show Window Log)。
布尔策略 - 接受 true/false 值的策略
<!-- Example: Enable user feedback -->
<key>EnableFeedback</key>
<true/>
<!-- Example: Disable telemetry -->
<key>EnableTelemetry</key>
<false/>
移除不需要的策略 - 删除您不想强制执行的任何策略的键和值
<!-- To not enforce an update mode policy, remove these lines: -->
<key>UpdateMode</key>
<string>start</string>
有关每个策略接受的值和行为的详细信息,请参阅下方的 策略参考。
第 3 步:部署策略
现在,您可以使用设备管理解决方案将配置好的策略大规模部署到组织内的所有相关设备。在大规模部署之前,您可以使用本地组策略编辑器在 Windows 本地机器上手动测试这些策略。
大规模部署策略
诸如 Microsoft Intune 或 Active Directory 组策略等产品可用于在整个组织内大规模集中管理设备策略。这些解决方案允许管理员从中央位置将 ADMX/ADML 文件和策略配置部署到多台设备。
对于 Active Directory 环境,请将 ADMX 和 ADML 文件复制到 中央存储 (Central Store),以使策略在整个域中可用。
在本地机器上手动测试策略
如果您想在大规模部署之前在 Windows 本地机器上测试策略,可以手动安装 ADMX/ADML 文件,并使用本地组策略编辑器配置策略。
请按照以下步骤在 Windows 本地机器上配置 VS Code 策略
第 1 步:安装策略定义文件
- 将
vscode.admx文件复制到C:\Windows\PolicyDefinitions。 - 将
locales子文件夹中对应的 ADML 文件(例如en-US\vscode.adml)复制到C:\Windows\PolicyDefinitions\<您的区域设置>(例如C:\Windows\PolicyDefinitions\en-US)。
您需要管理员权限才能将文件复制到 PolicyDefinitions 目录。
第 2 步:打开本地组策略编辑器
- 按
Windows+R打开“运行”对话框。 - 输入
gpedit.msc并按 Enter 打开本地组策略编辑器。 - 如果收到用户帐户控制提示,请选择 是 (Yes) 以允许该应用进行更改。
第 3 步:导航到 VS Code 策略
VS Code 策略位于“计算机配置”和“用户配置”下
- 计算机配置 > 管理模板 > Microsoft VS Code
- 用户配置 > 管理模板 > Microsoft VS Code
当同时配置了计算机级策略和用户级策略时,计算机级策略优先。
第 4 步:配置策略
- 选择策略类别(计算机配置或用户配置)。
- 导航到 管理模板 > Microsoft VS Code。
- 双击您要配置的策略(例如 Update Mode)。
- 在策略设置对话框中,选择 已启用 (Enabled) 以强制执行该策略。
- 使用可用选项或文本字段配置策略值。
- 选择 确定 (OK) 以保存更改。
- 关闭本地组策略编辑器。
策略将在下次启动 VS Code 时生效。某些策略可能需要重启 Windows 才能生效。
macOS 配置文件
配置文件用于管理 macOS 设备上的设置。配置文件是一个 XML 文件 (.mobileconfig),其中包含对应于可用策略的键值对。
这些配置文件可以使用移动设备管理 (MDM) 解决方案部署,也可以在个人设备上手动安装。
第 1 步:获取示例配置文件
从 VS Code 1.99 版本开始,每个发行版都附带一个示例 .mobileconfig 文件。请按照以下步骤在安装了 VS Code 的 macOS 设备上找到该示例文件:
- 打开 Finder 并导航到
/Applications。 - 右键单击 Visual Studio Code.app(或您的 VS Code 变体),然后选择 显示包内容 (Show Package Contents)。
- 导航到
Contents/Resources/app/policies。 - 找到示例
.mobileconfig文件(例如vscode-sample.mobileconfig)。
第 2 步:配置策略值
-
将示例
.mobileconfig文件复制到工作目录(例如桌面或文档文件夹)。 -
在文本编辑器(例如 TextEdit、VS Code 或任何 XML 编辑器)中打开复制的文件。
-
根据您的要求编辑策略值
字符串策略 - 接受文本值或 JSON 字符串的策略
<!-- Example: Allow extensions from specific publishers --> <key>AllowedExtensions</key> <string>{"microsoft": true, "github": true}</string> <!-- Example: Set update mode to a specific value --> <key>UpdateMode</key> <string>start</string>重要如果策略值存在语法错误,则该设置将不会应用。您可以在 VS Code 的窗口日志中检查错误(按 ⇧⌘P(Windows、Linux 为 Ctrl+Shift+P),然后输入 Show Window Log)。
布尔策略 - 接受 true/false 值的策略
<!-- Example: Enable user feedback --> <key>EnableFeedback</key> <true/> <!-- Example: Disable telemetry --> <key>EnableTelemetry</key> <false/>移除不需要的策略 - 删除您不想强制执行的任何策略的键和值
<!-- To not enforce an update mode policy, remove these lines: --> <key>UpdateMode</key> <string>start</string>
有关每个策略接受的值和行为的详细信息,请参阅 策略参考。
第 3 步:部署策略
现在,您可以使用 MDM 解决方案将配置好的策略大规模部署到组织内的所有相关设备。在大规模部署之前,您可以在本地机器上手动测试这些策略。
大规模部署配置文件
对于跨多台设备的企业部署,请使用移动设备管理 (MDM) 解决方案,例如:
- Microsoft Intune
- 带有 MDM 的 Apple Business Manager
有关配置文件的详细信息,请参阅 Apple 的文档。
在本地机器上手动测试策略
手动配置策略
在大规模部署之前,请按照以下步骤在 macOS 设备上手动测试您的 VS Code 策略配置:
第 1 步:安装配置文件
- 保存您编辑好的
.mobileconfig文件。 - 在 Finder 中双击该
.mobileconfig文件。 - 系统设置(或旧版本 macOS 中的“系统偏好设置”)将会打开。
- 查看配置文件详情并选择 安装 (Install)(或根据您的 macOS 版本选择 继续 (Continue))。
- 如有提示,请使用管理员凭据进行身份验证。
- 按提示确认安装。
第 2 步:验证配置文件安装情况
- 打开 系统设置(macOS Ventura 及更高版本)或 系统偏好设置(旧版本)。
- 导航到 隐私与安全性 > 描述文件(或旧版本中的 通用 > 设备管理)。
- 验证您的 VS Code 配置文件是否出现在列表中。
- 启动 VS Code 以查看生效的策略。
对于新的 VS Code 实例,策略会立即生效。如果 VS Code 已在运行,您可能需要重启它。
移除配置文件
要移除策略并恢复为默认设置:
- 打开 系统设置 > 隐私与安全性 > 描述文件。
- 选择 VS Code 配置文件。
- 选择 移除 (Remove)(或 -)按钮。
- 使用您的管理员凭据进行身份验证以确认移除。
Linux JSON 策略
从 VS Code 1.106 版本开始,您可以通过将 JSON 策略文件放置在 /etc/vscode/policy.json 来在 Linux 设备上配置 VS Code 设置策略。此方法使用简单的 JSON 格式来定义策略值。
这些配置文件可以使用移动设备管理 (MDM) 解决方案部署,也可以在个人设备上手动安装。
第 1 步:获取示例策略文件
从 VS Code 1.106 版本开始,每个发行版都附带一个示例 .policy.json 文件。您可以从现有安装中获取它,或者通过下载并解压 VS Code 存档文件来获取。该文件位于 resources/app/policies 目录中。
第 2 步:配置策略值
-
将示例
policy.json文件复制到工作目录sudo cp /usr/share/code/resources/app/policies/policy.json /tmp/policy.json -
使用您偏好的文本编辑器编辑该文件
sudo nano /tmp/policy.json # or sudo vim /tmp/policy.json # or code /tmp/policy.json -
根据您的要求编辑策略值
字符串策略 - 接受文本值或 JSON 字符串的策略
<!-- Example: Allow extensions from specific publishers --> <key>AllowedExtensions</key> <string>{"microsoft": true, "github": true}</string> <!-- Example: Set update mode to a specific value --> <key>UpdateMode</key> <string>start</string>重要如果策略值存在语法错误,则该设置将不会应用。您可以在 VS Code 的窗口日志中检查错误(按 ⇧⌘P(Windows、Linux 为 Ctrl+Shift+P),然后输入 Show Window Log)。
布尔策略 - 接受 true/false 值的策略
<!-- Example: Enable user feedback --> <key>EnableFeedback</key> <true/> <!-- Example: Disable telemetry --> <key>EnableTelemetry</key> <false/>移除不需要的策略 - 删除您不想强制执行的任何策略的键和值
<!-- To not enforce an update mode policy, remove these lines: --> <key>UpdateMode</key> <string>start</string>
有关每个策略接受的值和行为的详细信息,请参阅 策略参考。
第 3 步:部署策略
现在,您可以使用 MDM 解决方案将配置好的策略大规模部署到组织内的所有相关设备。在大规模部署之前,您可以在本地机器上手动测试这些策略。
大规模部署策略
对于跨多台设备的企业 Linux 部署,请使用配置管理工具(如 Ansible、Puppet、Chef 或 Salt)来部署 policy.json 文件。
这些工具允许管理员远程管理组织内所有受管 Linux 设备上的策略部署、更新和移除。
在本地机器上手动测试策略
第 1 步:复制策略文件
-
确保
/etc/vscode目录存在sudo mkdir -p /etc/vscode注意您需要 root 或 sudo 权限才能创建该目录并在
/etc/vscode中管理策略文件。 -
将编辑好的策略文件复制到
/etc/vscode/系统目录sudo cp /tmp/policy.json /etc/vscode/policy.json设置适当的权限
sudo chmod 644 /etc/vscode/policy.json sudo chown root:root /etc/vscode/policy.json
第 2 步:验证策略安装情况
- 启动 VS Code(如果已在运行,请重启)。
- 打开 文件 > 首选项 > 设置(或按
Ctrl+,)。 - 查找与您配置的策略相对应的设置 - 它们应该显示为“由您的组织管理”或带有锁定图标。
- 将鼠标悬停在受管设置上,即可看到它们由策略控制。
您可以通过检查 VS Code 的日志或尝试更改受管设置(更改将被阻止)来验证策略文件是否已被读取。
移除策略
要移除所有策略并恢复为默认设置,请删除 /etc/vscode/policy.json 文件并重启 VS Code。
验证策略实施情况
将企业策略部署到设备后,您可以使用 Developer: Policy Diagnostics 命令确认 VS Code 是否正在读取并执行它们。该命令会打开一个包含设备当前策略状态报告的新的未命名 Markdown 文档。它在 Windows、macOS 和 Linux 上的工作方式相同。
报告包含以下部分:
- 系统信息:VS Code 产品名称、版本和提交记录,有助于将报告与特定构建版本进行匹配。
- 帐户信息:已登录的默认帐户详情,包括帐户提供程序返回的原始帐户级策略数据。
- 帐户策略网关:控制 AI 功能的 已批准 GitHub 组织网关 的状态。可能的状态包括
inactive(未激活)、satisfied(满足)和restricted(受限)。当状态为restricted时,报告还会列出原因,例如noAccount、wrongProvider、orgNotApproved或policyNotResolved。 - 受策略控制的设置:列出每个注册设置的策略状态的两个表格
- 已应用策略:当前被策略覆盖的设置,包括设置键、策略名称、策略来源、默认值、当前值以及策略强制执行的值。
- 未应用策略:当前未强制执行的注册策略。使用此表可检测部署错误,例如拼写错误的键或未被读取的策略文件。
- 身份验证信息:已注册的身份验证提供程序、会话、帐户以及有权访问每个帐户的扩展程序。
该报告可能包含敏感信息,例如帐户标识符、会话详情以及有权访问每个帐户的扩展程序列表。在共享报告之前,请先检查其内容。
如果 帐户策略网关 的状态为 policyNotResolved,请运行 Developer: Sync Account Policy 命令强制刷新帐户端策略数据,然后重新生成报告。
VS Code 企业策略参考
下表列出了 VS Code 中所有可用的企业策略。
| 策略 设置 ID |
描述 |
|---|---|
McpGalleryServiceUrl |
配置要连接的 MCP Gallery 服务 URL |
ChatApprovedAccountOrganizations |
将此策略设置为非空列表将激活“已批准帐户”网关:在用户登录其所属组织与此列表相交的 GitHub 帐户,且帐户端策略数据已解析之前,所有 AI 功能都将被禁用。比较不区分大小写。使用 '*' 作为通配符以接受任何已登录的 GitHub 或 GHE 帐户(在未公开组织列表的 GHE 部署中使用此项)。 |
ExtensionGalleryServiceUrl |
配置要连接的 Marketplace 服务 URL |
AllowedExtensionsextensions.allowed 此设置由组织级别管理。请联系管理员进行更改。 |
指定允许使用的扩展程序列表。通过限制未经授权扩展程序的使用,这有助于维护安全且一致的开发环境。更多信息:https://aka.ms/vscode/enterprise/extensions/allowed |
ChatToolsAutoApprovechat.tools.global.autoApprove 此设置由组织级别管理。请联系管理员进行更改。 |
全局自动批准(也称为“YOLO 模式”)完全禁用了所有工作区中所有工具的手动批准,允许代理完全自主地操作。这极其危险,不推荐使用。即使是像 Codespaces 和 Dev Containers 这样的容器化环境,也有可能被转发到容器中并遭到破坏的用户密钥。此功能禁用了关键的安全保护措施,使攻击者更容易破坏机器。注意:此设置仅控制工具批准,不会阻止代理提出问题。要自动回答代理的问题,请使用 #chat.autoReply# 设置。 |
CopilotSessionSyncchat.sessionSync.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
启用与 GitHub.com 的会话同步,以便实现跨设备的 Copilot 会话历史记录共享。当组织策略禁用此功能时,会话数据将仅保留在本地。 |
ChatToolsEligibleForAutoApprovalchat.tools.eligibleForAutoApproval 此设置由组织级别管理。请联系管理员进行更改。 |
控制哪些工具符合自动批准条件。设置为 'false' 的工具将始终显示确认信息,并且永远不会提供自动批准选项。默认行为(或将工具设置为 'true')可能会导致工具提供自动批准选项。 |
ChatMCPchat.mcp.access 此设置由组织级别管理。请联系管理员进行更改。 |
控制对已安装的模型上下文协议 (MCP) 服务器的访问。 |
ChatAgentExtensionToolschat.extensionTools.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
启用使用第三方扩展程序提供的工具。 |
ChatPluginsEnabledchat.plugins.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
在聊天中启用代理插件集成。 |
ChatAgentModechat.agent.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
启用后,可以从聊天中激活代理模式,并可以使用在代理上下文中有副作用的工具。 |
ChatAgentNetworkFilterchat.agent.networkFilter 此设置由组织级别管理。请联系管理员进行更改。 |
启用后,代理工具(获取工具、集成浏览器)的网络访问将根据 #chat.agent.allowedNetworkDomains# 和 #chat.agent.deniedNetworkDomains# 进行限制。当启用 #chat.agent.sandbox.enabled# 时,域名过滤也适用于这些工具。 |
ChatAgentAllowedNetworkDomainschat.agent.allowedNetworkDomains 此设置由组织级别管理。请联系管理员进行更改。 |
代理工具(获取工具、集成浏览器)允许访问的网络域名。当启用 #chat.agent.networkFilter# 或 #chat.agent.sandbox.enabled# 时适用。当 #chat.agent.sandbox.enabled# 设置为 allowNetwork 时,允许所有域名。支持通配符,如 *.example.com。当允许列表和拒绝列表都为空时,将阻止所有域名。拒绝域名(参见 #chat.agent.deniedNetworkDomains#)具有优先权。 |
ChatAgentDeniedNetworkDomainschat.agent.deniedNetworkDomains 此设置由组织级别管理。请联系管理员进行更改。 |
代理工具(获取工具、集成浏览器)拒绝访问的网络域名。当启用 #chat.agent.networkFilter# 或 #chat.agent.sandbox.enabled# 时适用。当 #chat.agent.sandbox.enabled# 设置为 allowNetwork 时,此规则不适用。优先于 #chat.agent.allowedNetworkDomains#。支持通配符,如 *.example.com。 |
DeprecatedEditModeHiddenchat.editMode.hidden |
启用后,将从聊天模式选择器中隐藏编辑模式。 |
ChatHookschat.useHooks 此设置由组织级别管理。请联系管理员进行更改。 |
控制聊天钩子 (Hooks) 是否在代理工作流的策略性节点执行。钩子从 #chat.hookFilesLocations# 中配置的文件加载。 |
ChatToolsTerminalEnableAutoApprovechat.tools.terminal.enableAutoApprove 此设置由组织级别管理。请联系管理员进行更改。 |
控制是否允许在终端运行工具中进行自动批准。 |
ChatAgentSandboxEnabledchat.agent.sandbox.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
控制代理模式是否使用沙箱来限制工具的操作范围。启用后,终端等工具将在沙箱环境中运行,以限制对系统的访问。 |
ChatAgentSandboxAllowUnsandboxedCommandschat.agent.sandbox.allowUnsandboxedCommands 此设置由组织级别管理。请联系管理员进行更改。 |
控制当沙箱化命令失败或沙箱限制会阻止命令时,在用户确认后,代理模式终端命令是否可以在沙箱外运行。仅在启用了 #chat.agent.sandbox.enabled# 时适用。 |
ChatAgentSandboxAutoApproveUnsandboxedCommandschat.agent.sandbox.autoApproveUnsandboxedCommands 此设置由组织级别管理。请联系管理员进行更改。 |
控制在沙箱外运行的代理模式终端命令是否自动批准。仅在同时启用了 #chat.agent.sandbox.enabled# 和 #chat.agent.sandbox.allowUnsandboxedCommands# 时适用。 |
ChatAgentSandboxAllowAutoApprovechat.agent.sandbox.allowAutoApprove 此设置由组织级别管理。请联系管理员进行更改。 |
控制在沙箱内运行的代理模式终端命令是否自动批准。禁用后,终端运行工具将使用现有的批准流程。仅在启用了 #chat.agent.sandbox.enabled# 时适用。 |
UpdateModeupdate.mode 此设置由组织级别管理。请联系管理员进行更改。 |
配置是否接收自动更新。更改后需要重启。更新从 Microsoft 在线服务获取。 |
TelemetryLeveltelemetry.telemetryLevel 此设置由组织级别管理。请联系管理员进行更改。 |
控制遥测级别。 |
EnableFeedbacktelemetry.feedback.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
启用反馈机制,例如问题报告工具、调查问卷以及其他反馈选项。 |
BrowserChatToolsworkbench.browser.enableChatTools 此设置由组织级别管理。请联系管理员进行更改。 |
启用后,聊天代理可以使用浏览器工具来打开并与集成浏览器中的页面进行交互。 |
CopilotNextEditSuggestionsgithub.copilot.nextEditSuggestions.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
是否启用下一次编辑建议 (NES)。NES 可以根据您最近的更改建议下一次编辑。 |
CopilotReviewSelectiongithub.copilot.chat.reviewSelection.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
启用当前选定内容的代码审查。 |
CopilotReviewAgentgithub.copilot.chat.reviewAgent.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
启用代码审查代理。 |
Claude3PIntegrationgithub.copilot.chat.claudeAgent.enabled 此设置由组织级别管理。请联系管理员进行更改。 |
在 VS Code 中启用 Claude 代理会话。直接在编辑器中启动并恢复由 Anthropic Claude 代理 SDK 提供支持的代理编码会话。使用您现有的 Copilot 订阅。 |
如果您希望应用更多策略,请在 VS Code GitHub 仓库 中提交问题。团队将确定是否已经存在相应的行为设置,或者是否应创建新的设置和策略。