注意
本地沙盒 GitHub Copilot 位于 公开预览 且可能会更改。
重要
Windows上的本地沙盒需要Windows预览体验成员版本。
关于本地沙盒配置
可以使用 /sandbox 斜杠命令授予额外的路径、调整网络访问权限或打开或关闭沙盒。
有关云和本地沙盒 Copilot 的概念概述,请参阅 关于云端和本地沙盒 GitHub Copilot。
打开沙盒配置
-
启动Copilot CLI会话。
-
输入
/sandbox斜杠命令。这会打开包含四个选项卡的交互式配置接口: 常规、 身份验证、 文件系统和 网络。 使用 Tab 在选项卡之间切换。 按 Esc 保存更改并关闭配置。
配置常规设置
“ 常规 ”选项卡控制顶级沙盒行为。 当企业托管设置强制实施值时,对话框会将该设置 (managed) 标记为阻止你更改它。
| 设置 | Description |
|---|---|
| 启用沙盒 | 在沙盒中运行 shell 命令。 您还可以通过 /sandbox enable 和 /sandbox disable 切换此设置。 |
| 允许绕过沙盒 | 让模型请求单个命令在沙盒外部运行,但需要批准。 绕过提示还可以让你在当前会话的剩余时间内禁用沙盒。 默认情况下处于打开状态。 有关详细信息,请参阅 “允许绕过沙盒”。 |
| 沙盒 MCP 服务器 | 在沙盒中运行 MCP 服务器。 默认情况下处于打开状态。 |
| 沙盒 LSP 服务器 | 在沙盒中运行语言服务器(LSP 服务器)。 默认情况下处于打开状态。 |
允许绕过沙盒
“允许沙盒绕过”设置控制当无法在沙盒中成功运行命令时Copilot会发生什么情况。
- 在 (默认值) 上:如果某个命令在沙盒中失败,系统会提示你允许 Copilot 在沙盒外部运行命令。 你对此提示的响应仅适用于此次运行该命令的尝试。 您也可以选择在本次会话的剩余时间内禁用沙盒(如果您的企业允许),或者改为输入一条让 Copilot 处理的指令。
- 关闭:如果 Copilot 无法在沙盒中成功运行命令,它将停止处理任务并报告失败。
如果企业管理设置将sandbox.allowBypass设为false,则您无法批准单个命令在沙盒外运行,也无法在本次会话的剩余时间内禁用沙盒。 如果受管理设置要求启用沙盒,而有效策略允许绕过,则你只能通过当前活动的绕过权限提示禁用沙盒,而不能通过普通设置或 /sandbox disable。
配置身份验证设置
认证选项卡控制是否向在沙盒中运行的命令提供您的凭据。 与其他选项卡一样,由企业管理的值会显示为 (managed),且无法更改。
| 设置 | Description |
|---|---|
| 对 git 进行身份验证 | 注入一个GitHub令牌,从而使已通过身份验证的 HTTPS git 能够在沙盒内运行,而无需凭据助手。 对于非GitHub主机,可改为向沙盒git命令提供自己的存储凭据。 默认情况下处于打开状态。 |
| 身份验证 gh | 导出 GH_TOKEN 以便 GitHub CLI (注意: gh CLI,而不是 copilot)在沙盒中工作,而无需访问其存储的凭据(配置目录或 OS 密钥链),沙盒会阻止该密钥链。 默认情况下处于打开状态。 |
| 允许密钥链访问 | 仅在 macOS 上可用。 允许沙盒命令使用 macOS 钥匙串,例如访问由 git 和 gh 凭据帮助程序使用的凭据。 默认情况下已关闭。 |
配置文件系统设置
文件系统选项卡控制沙盒进程可以访问的目录和文件。
默认情况下, Copilot 向当前工作目录中和下方的所有内容授予读/写权限。 如果位于 Git 存储库中, Copilot 则还被授予以下权限:
- 对存储库的
.git目录及其下级目录中所有内容的读/写权限。 - 对当前工作目录上方的存储库中所有其他内容的读取权限。 工作目录本身仍保持可读写,因为在两者重叠的部分,更具体的授权规则优先。
| 设置 | Description |
|---|---|
| 包含工作目录 | 默认情况下处于打开状态。 当前工作目录(以及封闭存储库的 .git 目录(如果有)会自动添加到读/写路径列表中。 如果不希望自动授予工作目录读/写访问权限,然后手动允许访问特定路径,请取消选中此选项。 |
| 允许开发工具访问 | 默认情况下处于打开状态。 授予沙盒命令对开发人员工具配置和缓存(包括包管理器注册表及其存储的令牌)的读取访问权限,以及对共享生成缓存的读/写访问权限,因此安装和生成可在沙盒内工作。 这在**** 报告中显示为/sandbox policy。 将其关闭,以便必须明确授予这些位置信息的访问权限。 |
重要
取消选择 “包括工作目录 ”会删除对 Git 存储库目录中和目录下 .git 的所有内容的访问权限。 因此,Git 操作(例如 status、add、commit 和 diff)将会失败,除非你手动为此目录添加访问权限。
添加文件系统路径规则
可以指定要添加到沙盒的路径。 这样,就可以授予对工作目录外部的目录和文件的只读或读/写访问权限。 还可以拒绝访问,以从沙盒中排除目录和文件。
-
在 “文件系统 ”选项卡中,按 A 添加新的路径规则。
-
键入文件或目录路径。 使用绝对路径,例如,在 macOS 或 Linux 上使用
/Users/octocat/projects/app,或在 Windows 上使用C:\Users\octocat\projects\app。 然后,按 Enter。注意
添加目录时,将包括其整个子树。 不支持通配符。
-
使用键盘上的向左键和向右键在权限选项之间导航: 读/写、 只读、 拒绝。 然后按 Enter 选择一个选项。
添加文件系统路径后,可以编辑或删除它们。
- 使用向上键和向下键选择路径。
- 按 Enter 编辑路径,或 D 将其删除。
配置网络设置
“ 网络 ”选项卡控制沙盒进程是否可以建立网络连接。
| 设置 | Description |
|---|---|
| 允许出站连接 | 默认情况下处于打开状态。 启用后,沙盒进程可以访问 Internet 上的外部主机。 请将其关闭以完全隔离沙盒与网络。 |
| 允许本地网络 | 默认情况下处于打开状态。 启用后,沙盒进程可以访问本地网络上的主机(例如, localhost LAN 上的其他设备)。 关闭此选项可阻止沙盒访问本地或专用网络服务。 |
| HTTP 代理 | 将沙盒的出站流量通过 HTTP 代理转发。 请参阅 通过 HTTP 代理传输流量。 |
通过 HTTP 代理路由流量
在“网络”选项卡上选择 “HTTP 代理”,通过代理服务器发送沙盒的出站流量。 输入代理 URL,并可选择输入 用户名 和 密码。 若要删除代理,请清除 URL。
请记住以下几点:
- 仅当启用 “允许出站连接” 时,代理才适用。 如果关闭出站连接,代理将保留在设置中,但保持非活动状态。
- 密码安全地存储在操作系统的凭据存储中。 还可以输入
${VAR}环境变量引用,而不是文本密码。 - 在 Linux 和 macOS 上,代理采用协作式方式:它通过标准的代理环境变量生效,并且取决于各个工具是否遵循这些变量。 在 Windows 上,沙盒会强制使用代理。
- 贵组织可以通过托管设置强制执行代理 URL。 这样做时,URL 会显示为
(managed),但仍可以提供自己的凭据,这些凭据存储在用户设置中。
快速启用和禁用沙盒
可以打开或关闭沙盒,而无需打开完整的配置界面:
- 启用:在
/sandbox enable会话中输入Copilot CLI。 - 禁用:在
/sandbox disable会话中输入Copilot CLI。
这些命令更改“常规”选项卡上的 “启用沙盒”设置。
查看当前的沙盒设置
设置存储在您的 settings.json 配置目录中 sandbox 下的 Copilot CLI 键中。 有关配置目录的详细信息,请参阅 GitHub Copilot CLI 配置目录。
您可以在 Copilot CLI 会话中查看当前的沙盒设置。
- 输入
/settings。 - 按 / 搜索设置。
- 键入
sandbox以筛选设置列表。
上述步骤显示了已保存的设置。 若要查看有效文件系统策略(即合并您的设置、自动授予和任何托管策略后得到的读写、只读和拒绝访问路径),请输入 /sandbox policy。 有关详细信息,请参阅“了解 GitHub Copilot CLI 中用于本地沙盒的文件系统策略”。