# 配置本地沙盒设置

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

> \[!NOTE]
> 本地沙盒 GitHub Copilot 位于 公开预览 且可能会更改。

> \[!IMPORTANT]
> Windows上的本地沙盒需要Windows预览体验成员版本。

## 关于本地沙盒配置

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

有关云和本地沙盒 Copilot的概念性概述，请参阅 [关于云和本地沙盒 GitHub Copilot](/zh/copilot/concepts/about-cloud-and-local-sandboxes)。

## 打开沙盒配置

1. 启动Copilot CLI会话。
2. 输入`/sandbox`斜杠命令。

   这会打开包含四个选项卡的交互式配置接口： **常规**、 **身份验证**、 **文件系统**和 **网络**。 使用 <kbd>Tab</kbd> 在选项卡之间切换。 按 <kbd>Esc</kbd> 保存更改并关闭配置。

## 配置常规设置

“ **常规** ”选项卡控制顶级沙盒行为。 当企业托管设置强制实施值时，对话框会将该设置 `(managed)` 标记为阻止你更改它。

| 设置             | Description                                                                           |
| -------------- | ------------------------------------------------------------------------------------- |
| **启用沙盒**       | 在沙盒中运行 shell 命令。 您还可以通过 `/sandbox enable` 和 `/sandbox disable` 切换此设置。                 |
| **允许绕过沙盒**     | 让模型请求单个命令在沙盒外部运行，但需要批准。 默认情况下处于打开状态。 有关详细信息，请参阅 [“允许绕过沙盒](#allowing-sandbox-bypass)”。 |
| **沙盒 MCP 服务器** | 在沙盒中运行 MCP 服务器。 默认情况下处于打开状态。                                                          |
| **沙盒 LSP 服务器** | 在沙盒中运行语言服务器（LSP 服务器）。 默认情况下处于打开状态。                                                    |

### 允许绕过沙盒

**“允许沙盒绕过**”设置控制当无法在沙盒中成功运行命令时Copilot会发生什么情况。

* **在 （默认值）** 上：如果某个命令在沙盒中失败，系统会提示你允许 Copilot 在沙盒外部运行命令。 对此提示的响应适用于此特定尝试运行命令。 （可选）可以选择为会话的其余部分（如果企业允许）禁用沙盒，也可以输入用于改用的说明 Copilot 。
* **关闭**：如果 Copilot 无法在沙盒中成功运行命令，它将停止处理任务并报告失败。

## 配置身份验证设置

**“身份验证**”选项卡控制凭据是否可用于沙盒中运行的命令。 与其他选项卡上一样，企业管理的值为 `(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`显示为**开发工具访问权限**。 将其关闭以要求显式授予这些位置。 |

> \[!IMPORTANT]
> 取消选择 **“包括工作目录** ”会删除对 Git 存储库目录中和目录下 `.git` 的所有内容的访问权限。 因此，Git 操作（例如`status`，`add``commit`）将`diff`失败，除非手动添加此目录的访问权限。

### 添加文件系统路径规则

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

1. 在 **“文件系统** ”选项卡中，按 <kbd>A</kbd> 添加新的路径规则。

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

   > \[!NOTE]
   > 添加目录包括其整个子树。 不支持通配符。

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

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

1. 使用向上键和向下键选择路径。
2. 按 <kbd>Enter</kbd> 编辑路径，或 <kbd>D</kbd> 将其删除。

## 配置网络设置

“ **网络** ”选项卡控制沙盒进程是否可以建立网络连接。

| 设置          | Description                                                                           |
| ----------- | ------------------------------------------------------------------------------------- |
| **允许出站连接**  | 默认情况下处于打开状态。 启用后，沙盒进程可以访问 Internet 上的外部主机。 请将其关闭以完全隔离沙盒与网络。                           |
| **允许本地网络**  | 默认情况下处于打开状态。 启用后，沙盒进程可以访问本地网络上的主机（例如， `localhost` LAN 上的其他设备）。 关闭此选项可阻止沙盒访问本地或专用网络服务。 |
| **HTTP 代理** | 通过 HTTP 代理路由沙盒的出站流量。 请参阅 [通过 HTTP 代理路由流量](#routing-traffic-through-an-http-proxy)。    |

### 通过 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 配置目录](/zh/copilot/reference/copilot-cli-reference/cli-config-dir-reference)。

可以从会话中 Copilot CLI 查看当前的沙盒设置。

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

上述步骤显示了已保存的设置。 若要查看 **有效的** 文件系统策略（一旦设置、自动授予和任何托管策略合并），就会输入 `/sandbox policy`读取/写入、只读和拒绝的路径。 有关详细信息，请参阅“[了解本地沙盒的文件系统策略 GitHub Copilot CLI](/zh/copilot/concepts/agents/copilot-cli/understanding-local-sandboxing)”。

## 延伸阅读

* [关于云和本地沙盒 GitHub Copilot](/zh/copilot/concepts/about-cloud-and-local-sandboxes)
* [使用本地沙盒](/zh/copilot/how-tos/cloud-and-local-sandboxes/using-local-sandboxing)
* [为组织或企业启用或禁用云沙盒](/zh/copilot/how-tos/cloud-and-local-sandboxes/enabling-or-disabling-cloud-sandboxes-for-your-organization)
* [配置 GitHub Copilot CLI](/zh/copilot/how-tos/copilot-cli/set-up-copilot-cli/configure-copilot-cli)