注意
云和本地沙盒 GitHub Copilot 位于 公开预览 且可能会更改。
Introduction
Copilot 云和本地沙盒是支持本地和云中安全沙盒体验 GitHub Copilot 命令行界面 (CLI)的执行平台。 由于 Copilot 代表你执行更多操作(运行工具、执行命令和修改文件),沙盒提供安全采用代理工作流所需的隔离、可移植性和策略控制。
沙盒当前适用于 Copilot 命令行界面(CLI) 会话。 还可以选择在启动新会话 GitHub Copilot 应用时使用云沙盒。 有关详细信息,请参阅“在 GitHub Copilot 应用中使用代理会话”。
使用沙盒,可以选择运行位置 Copilot :
- 本地沙盒:安全地在自己的计算机上运行 Copilot 。 运行的命令 Copilot 对文件系统、网络和系统功能具有受限的访问权限。 无需额外付费即可使用本地沙盒。
- 云沙盒:远程运行整个 Copilot 命令行界面(CLI) 会话,在由其 GitHub托管的完全隔离的临时 Linux 环境中运行。 云沙盒是根据使用情况计费的。
本地沙盒机制
注意
本地沙盒目前是一项实验性功能。 若要使用它,请从Copilot 命令行界面(CLI)命令行选项开始‑‑experimental,或在会话期间输入/experimental on。
本地沙盒机制可让 Copilot 直接在您的设备上的沙盒环境中运行,且对文件系统、网络访问和系统功能的访问受到限制。
默认情况下,本地沙盒处于关闭状态。 在启用之前,直接在计算机上运行的 shell 命令 Copilot 具有与用户帐户相同的访问权限:他们可以随时随地读取、写入和删除计算机可以访问的任何网络,并不受限制地使用凭据。 启用本地沙盒可将此访问权限限制为你控制的策略。
本地沙盒的工作原理
本地沙盒由 Microsoft eXecution Container (MXC)提供支持,这是一种跨平台技术,它提供每个操作系统上可用的隔离机制的通用接口。 Copilot 命令行界面(CLI) 声明它想要强制执行的沙盒策略(哪些路径是可读的还是可写的,是允许的网络访问,等等),MXC 使用适用于操作系统的相应隔离后端应用该策略。
隔离技术存在于一个范围中,从强隔离(例如完整虚拟机监控程序或容器)到较轻的隔离(例如 OS 级进程和文件系统包含)。 本地沙盒目前位于此范围较轻的末尾:它限制进程可以在网络上读取、写入和访问的内容,但它不会在单独的虚拟机或容器中运行命令。 如果要评估此级别的隔离是否符合安全要求,请参阅 microsoft/mxc 存储库 以了解实现详细信息。
启用本地沙盒机制
若要在 Copilot 命令行界面(CLI) 会话中启用本地沙盒环境,请运行:
/sandbox enable
/sandbox enable
启用本地沙盒后,代理代表你运行的命令和工具(shell 命令、文件搜索),默认情况下,MCP 和语言 (LSP) 服务器将启动 - 在操作系统级沙盒中运行,限制其对系统的访问。 每当将来使用 CLI(以编程方式和交互式使用)时,CLI 将继续使用本地沙盒,直到运行 /sandbox disable 以禁用它。
CLI 的内置文件工具(属于 CLI 的第一方命令,而不是 shell 命令) sed在 CLI 中运行进程内。 由于 CLI 本身不是沙盒,因此操作系统沙盒永远不会看到这些工具执行的文件操作,并且无法约束它们。 相反,内置工具将编码为检查沙盒策略本身,并尽最大努力遵守配置的设置。
有关详细信息,请参阅“使用本地沙盒”。
配置本地沙盒
可以使用默认的本地沙盒行为,也可以修改可以访问的内容 Copilot 。 配置本地沙盒时,可以控制多个访问维度:
- 文件系统:授予对特定路径的只读或读/写访问权限,或拒绝路径。
- 网络:允许或阻止出站 Internet 访问和本地网络独立访问。
- 凭据:选择 Git 和 GitHub CLI (
gh) 凭据是否在沙盒中可用。 - 子进程:选择本地 MCP 服务器和语言服务器是否也在沙盒中运行。 远程 MCP 服务器永远不会沙盒化。
- 密钥链(macOS):选择是否可从沙盒内部访问系统密钥链。
- 每个命令例外:在需要更广泛的访问时,允许或阻止单个命令在沙盒外部运行。
有关详细信息,请参阅“配置本地沙盒设置”。
跨平台支持
本地沙盒适用于 macOS 和 Linux,以及Windows预览体验成员版本。 支持和隔离行为因平台而异,因为每个操作系统使用不同的隔离后端:
- macOS 使用 Seatbelt 后端 (
sandbox-exec)。 - Linux 使用 bubblewrap 后端,该后端需要
bwrap安装命令并在其PATH上可用。 如果/sandboxLinux 上不支持沙盒,请安装 bubblewrap。 - Windows使用 ProcessContainer 后端。
由于每个平台使用不同的后端,因此一些策略选项的行为方式不同。 最值得注意的是,在Windows沙盒无法阻止单个路径,因此添加的任何拒绝路径规则都会被忽略。 不要拒绝Windows上的路径,而是仅向需要的特定目录Copilot授予访问权限,而不是授予宽泛目录,然后尝试排除其中的一部分。 即使未强制实施拒绝的路径,这也会使敏感位置远离沙盒的影响力。 拒绝的路径在 macOS 和 Linux 上强制执行。
企业策略强制实施
对于组织和企业,可以使用Microsoft Intune和其他 MDM(移动设备管理)平台集中配置和强制实施本地沙盒策略。 这样,管理员就可以控制跨托管设备与本地资源交互的方式 Copilot 。 请参阅 部署 MDM 管理的设置。
云端沙箱
云沙盒让您能够在由 Copilot 命令行界面(CLI) 托管的完全隔离的临时 Linux 环境中运行 GitHub 会话。 每个云沙盒会话都独立于本地环境和其他会话。
云沙盒基于Azure 容器应用沙盒构建,GitHub提供标识、策略和计费层。
注意
如果 Copilot 通过组织进行访问,则访问云沙盒取决于它在组织或企业设置中已启用,默认处于禁用状态。 有关详细信息,请参阅“为组织或企业启用或禁用云沙盒”。
启动云沙盒会话
若要启动云支持的会话,请运行以下命令:
copilot ‑‑cloud ‑‑experimental
copilot ‑‑cloud ‑‑experimental
注意
云沙盒目前是一项实验性功能。 若要使用它,必须启用 Copilot 命令行界面(CLI)试验性功能,例如,在启动 CLI 会话时使用 ‑‑experimental 命令行选项,如上所示。
‑‑cloud命令行选项在云沙盒中启动交互式Copilot 命令行界面(CLI)会话。 你可以提示 Copilot 执行任务、运行 shell 命令并迭代修改代码,就像在本地会话中一样。
Copilot 运行的命令是在云环境中执行的,而不是在本地计算机上执行。
在云沙盒中运行 copilot ‑‑cloud 启动单个 Copilot 命令行界面(CLI) 会话。 它不会影响将来 Copilot 的会话。 每次要在云沙盒中运行新会话时,都必须使用 ‑‑cloud 此选项启动 CLI。
注意
云沙盒仅适用于交互式 Copilot 命令行界面(CLI) 会话。 无法在云沙盒中以编程方式运行 CLI,也就是说,不能将‑‑cloud选项与或-i选项组合在一起-p。
跨设备继续会话
由于云沙盒会话在由 GitHub 托管的基础结构中运行,因此无论会话最初是在哪台设备上启动的,都可以在任何设备上继续使用 Copilot 会话。 这使工作流更加灵活,无需复制文件或重新安装依赖项。
卸载计算密集型工作流
可以在云中并行运行多个 Copilot 任务,而无需使用本地资源。 这样既能让本地环境保持轻量和响应迅速,又能扩展由代理驱动的工作负载。
统一治理
云沙盒策略与Copilot云代理策略共享相同的配置,无需额外设置即可将现有安全控制扩展到在云沙盒中执行。
会话生命周期
云沙盒会话有三个主要状态:
- 活动状态:会话正在运行,你正通过 Copilot 命令行界面(CLI) 与其交互。
- 已停止:会话当前未运行,但其状态已保存。 恢复时,将还原文件、环境变量和正在进行的工作。
- 已删除:会话及其保存状态已删除,无法恢复。
停止会话时,云沙盒会创建当前状态的快照,以便您稍后可以从中断处继续。 删除会话时,将同时删除正在运行的环境和快照。
身份验证和访问
沙盒使用现有的 Copilot 命令行界面(CLI) 身份验证。 如果可以登录并有权访问Copilot 命令行界面(CLI)Copilot,则可以使用沙盒。 无需配置单独的云提供商、管理 API 密钥或设置基础结构。
组织或企业所有者必须在组织或企业设置中启用 云沙盒访问 策略,然后成员才能使用云沙盒。
有关为组织成员启用或禁用云沙盒的信息,请参阅 为组织或企业启用或禁用云沙盒。
Billing
标准 GitHub Copilot 席位中包含本地沙盒机制,无需额外付费。
云沙盒是根据使用情况计费的。 GitHub 通过三项计量指标来衡量云沙盒使用情况:
| Meter | Description | 单位 | 价格(USD) |
|---|---|---|---|
| 计算 | 云沙盒会话的运行时间。 | 计算秒数 | $0.000024 |
| Memory | 云沙盒会话运行期间分配的内存。 | GiB 秒 | $0.0000003 |
| 存储 | 已停止会话的快照存储。 | GiB/月 | 0.005 美元 |
有关如何测量和计费云沙盒使用情况的详细信息,请参阅 云和本地沙盒的计费 GitHub Copilot。