Skip to main content
Skip to content

配置本地沙盒设置

在 /sandbox 中使用 Copilot CLI 斜杠命令,以控制本地沙盒对文件系统访问、网络连接能力和系统能力的限制方式。

注意

GitHub Copilot 的本地沙盒位于 公开预览,并且可能会发生变化。

重要

Windows上的本地沙盒需要Windows预览体验成员版本。

关于本地沙盒配置

可以使用 /sandbox 斜杠命令授予额外的路径、调整网络访问权限或打开或关闭沙盒。

注意

如果从企业获取 Copilot 许可证,则某些或所有沙盒设置可能由企业托管设置控制。 受管理的设置在 (managed) 界面中会标记为 /sandbox,且无法更改。

有关云和本地沙盒 Copilot 的概念概述,请参阅 关于云端和本地沙盒 GitHub Copilot。

打开沙盒配置

  1. 启动Copilot CLI会话。

  2. 输入/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)将会失败,除非你手动为此目录添加访问权限。

添加文件系统路径规则

可以指定要添加到沙盒的路径。 这样,就可以授予对工作目录外部的目录和文件的只读或读/写访问权限。 还可以拒绝访问,以从沙盒中排除目录和文件。

  1. 在 “文件系统 ”选项卡中,按 A 添加新的路径规则。

  2. 键入文件或目录路径。 使用绝对路径,例如,在 macOS 或 Linux 上使用 /Users/octocat/projects/app,或在 Windows 上使用 C:\Users\octocat\projects\app。 然后,按 Enter。

    注意

    添加目录时,将包括其整个子树。 不支持通配符。

  3. 使用键盘上的向左键和向右键在权限选项之间导航: 读/写、 只读、 拒绝。 然后按 Enter 选择一个选项。

添加文件系统路径后,可以编辑或删除它们。

  1. 使用向上键和向下键选择路径。
  2. 按 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 会话中查看当前的沙盒设置。

  1. 输入 /settings。
  2. 按 / 搜索设置。
  3. 键入 sandbox 以筛选设置列表。

上述步骤显示了已保存的设置。 若要查看有效文件系统策略(即合并您的设置、自动授予和任何托管策略后得到的读写、只读和拒绝访问路径),请输入 /sandbox policy。 有关详细信息,请参阅“了解 GitHub Copilot CLI 中用于本地沙盒的文件系统策略”。

延伸阅读