Skip to content

GitHub Copilot CLI 默认要求你在运行时批准每个工具调用,你可以通过配置白名单/黑名单来减少频繁的交互确认,也可以用 --allow-all 在可信环境中一键开放所有权限。本页介绍完整的权限配置方案。

GitHub Copilot CLI 权限配置:工具、路径和 URL 的精细控制

信任目录

首次在某个目录运行 Copilot CLI 时,会询问是否信任当前目录:

  • 仅本次会话信任
  • 永久信任(当前目录及所有子目录)

选择永久信任后,该目录会被写入 ~/.copilot/settings.json(Windows 路径:$HOME\.copilot\settings.json)的 trusted_folders 数组。

后续可以直接编辑这个文件来管理信任目录列表。通过设置 COPILOT_HOME 环境变量可以更改配置文件路径。

工具权限控制

初次使用某工具时的交互提示

当 Copilot 尝试调用一个新工具(如 touchchmodnodegit)时,会出现提示:

选项效果
Yes本次命令允许
Yes, and approve for rest of session本次会话内不再询问
No拒绝,并可以告诉 Copilot 改用其他方式

命令行参数控制工具权限

允许所有工具,无需逐个确认:

bash
copilot -p "回滚最后一次提交" --allow-all-tools

允许特定工具:

bash
copilot --allow-tool='shell'

拒绝特定工具:

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

同时允许和拒绝:

bash
copilot --allow-tool='shell' --deny-tool='shell(git push)' --deny-tool='shell(git force-push)'

工具类型语法

语法说明
shell所有 shell 命令
shell(git push)特定的 shell 命令
write文件写入/编辑
MCP_SERVER_NAME某个 MCP Server 的所有工具
MCP_SERVER_NAME(tool_name)某个 MCP Server 的特定工具

限制 Copilot 只能使用指定的工具集:

bash
copilot --available-tools='shell,write'

路径权限控制

Copilot CLI 默认只能访问:

  • 当前工作目录及其子目录
  • 系统临时目录

扩展或限制路径访问:

bash
# 允许访问所有路径(禁用路径校验)
copilot --allow-all-paths

# 禁止访问临时目录
copilot --disallow-temp-dir

注意:路径校验对 shell 命令的检测是启发式的,复杂的命令路径绕过情况可能无法完全覆盖。

URL 权限控制

默认情况下,Copilot 在通过 web_fetchcurl 等命令访问 URL 时会弹出确认提示。

跳过所有 URL 确认:

bash
copilot --allow-all-urls

允许特定域名:

bash
copilot --allow-url=github.com

拒绝特定域名:

bash
copilot --deny-url=external-service.com

一键开放所有权限

--allow-all(别名 --yolo)同时开放工具、路径和 URL 的所有权限:

bash
copilot --allow-all
# 等同于
copilot --yolo

相当于同时设置 --allow-all-tools --allow-all-paths --allow-all-urls

在交互模式下,也可以用 /allow-all/yolo 命令。

建议只在完全可信的环境下(如个人开发机、隔离的 CI 环境)使用 --allow-all,避免 Copilot 执行意外的危险操作。

常见问题

Q: --allow-all 适合在 CI/CD 中使用吗?

A: 可以,但要在隔离的 CI 环境中谨慎使用。建议只允许任务所需的具体工具(如 --allow-tool='shell(npm test)'),而不是无差别开放所有权限。

Q: 如何查看哪些工具已经被信任?

A: 查看 ~/.copilot/settings.json 文件,其中的 trusted_folders 和工具白名单配置都在这里。

Q: 能不能全局默认信任某些工具,而不是每次运行都加参数?

A: 可以在 settings.json 中配置默认允许的工具列表,这样每次启动都会自动加载这些权限设置。