简介
Copilot CLI 有多个配置选项,用于控制它可以代表您访问和执行的内容。
本文档展示了如何设置受信任目录、配置工具访问以及授予文件路径和 URL 的权限。
先决条件
- 安装 Copilot CLI。参见 安装 GitHub Copilot CLI。
设置受信任目录
受信任目录决定 Copilot CLI 可以读取、修改和执行文件的范围。信任目录会带来安全风险,详见 安全注意事项。
选择信任目录
启动 GitHub Copilot CLI 会话时,系统会提示您确认是否信任您启动 CLI 时所在的目录以及以下列出的文件。
您可以将当前目录设为信任对象,方式有:
- 仅当前会话有效
- 此后所有会话均有效
如果您选择对未来会话信任该目录,则以后不再显示受信任目录提示。仅当您确信该位置始终是 Copilot 安全运行的场所时才应选择此选项。
编辑受信任目录
您可以编辑永久受信任目录的列表。
-
打开 CLI 的
config.json文件。默认情况下,它位于用户主目录下的.copilot文件夹中。- macOS/Linux:
~/.copilot/config.json - Windows:
$HOME\.copilot\config.json
- macOS/Linux:
您也可以通过设置 COPILOT_HOME 环境变量来更改配置文件的位置。
- 编辑
trusted_folders数组的内容。
设置允许的工具
您可以通过在 Copilot 试图使用工具时响应批准提示,或在命令行中使用标志来指定权限,从而控制 Copilot CLI 可使用的工具。
请注意,允许工具访问会带来安全风险,详见 安全注意事项。
本节您将学习如何:
首次允许使用工具
当 Copilot 第一次需要使用可能需要批准的工具时(例如 touch、chmod、node 或 sed),它会询问您是否允许其运行。是否出现提示取决于具体工具以及使用方式(例如提供的参数或该工具是否已被先前批准)。
-
提示 Copilot 执行需要工具的任务。例如:
copilot -p "Create a new file called README.md with a project description" -
从以下三项中选择:
-
1. 是选择此项仅在本次运行中允许 Copilot 执行该命令。下次需要使用此工具时,仍会再次提示。
-
2. 是,并在当前运行会话的其余时间内批准该 TOOL选择此项后,Copilot 在当前会话期间可自由使用该工具。新会话或以后恢复当前会话时仍会再次请求批准。若选此项,即表示您允许 Copilot 以其认定的任何方式使用该工具。
例如,若 Copilot 请求您允许执行
rm ./this-file.txt,且您选择了选项 2,则在本次会话期间,Copilot 可以执行任意rm命令(例如rm -rf ./*),而无需再次确认。 -
3. 否,并告诉 Copilot 采用其他方式(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 命令
使用 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 使用位于名为
My-MCP-Server的 MCP 服务器上的tool_name工具,可写成:copilot --deny-tool='My-MCP-Server(tool_name)'
MCP_SERVER_NAME 为您已配置的 MCP 服务器名称。
服务器上的工具需在括号内使用该 MCP 服务器注册的工具名称来指定。
仅提供服务器名称而不指定工具,即表示对该服务器的所有工具进行统一允许或拒绝。
您可以在 Copilot CLI 交互模式下输入 /mcp,然后从显示的列表中选择相应服务器,以查看其名称。
在允许某些工具的同时拒绝其他工具
若要精确控制 Copilot 在不询问您的情况下可以使用哪些工具,可组合使用多种批准选项。例如:
-
要阻止 Copilot 使用
rm与git push命令,但自动允许所有其他工具,可写成:copilot --allow-all-tools --deny-tool='shell(rm)' --deny-tool='shell(git push)' -
要阻止 Copilot 使用位于
My-MCP-Server的tool_name工具,但允许该服务器的其他工具在无需单独批准的情况下使用,可写成:copilot --allow-tool='My-MCP-Server' --deny-tool='My-MCP-Server(tool_name)'
限制可用工具集合
若要将 Copilot 限制为只能使用特定工具集合,请使用 --available-tools。
不在此列表中的工具将不可供 Copilot 使用。
设置路径权限
路径权限决定 Copilot 能访问的目录和文件。
默认情况下,Copilot CLI 可以访问当前工作目录、其子目录以及系统临时目录。
路径权限适用于 Shell 命令、文件操作(创建、编辑、查看)以及搜索工具(如 grep 和 glob 模式)。对于 Shell 命令,路径会通过对命令文本进行分词并识别看似路径的 token 来进行启发式提取。
警告
Shell 命令的路径检测存在局限性
- 复杂的 Shell 构造中嵌入的路径可能未被检测到。
- 仅会展开特定的环境变量(
HOME、TMPDIR、PWD等)。自定义变量如$MY_PROJECT_DIR不会被展开,且可能无法正确验证。 - 符号链接会在已存在的文件上进行解析,但不会在正在创建的文件上解析。
允许访问所有路径
若要关闭路径校验并允许访问任意路径,请在启动 Copilot CLI 时使用 --allow-all-paths 标志。
禁用对临时目录的访问
若要阻止访问临时目录,请使用 --disallow-temp-dir。
设置 URL 权限
URL 权限决定 Copilot 能访问的外部 URL。默认情况下,所有 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 校验)。
提示
在交互会话期间,您也可以使用 /allow-all 或 /yolo 斜杠命令一次性开启全部权限。