除了以交互方式运行 Copilot CLI 外,还可以在单个命令中直接将提示传递到 CLI,而无需输入交互式会话。 这样,就可以在脚本、CI/CD 管道和自动化工作流中以编程方式使用 Copilot 。 有关详细信息,请参阅“以编程方式运行GitHub Copilot CLI”。
本文介绍以编程方式运行时 Copilot CLI 特别相关的命令行选项和环境变量。
若要查看可用选项的完整列表,请参阅 GitHub Copilot CLI 命令参考 或在终端中输入以下命令:
copilot help
copilot help
命令行选项
在以编程方式运行Copilot CLI时,有许多命令行选项特别有用。
| 选项 | 说明 |
|---|---|
-p PROMPT | 在非交互式模式下执行提示。 CLI 运行提示并在完成后退出。 |
-s | 取消统计信息和修饰,只输出代理的响应。 非常适合在脚本中通过管道传输输出。 |
--add-dir=DIRECTORY | 将目录添加到允许的路径列表。 这可以多次用于添加多个目录。 当代理需要读取/写入当前工作目录之外时非常有用。 |
--agent=AGENT | 指定要使用的值 custom agent 。 |
--allow-all(或 --yolo) | 允许 CLI 所有权限。 等效于 --allow-all-tools --allow-all-paths --allow-all-urls。 |
--allow-all-paths | 完全禁用文件路径验证。 不再需要路径限制时的更简单替代 --add-dir 方法。 |
--allow-all-tools | 允许每个工具在不需显式许可的情况下运行。 |
--allow-all-urls | 允许访问所有 URL,而无需为每个 URL 显式许可。 |
--allow-tool=TOOL ... | 选择性地授予特定工具的权限。 对于多个工具,请使用带引号的逗号分隔列表。 |
--allow-url=URL ... | 允许代理提取特定的 URL 或域。 当工作流需要 Web 访问已知终结点时非常有用。 对于多个 URL,请使用带引号的逗号分隔列表。 |
--attachment=PATH ... | 将文件(图像或本机文档)附加到初始提示。 仅在非交互式模式下有效。 可以多次用于附加多个文件。 |
--available-tools=TOOL ... | 将模型限制为仅列出工具;所有其他工具都不可用。 用于严格界定代理在自动化工作流中可以执行的操作。 对于多个工具,请使用带引号的逗号分隔列表。 |
--deny-tool=TOOL ... | 拒绝特定工具。 可用于限制代理在锁定工作流中可以执行的操作。 对于多个工具,请使用带引号的逗号分隔列表。 |
--deny-url=URL ... | 拒绝访问特定 URL 或域。 优先于 --allow-url. 对于多个 URL,请使用带引号的逗号分隔列表。 |
--excluded-tools=TOOL ... | 从模型可用的工具中删除特定工具。 对于多个工具,请使用带引号的逗号分隔列表。 |
--fleet | 在机群模式下运行提示,因此 Copilot 使用并行子代理处理任务的各个部分。 将其与 -p 结合使用以进行非交互式自动化,与 -i 结合使用以进行交互式会话,或者使用通过管道传入的提示。 ACP 服务器模式不支持。 请参阅“使用 /fleet 命令加快任务完成速度”。 |
--model=MODEL | 选择 AI 模型(例如, gpt-5.4 或 claude-haiku-4.5)。 可用于在可重现的工作流中固定模型。 请参阅下面的 “选择模型 ”。 |
--no-ask-user | 阻止代理暂停以寻求其他用户输入。 |
--output-format=FORMAT | 设置输出格式: text (默认值)或 json。 使用 json 时,CLI 会输出 JSONL(每行一个 JSON 对象),便于在脚本中解析代理的输出。 |
--secret-env-vars=VAR ... | 一个环境变量,其值需要在输出中被隐藏。 对于多个变量,请使用带引号的逗号分隔列表。 防止机密在日志中被公开至关重要。 默认情况下,环境变量GITHUB_TOKEN``COPILOT_中的值会被隐藏。 |
--share=PATH | 在以非交互方式完成后将会话记录导出为 Markdown 文件(默认为 ./)。 可用于审核或存档代理执行的操作。 请注意,会话脚本可能包含敏感信息。 |
--share-gist | 完成后将会话记录发布为机密 GitHub gist。 方便共享 CI 产生的结果。 请注意,会话脚本可能包含敏感信息。 |
运行动态工作流
用于 copilot workflow run WORKFLOW-NAME 从脚本运行动态工作流。 若要了解动态工作流,请参阅 动态工作流。
用于 --args 内联 JSON 或带前缀的 @JSON 文件路径。 参数不是从标准输入读取的。
copilot workflow run WORKFLOW-NAME \ --args @workflow-input.json \ --silent --output-format json
copilot workflow run WORKFLOW-NAME \
--args @workflow-input.json \
--silent --output-format json
在运行命令之前配置身份验证并授予所需的工具权限。 共享选项,例如--model,--allow-tool``--allow-url和--add-dir应用。 该命令不显示权限审批提示。
-p、-i、--agent、--fleet、--autopilot、--resume 和 --continue 等提示和会话模式选项不受 workflow run 支持。
项目扩展仅会从受信任的文件夹中加载,或在明确启用后加载。 在自动化中,GITHUB_COPILOT_PROMPT_MODE_EXTENSIONS=true 允许加载该次调用的项目扩展。 仅对信任的存储库代码启用此功能。 不授予工具权限。
有关所有特定于工作流的选项,请参阅 GitHub Copilot CLI 命令参考。
工作流输出
启用 --output-format json 时,标准输出采用 JSONL 格式。 当运行完成或停止时,最终记录包含以下字段。 添加 --silent 以禁止显示进度及其他事件记录。
| 领域 | 说明 |
|---|---|
type | 始终为 workflow.result。 |
data.name | 工作流名称。 |
data.run.runId | 运行标识符。 |
data.run.status | 最终运行状态:completed、、halted``paused或cancelled``error。 |
data.run.result | 返回的值(如有)。 提供时 --result-file 省略。 |
data.run.pause、data.run.reason、data.run.error、data.run.failure | 有关在可用时运行暂停或停止的原因的其他详细信息。 |
data.resultFile | 请求的结果文件路径,仅在成功写入结果文件后包含。 |
使用 --result-file PATH时,该文件仅包含返回的值作为 JSON。 暂停、失败或中断的运行不会替换现有结果文件。 已完成且未返回任何值的运行不会生成结果文件。
未完成的运行的错误和诊断将写入标准错误,即使在静默模式下也是如此。 工作流开始前发生错误,或执行过程中发生中断,都可能导致命令在未生成最终 JSON 记录的情况下终止。
工作流退出代码
| 退出代码 | Meaning |
|---|---|
0 | 工作流已成功完成,且所有请求的结果文件也已成功写入。 不返回任何值的工作流也可以在不创建结果文件的情况下成功完成。 |
1 | 运行未完成,包括暂停、停止运行、取消或失败的限制。 还用于常规命令错误,例如无效的命令行语法或未能保存结果。 |
2 | 找不到工作流,或者无法读取、分析为 JSON 或针对工作流接受的输入验证其参数。 |
130 | 命令被SIGINT``SIGTERM或按 Ctrl+C 中断。 |
在使用结果文件之前,请检查退出代码。 运行失败后,早期结果文件可能仍然存在。 设置为 data.run.status``completed “的最终记录”无法保证成功保存结果文件。
--allow-tool 选项的工具
您可以使用选项指定各种工具。
| 工具类型 | 它控制的内容 |
|---|---|
| shell | 执行 shell 命令。 |
| 写入 | 创建或修改文件。 |
| 读取 | 读取文件或目录。 |
| url | 从 URL 提取内容。 |
| 内存 | 将新事实存储到代理的永久性内存中。 这不会影响使用现有内存。 请参阅“关于GitHub Copilot内存”。 |
| MCP-SERVER | 从特定 MCP 服务器调用工具。 使用服务器配置的名称作为标识符,例如 github。 请参阅“为 GitHub Copilot CLI 添加 MCP 服务器”。 |
工具筛选器
使用shell、write、url和MCP服务器工具类型,您可以在括号中指定一个筛选器,以控制允许哪些特定工具。
| 工具类型 | 示例 | 示例的说明 |
|---|---|---|
| 命令行界面 | shell(git:*) | 允许所有 Git 子命令(如 git push、git status等)。 |
shell(npm test) | 允许精确命令 npm test。 | |
| 写 | write(.github/ | 允许 CLI 写入此特定路径。 |
write(README.md) | 允许 CLI 写入路径以 /README.md 结尾的任何文件。 | |
| url | url(https://docs.github.com/github.com) | 允许 CLI 访问 github.com 上的 HTTPS URL。 |
url(http:/ | 允许 CLI 使用显式协议和端口访问本地开发服务器。 | |
url(https://docs.github.com/%3Cwbr/%3E/%3Cwbr/%3E*.github.com) | 允许 CLI 访问任何 GitHub 子域(例如 api.github.com)。 | |
url(https://docs.github.com/%3Cwbr/%3E/%3Cwbr/%3Edocs.github.com/%3Cwbr/%3Ecopilot/%3Cwbr/%3E*) | 允许访问此站点的 Copilot 文档。 | |
| MCP-SERVER | github(create_issue) | 仅允许来自 create_issue MCP 服务器的 github 工具。 |
注意
仅支持 shell 通配符以匹配指定工具的所有子命令,并在 url 主机名开头匹配任何子域,或在路径末尾匹配任何路径后缀,如上表所示。
环境变量
可以使用环境变量在以编程方式运行时配置 CLI 行为的各个方面。 这对于在 CI/CD 工作流或其他自动化环境中设置配置特别有用,你可能不希望直接在命令行中指定某些选项。
| Variable | 说明 |
|---|---|
COPILOT_ALLOW_ALL | 设置为 true 以获得完全权限 |
COPILOT_MODEL | 设置模型(例如,gpt-5.4``claude-haiku-4.5) |
COPILOT_HOME | 设置 CLI 配置文件的目录(~/.copilot 默认情况下) |
COPILOT_AUTO_ | 设置为 false 禁用自动更新。 适用于需要固定 CLI 版本的 CI 和其他自动化环境。 |
COPILOT_GITHUB_ | 身份验证令牌(最高优先级) |
GH_TOKEN | 身份验证令牌(第二个优先级) |
GITHUB_TOKEN | 身份验证令牌(第三个优先级) |
GITHUB_COPILOT_ | 将其设置为 true,以允许项目扩展加载用于提示运行或直接工作流运行。 仅对信任的存储库代码使用此代码。 此操作不会授予工具权限。 |
有关环境变量 Copilot CLI的完整详细信息,请使用终端中的命令 copilot help environment 。
选择模型
在非交互模式下向Copilot CLI发送提示时,如果-s或--silent选项未使用,CLI 用于生成响应的模型会在响应输出中显示。
可以使用此选项 --model 来指定 CLI 应使用的 AI 模型。 这样,你可以选择最适合提示的模型、平衡速度、成本和功能等因素。
例如,对于简单的任务(例如解释某些代码或生成摘要),可以选择快速、低成本的模型,例如 Claude Haiku 模型:
copilot -p "What does this project do?" -s --model claude-haiku-4.5
copilot -p "What does this project do?" -s --model claude-haiku-4.5
对于需要更深层次推理(如调试或重构代码)的更复杂的任务,可以选择更强大的模型,例如 GPT Codex 模型:
copilot -p "Fix the race condition in the worker pool" \ --model gpt-5.3-codex \ --allow-tool='write, shell'
copilot -p "Fix the race condition in the worker pool" \
--model gpt-5.3-codex \
--allow-tool='write, shell'
注意
若要查看所有可用模型的模型字符串,请在 /model 交互式 Copilot CLI 会话中运行该命令。 有关模型和支持它们的客户端的完整列表,请参阅 GitHub Copilot中支持的 AI 模型。
或者,可以将环境变量设置为 COPILOT_MODEL 在 shell 会话期间指定模型。
若要跨 shell 会话保留模型选择,可以在 CLI 配置文件中设置 model 密钥。 此文件位于 ~/.copilot/settings.json(如果您已设置 $COPILOT_HOME/settings.json 环境变量,则位于 COPILOT_HOME)。 某些模型还允许你设置推理工作量级别,该级别控制模型在响应之前思考的时间。
{
"model": "gpt-5.3-codex",
"effortLevel": "low"
}
{
"model": "gpt-5.3-codex",
"effortLevel": "low"
}
提示
在配置文件中持久设置模型的最简单方法是在交互式会话中使用 /model 斜杠命令。 使用此命令所做的选择将写入配置文件。
模型优先级
确定要用于给定提示的模型时,CLI 会按以下优先级顺序检查模型规范(从最高到最低):
- 使用自定义代理的位置:自定义代理定义中指定的模型(如果有)。
--model命令行选项。COPILOT_MODEL环境变量。model配置文件中的键(~/.copilot/settings.json或$COPILOT_HOME/settings.json)。- CLI 的默认模型。
使用自定义代理
可以使用此选项 --agent 将工作委托给专用代理。 有关详细信息,请参阅“为 GitHub Copilot CLI 创建和使用自定义智能体”。
在此示例中, code-review 使用代理。 这要求已使用此名称创建自定义代理。
copilot -p "Review the latest commit" \
--allow-tool='shell' \
--agent code-review