Appearance
GitHub Copilot CLI 默认要求你在运行时批准每个工具调用,你可以通过配置白名单/黑名单来减少频繁的交互确认,也可以用 --allow-all 在可信环境中一键开放所有权限。本页介绍完整的权限配置方案。
GitHub Copilot CLI 权限配置:工具、路径和 URL 的精细控制
信任目录
首次在某个目录运行 Copilot CLI 时,会询问是否信任当前目录:
- 仅本次会话信任
- 永久信任(当前目录及所有子目录)
选择永久信任后,该目录会被写入 ~/.copilot/settings.json(Windows 路径:$HOME\.copilot\settings.json)的 trusted_folders 数组。
后续可以直接编辑这个文件来管理信任目录列表。通过设置 COPILOT_HOME 环境变量可以更改配置文件路径。
工具权限控制
初次使用某工具时的交互提示
当 Copilot 尝试调用一个新工具(如 touch、chmod、node、git)时,会出现提示:
| 选项 | 效果 |
|---|---|
| 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_fetch 或 curl 等命令访问 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 中配置默认允许的工具列表,这样每次启动都会自动加载这些权限设置。