跳至主要内容

允许和拒绝工具使用

控制 Copilot CLI 可使用的工具,以避免意外更改。

简介

Copilot CLI 使用多种工具帮助您完成任务。它可以执行 shell 命令、读取和写入文件、搜索代码库、获取网络内容,并将任务委托给专用的子代理。

虽然搜索、读取文件以及运行只读 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 指定的黑名单。

如果某个工具不在可用集合中,AI 模型将根本无法使用它,即使您通过 --allow-tool 选项指定了该工具。在未指定可用工具集合的交互会话中,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

示例

选项效果
--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_issuedelete_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 时自动应用这些选项,因为这样会使 Copilot 在每次使用 CLI 时都能在未得到您明确授权的情况下使用任何工具,可能导致意外后果。

重置权限

/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 需要额外权限,仍会再次提示您。

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.