Skip to main content
Skip to content

配置 GitHub Copilot CLI

为Copilot CLI配置受信任的目录、工具访问、路径和 URL 权限以及客户端遥测。

介绍

Copilot CLI 有多个配置选项,用于控制它可以代表你访问和执行的操作。

本文介绍如何设置受信任的目录、配置工具访问权限、授予文件路径和 URL 的权限以及禁用客户端遥测。

先决条件

设置受信任的目录

Copilot CLI 可读取、修改和执行文件的受信任目录控制。 信任目录具有安全隐患,请参阅 安全注意事项。

选择信任目录

启动 GitHub Copilot CLI 会话时,系统将要求你确认信任启动 CLI 所在的目录及其下的所有文件。

你可以选择信任当前目录以实现以下目的:

  • 仅当前正在运行的会话
  • 此会话和未来会话

如果选择信任目录以供将来的会话使用,则将不再显示受信任的目录提示。 只有在确定此位置始终是Copilot的安全操作场所时,您才应选择第二个选项。

编辑受信任的目录

可以编辑永久受信任的目录的列表。 受信任的目录存储在自动托管 config.json 文件中。

  1. 打开 CLI 的config.json文件。 默认情况下,它存储在 .copilot 主目录下的文件夹中:

    • macOS/Linux: ~/.copilot/config.json
    • Windows:$HOME\.copilot\config.json

可以通过设置 COPILOT_HOME 环境变量来更改配置位置。 这会更改上述路径中的 ~/.copilot/ 和 $HOME\.copilot\。

  1. 编辑 trustedFolders 数组的内容。

设置允许的工具

可以通过在Copilot CLI尝试使用工具时响应审批提示,或通过命令行选项指定权限,来控制Copilot可以使用哪些工具。

请注意,允许工具访问具有安全影响,请参阅 安全注意事项。

本部分您可以了解如何:

首次允许工具

在手动审批模式下,Copilot 要求你批准尚未获准的工具请求——例如 touch、chmod、node 或 sed。 是否提示你取决于有效权限以及工具的使用方式,例如其参数或以前的审批。

  1. 通过运行 copilot启动交互式会话,然后输入 /permissions manual。

  2. 提示 Copilot 执行需要工具的任务。 例如:

    Create a new file called README.md with a project description
    
  3. 如果该工具尚未获准,请从审批选项中进行选择:

    • 1. Yes

      选择此选项可仅允许 Copilot 仅这一次运行此特定命令。 下次需要使用此工具时,它会再次询问你。

    • 2. Yes, and approve TOOL for the rest of the running session

      选择此选项可允许 Copilot 在当前正在运行的会话期间使用此工具。 在新的会话中,或者如果你在未来重新恢复当前会话时,它会再次请求你的批准。 如果选择此选项,则允许 Copilot 以任何认为合适的方式使用此工具。

      例如,如果 Copilot 要求你允许它运行命令 rm ./this-file.txt,并选择选项 2,则可以 Copilot 在此会话的当前运行期间运行任何 rm 命令(例如 rm -rf ./*),而无需请求批准。

    • 3. No, and tell Copilot what to do differently (Esc)

      选择此选项可取消建议的命令,并指示 Copilot 尝试其他方法。

允许在未经手动批准的情况下使用工具

可以使用命令行选项来指定 Copilot 无需征求您的批准即可使用的工具。

或者,若要在不授予全面权限的情况下减少审批提示,请在交互式会话中输入 /permissions assisted 。 使用 assisted permissions,大型语言模型可评估符合条件的权限请求,并自动批准其判断为安全的请求。 现有权限和企业规则仍适用,仍需要审批的请求将提交给你。 有关详细信息,请参阅“允许安全命令在未经手动批准的情况下运行”。

允许所有工具

通过--allow-all-tools允许Copilot使用任何工具而无需请求批准。

  • 例如:

    copilot -p "Revert the last commit" --allow-all-tools
    

拒绝工具

使用--deny-tool防止Copilot使用特定工具。

  • 例如:

    copilot --deny-tool='shell(git push)'
    

此选项优先于 --allow-all-tools 和 --allow-tool 选项。

允许工具

使用 --allow-tool 以允许 Copilot 无需您的批准即可使用特定工具。

  • 例如:

    copilot --allow-tool='shell'
    

指定要允许或拒绝的工具

若要使用 --deny-tool 和 --allow-tool 选项,必须指定要允许或拒绝的工具类型:

允许或拒绝 shell 命令

使用 shell(COMMAND) 来允许或拒绝特定的 shell 命令。

  • 例如,若要防止 Copilot 使用任何 rm 命令,请使用:

    copilot --deny-tool='shell(rm)'
    

对于 git 和 gh 命令,请指定允许或拒绝的特定一级子命令。

  • 例如,若要防止 Copilot 使用 git push,请使用:

    copilot --deny-tool='shell(git push)'
    

工具规范是可选的。 例如, copilot --allow-tool='shell' 允许 Copilot 在未经个人批准的情况下使用任何 shell 命令。

允许或拒绝 'write' 工具

用于 'write' 允许或拒绝工具(而不是 shell 命令)修改文件的权限。

  • 例如,若要允许 Copilot 在未经个人批准的情况下编辑文件,请使用:

    copilot --allow-tool='write'
    

允许或拒绝 MCP 服务器工具

用于 'MCP_SERVER_NAME' 允许或拒绝来自指定 MCP 服务器的特定工具。

  • 例如,若要防止Copilot使用名为tool_name的工具,该工具来自称为My-MCP-Server的 MCP 服务器,请使用:

    copilot --deny-tool='My-MCP-Server(tool_name)'
    

MCP_SERVER_NAME 是已配置的 MCP 服务器的名称。

服务器中的工具在括号中指定,并使用向 MCP 服务器注册的工具名称。

仅使用服务器名称而未指定具体工具,将允许或拒绝该服务器中的所有工具。

可以在/mcp的交互模式中输入Copilot CLI,然后从显示的列表中选择服务器以查找 MCP 服务器的名称。

允许某些工具的同时拒绝其他工具

若要确切确定哪些工具 Copilot 可以在不要求审批的情况下使用,可以使用审批选项的组合。 例如:

  • 若要防止 Copilot 使用 rm 和 git push 命令,但自动允许所有其他工具,请使用:

    copilot --allow-all-tools --deny-tool='shell(rm)' --deny-tool='shell(git push)'
    
  • 若要禁止 Copilot 使用来自名为 tool_name 的 MCP 服务器的工具 My-MCP-Server,但允许该服务器上的所有其他工具无需个人批准即可使用,请使用:

    copilot --allow-tool='My-MCP-Server' --deny-tool='My-MCP-Server(tool_name)'
    

限制可用工具

若要限制 Copilot 为一组特定的工具,请使用 --available-tools。

此列表中未包含的工具将对Copilot不可用。

设置路径权限

路径权限控制哪些目录和文件 Copilot 可以访问。

默认情况下, Copilot CLI 可以访问当前工作目录、其子目录和系统临时目录。

路径权限适用于 shell 命令、文件作(创建、编辑、查看)和搜索工具(例如 grep 和 glob 模式)。 对于 shell 命令,路径通过对命令文本进行标记化并识别看起来像路径的标记来启发式提取。

警告

shell 命令的路径检测有限制:

  • 可能无法检测到嵌入在复杂 shell 构造中的路径。
  • 只有一组特定的环境变量被扩展(HOME、 TMPDIR和 PWD类似)。 自定义变量(例如 $MY_PROJECT_DIR)不会展开,并且可能无法正确验证。
  • 符号链接会针对现有文件进行解析,但不会针对正在创建的文件进行解析。

允许访问所有路径

若要禁用路径验证并允许访问任何路径,请在启动--allow-all-paths时使用Copilot CLI选项。

禁止访问临时目录

若要禁止访问临时目录,请使用 --disallow-temp-dir。

设置 URL 权限

URL 权限控制哪些外部 URL Copilot 可以访问。 默认情况下,在授予访问权限之前,所有 URL 都需要审批。

URL 权限适用于 web_fetch 工具以及访问网络的特选 shell 命令列表(例如 curl,wget 和 fetch)。 对于 shell 命令,使用正则表达式模式提取 URL。

警告

shell 命令的 URL 检测有限制:

  • 不会检测到由命令读取的文件内容、配置文件或环境变量中的 URL。
  • 混淆 URL(例如拆分字符串或转义序列)可能无法被检测到。
  • HTTP 和 HTTPS 被视为不同的协议,需要单独审批。

可以为会话保留 URL 权限,也可以永久保留。

禁用 URL 验证

若要禁用 URL 验证,请使用 --allow-all-urls 此选项。

预先审批特定域名

若要预先批准特定域,请使用 --allow-url=DOMAIN。

  • 例如,--allow-url=github.com。

拒绝特定域

若要拒绝特定域,请使用 --deny-url=DOMAIN。

  • 例如,--deny-url=github.com。

允许所有工具、路径和 URL

若要允许所有工具、路径和 URL,请使用 --allow-all或其别名 --yolo。

此选项包括:

  • --allow-all-tools (跳过工具审批)。
  • --allow-all-paths (禁用路径验证)。
  • --allow-all-urls (禁用 URL 验证)。

在交互式会话期间,还可以使用 /permissions allow-all 斜杠命令或其别名 /allow-all 和 /yolo 启用所有权限。

注意

如果您拥有 Copilot Business 或 Copilot Enterprise 许可证,这些命令可能会被企业管理员阻止。

限制对文件的访问

各种 --allow-all... 选项使你无需决定是否允许 Copilot 访问各个工具、文件和 URL。 但是,使用它们会扩大 Copilot 执行你可能不希望它执行的操作的范围,例如,更改正在使用的存储库外部的文件。

若要缓解此风险,可以指示 CLI 将其命令置于沙盒中运行(本地沙盒化),也可以在云沙盒中运行整个 Copilot CLI 会话。 有关详细信息,请参阅 关于 GitHub Copilot 的本地沙盒 和 关于 GitHub Copilot 的云沙盒。

禁用客户端遥测

若要禁用当前调用的第一方客户端遥测,请使用Copilot CLI选项启动--disable-client-telemetry:

copilot --disable-client-telemetry

此选项禁用 CLI 发送的第一方遥测,包括不受限制和受限的遥测。 它未保存在您的配置中。

此选项不会禁用 GitHub 对会话数据或遥测进行的服务器端收集。 它还不会影响:

  • 由你或你的企业配置的 OpenTelemetry 导出的数据。
  • 当应用程序在连接到 CLI 时显式启用遥测转发时,会将遥测数据发送到使用 Copilot SDK 的应用程序。

延伸阅读