介绍
Copilot 命令行界面(CLI) 使用各种工具为你完成任务。 它可以执行 shell 命令、读取和写入文件、搜索代码库、提取 Web 内容并将任务委托给专用子代理。
虽然可以自动执行只读操作(如搜索、读取文件和运行只读 shell 命令),但像运行破坏性 shell 命令、编辑文件或访问 URL 等能够修改系统的工具,需要在 Copilot 使用之前得到您的明确批准。 这有助于避免使用 CLI 导致你不打算进行的更改,例如,shell 命令可以执行用户帐户可以执行的任何操作:安装包、删除文件、推送代码或发出网络请求。
可以在启动 CLI 或交互式会话期间允许或拒绝工具的权限。 如果在启动会话之前未授予权限,Copilot 命令行界面(CLI) 每次需要执行可能具有破坏性的操作时,会提示你确认权限。 可以选择允许该工具使用一次或整个会话期间使用。
工具控制的层次
在命令行选项中指定工具权限时,可以使用两层控制。 您可以:
- 限制可用于 AI 模型的工具选择。
- 允许或拒绝特定工具的权限。
限制可用于 AI 模型的工具选择
和--available-tools``--excluded-tools选项限制 AI 模型知道的工具集,因此可以在确定如何完成任务时从中进行选择。
-
`--available-tools` 禁用除指定工具以外的所有工具。 -
`--excluded-tools` 仅禁用指定的工具。
如果将这两个选项一起使用,CLI 将应用指定的 --available-tools 允许列表并忽略指定的 --excluded-tools拒绝列表。
如果工具不在可用集中,则即使使用选项指定它 --allow-tool ,AI 模型也无法使用它。 在未指定可用工具集的交互式会话中,AI 模型可能会尝试使用工具,但只能拒绝。
--available-tools和--excluded-tools选项可以防止你以这种方式浪费与模型的交互。
示例用例
你正在启动一个 CLI 会话来对你的项目进行性能基准测试,并想阻止 AI 模型甚至尝试进行网络搜索。
copilot --excluded-tools='web_fetch, web_search'
注意
有关本文中提到的这些和其他命令行选项语法的完整详细信息,请参阅 GitHub Copilot CLI 命令参考。
允许或拒绝特定工具的使用权限
和--allow-tool``--deny-tool选项允许或拒绝特定工具或工具子命令的权限。
每个选项的值都是一个逗号分隔的工具类型列表,可以选择指定确切的工具和子命令模式。
如果使用指定工具 --allow-tool,AI 模型可以选择使用该工具,而无需提示你提供权限。 如果指定了一个工具 --deny-tool,则 AI 模型根本无法使用该工具,即使它是完成任务的最佳选择。
即使设置了拒绝规则, --allow-all 拒绝规则始终优先于允许规则。
示例
| 选项 | Effect |
|---|---|
--allow-tool=shell | 允许所有 shell 命令。 |
--allow-tool='shell(git commit)' | 允许执行git commit命令。 |
--allow-tool='shell(git:*)' --deny-tool='shell(git push)' | 允许所有git命令,除git push以外。 |
--deny-tool=write | 拒绝所有文件写入操作。 |
--allow-tool='read, write(.github/copilot-instructions.md)' | 允许所有读取操作,并允许对特定文件执行写入操作。 |
--allow-tool='MyMCP(create_issue), MyMCP(delete_issue)' | 允许来自MyMCP MCP 服务器的create_issue和delete_issue工具。 |
--available-tools='bash,edit,view,grep,glob' --allow-tool='shell(git:*)' --deny-tool='shell(git push)' | 合并受限 CLI 会话的这两个控制层。 Copilot 可以浏览代码、进行编辑和提交更改,但无法访问互联网、运行任意子代理程序或推送到 Git 历史。 |
有关支持的工具类型的详细信息,请参阅 GitHub Copilot CLI 命令参考。
宽松选项
以下命令行选项授予 Copilot 命令行界面(CLI) 使用所有可用工具的权限。
-
`--allow-all-tools` — 对可用工具的完全访问权限。 -
`--allow-all`或 `--yolo` — 等效于在启动 CLI 时使用所有`--allow-all-tools`和`--allow-all-paths``--allow-all-urls`选项。在交互式会话中,可以使用
/allow-all斜杠命令/yolo来启用所有工具,而无需重启会话。注意
强烈建议仅在独立环境中使用这些选项。 每次启动 Copilot 命令行界面(CLI) 时,不应该用别名来应用这些选项之一,因为如果这样用,每次使用 CLI 时,Copilot 在未经明确授权下可使用任何工具,这可能造成意想不到的后果。
重置权限
`/reset-allowed-tools`斜杠命令撤销在当前交互式会话期间授予的所有权限。 这同样适用于通过响应提示信息授予的权限,以及使用 `/allow-all` 或 `/yolo` 斜杠命令。
使用 /reset-allowed-tools 可以将权限重置为默认值,或者根据启动 Copilot 命令行界面(CLI) 时所用命令行选项的定义重置为相应状态。 例如,如果使用选项 --allow-tool='shell(git:*)'启动 Copilot 命令行界面(CLI) 互动式会话,然后在会话期间根据提示响应来允许和拒绝进一步授权,则在使用 /reset-allowed-tools 命令时,CLI 的权限将返回到原始 --allow-tool='shell(git:*)' 状态,不允许或拒绝其他新的授权。 继续在会话中工作时,如果 Copilot 需要其他权限,系统会再次提示你。
延伸阅读
-
[AUTOTITLE](/copilot/how-tos/copilot-cli/cli-best-practices#configure-allowed-tools) -
[AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference)