Skip to main content

配置 GitHub Copilot CLI

为 Copilot 命令行界面(CLI) 配置受信任目录、工具访问权限以及路径和 URL 权限

介绍

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

本文介绍如何设置受信任的目录、配置工具的访问权限,以及向文件路径和 URL 授予权限。

先决条件

设置受信任的目录

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

选择信任目录

启动 GitHub Copilot 命令行界面 (CLI) 会话时,系统会要求你确认是否信任从其启动 CLI 的目录及其子目录中的文件。

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

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

如果选择信任目录以供将来的会话使用,则将不再显示受信任的目录提示。 只有当你确定该位置始终是 Copilot 安全运行的环境时,才应选择第二个选项。

编辑受信任的目录

可以编辑永久受信任的目录的列表。

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

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

可以通过设置 COPILOT_HOME 环境变量来更改配置位置。

  1. 编辑 trusted_folders 数组的内容。

设置允许的工具

您可以控制 Copilot 命令行界面(CLI) 能使用哪些工具,方法是在 Copilot 尝试使用工具时响应审批提示,或通过命令行标志指定权限。

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

本部分您可以了解如何:

  •         [首次允许使用工具](#allowing-a-tool-for-the-first-time)
    
  •         [允许在不手动批准的情况下使用工具](#allowing-tools-to-be-used-without-manual-approval)
    
  •         [指定要允许或拒绝的工具](#specifying-which-tool-you-want-to-allow-or-deny)
    
  •         [允许某些工具,同时拒绝其他工具](#allowing-some-tools-while-denying-others)
    
  •         [限制可用工具](#limiting-available-tools)
    

首次允许工具

当 Copilot 首次需要使用可能需要批准的工具时 — 例如,例如 touchchmodnodesed,它会询问你是否允许其运行。 是否提示可能取决于工具及其使用方式,例如所提供的参数或工具是否已获得批准。

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

    copilot -p "Create a new file called README.md with a project description"
    
  2. 从以下三个选项之一中进行选择:

    • 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 无需征求你的批准即可使用的工具。

允许所有工具

使用 --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 命令](#allowing-or-denying-shell-commands)
    
  •         [“写入”工具](#allowing-or-denying-write-tools)
    
  •         [MCP 服务器工具](#allowing-or-denying-mcp-server-tools)
    

允许或拒绝 shell 命令

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

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

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

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

  • 例如,要阻止 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 的 MCP 服务器中的名为 My-MCP-Server 的工具,请使用:

    copilot --deny-tool='My-MCP-Server(tool_name)'
    
            `MCP_SERVER_NAME` 是已配置的 MCP 服务器的名称。
    

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

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

你可以通过在 Copilot 命令行界面(CLI) 的交互模式中输入 /mcp,然后从显示的列表中选择服务器,来查找 MCP 服务器的名称。

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

要准确确定 Copilot 无需征求你的批准即可使用的工具,你可以组合使用多个批准选项。 例如:

  • 要阻止 Copilot 使用 rmgit 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 构造中的路径。
  • 只有一组特定的环境变量被扩展(HOMETMPDIRPWD类似)。 自定义变量(例如 $MY_PROJECT_DIR)不会展开,并且可能无法正确验证。
  • 符号链接会针对现有文件进行解析,但不会针对正在创建的文件进行解析。

允许访问所有路径

若要禁用路径验证并允许访问任何路径,请在启动 Copilot 命令行界面(CLI)时使用 --allow-all-paths 标志。

禁止访问临时目录

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

设置 URL 权限

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

URL 权限适用于 web_fetch 工具以及访问网络的特选 shell 命令列表(例如 curlwgetfetch)。 对于 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 验证)。

提示

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

后续步骤

  •         [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot)