Skip to main content

GitHub Copilot CLI 命令参考

查找有助于有效使用的 Copilot CLI 命令和键盘快捷方式。

命令行命令

命令Purpose
copilot启动交互式用户界面。
copilot app打开当前目录中的 GitHub Copilot app,并通过深层链接直接进入新会话。 如果深度链接无法处理,则改为在浏览器中打开该应用的下载页面;如果没有可用的浏览器,则输出该 URL 以供手动打开。
copilot completion SHELL生成一份适用于所选 Shell 的 shell 脚本,你可以利用该脚本来为 Copilot CLI 启用 Tab 键补全功能。 支持的 shell: bashzshfish。 请参阅使用 copilot completion
copilot help [TOPIC]显示帮助信息。 帮助主题包括:billingconfigcommandsenvironmentloggingmonitoringpermissionsproviderssandbox
copilot init初始化 Copilot 此存储库的自定义说明。
copilot login [OPTION]使用 OAuth 通过 Copilot 进行身份验证。 请参阅 copilot login 选项
copilot mcp从命令行管理 MCP 服务器配置。
copilot plugin管理插件和插件市场。
copilot plugins list以非交互方式检查在当前工作目录中发现的每个插件、MCP 服务器、技能、指令源和语言服务器。 请参阅使用 copilot plugins list
copilot skill从命令行管理代理技能(列出、添加和删除技能)。 请参阅“为 GitHub Copilot CLI 添加代理技能”。
copilot update下载并安装最新版本。
copilot version显示版本信息并检查更新。

copilot login 选项

选项Purpose
--host HOST
GitHub 主机 URL (默认值: https://github.com) 。 使用此方法向使用数据驻留(例如 GitHub Enterprise Cloud)的 https://example.ghe.com 实例进行身份验证。
--web-flow强制基于浏览器的 (Web) 身份验证流,这是本地终端上的默认值。
--device-code强制使用 OAuth 设备代码流程,该流程在远程终端或 CI 中默认使用。
--with-token从标准输入读取身份验证令牌,而不是启动 OAuth 流。 当标准输入为终端时,提示符不会回显输入内容。 与 --web-flow--device-code.

在本地终端或仍可访问浏览器的非 TTY 本地进程(例如,具有显示或浏览器信号的桌面 OS 或 Linux)上,默认身份验证模式是基于浏览器的 Web 流:CLI 将打开浏览器进行授权,然后在本地环回回调上捕获结果。 在远程终端(例如 SSH、 GitHub Codespaces开发容器)或 CI 中,CLI 默认为 OAuth 设备代码流,因为浏览器通常无法访问环回端口。 使用 --web-flow--device-code 替代自动选择的流。

完成后,身份验证令牌安全地存储在系统凭据存储中。 如果未找到凭据存储,令牌将存储在 ~/.copilot/ 下的纯文本配置文件中(如果已设置,则存储在 COPILOT_HOME 指定的目录下)。

或者, Copilot CLI 将使用在环境变量中找到的身份验证令牌。 以下项按优先级顺序进行检查: COPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN 此方法最适合无外设使用,例如自动化。

支持的令牌类型包括具有“Copilot 请求”权限的 fine-grained personal access tokens (v2 PATs),Copilot CLI 应用中的 OAuth 令牌,以及 GitHub CLI (gh) 应用中的 OAuth 令牌。 不支持经典 personal access tokens (ghp_)。

示例:

# Authenticate with github.com
copilot login

# Authenticate with GitHub Enterprise Cloud (data residency)
copilot login --host https://example.ghe.com

# Force the device code flow, for example on a remote terminal
copilot login --device-code

# Force the browser (web) flow, for example on a local terminal
copilot login --web-flow

# Read a token from standard input, bypassing the OAuth flow entirely
copilot login --with-token < mytoken.txt

# Use a fine-grained PAT via environment variable
COPILOT_GITHUB_TOKEN=github_pat_... copilot

使用 copilot completion

该命令 copilot completion SHELL 输出指定 shell(bash、zsh 或 fish)的脚本。

通过执行该脚本(或将其写入 shell 的补全目录),即可在终端中为 copilot 的子命令、命令选项以及命令选项的已知取值,启用 Tab 键自动补全功能。

用法示例

Bash (仅限当前会话):

Bash
source <(copilot completion bash)

Bash (持久性,Linux):

Bash
copilot completion bash | sudo tee /etc/bash_completion.d/copilot

Zsh — 将输出写入 $fpath 路径中的一个目录。 运行此命令后重启 shell:

Shell
copilot completion zsh > "${fpath[1]}/_copilot"

鱼:

Shell
copilot completion fish > ~/.config/fish/completions/copilot.fish

使用 copilot plugins list

运行 copilot plugins list 来检查在当前工作目录中发现的每个插件、MCP 服务器、技能、指令源和语言服务器。 输出按类型分组,然后按配置范围(用户、存储库、组织、插件参与、内置或未知)分组。

# List everything for the current workspace
copilot plugins list

# Only MCP servers and skills
copilot plugins list --kind mcp --kind skill

# Only user-scoped resources, as JSON
copilot plugins list --scope user --json
选项说明
--kind KINDS按类型筛选。 可重复或逗号分隔:mcp、、skill``instructionplugin``lsp
--scope SCOPES按配置范围进行筛选。 可重复或逗号分离。
--json发出计算机可读 JSON,而不是分组文本。
--config-dir=DIRECTORY配置目录的路径。 此选项已弃用。 改用 COPILOT_HOME

自定义智能体和会话范围内的钩子不受 copilot plugins list 影响;两者均需要活跃的会话。

copilot plugins enable / copilot plugins disable

按名称启用或禁用插件、MCP 服务器或技能。 更改会保存到配置中,并在今后的会话中生效。

# Disable an MCP server
copilot plugins disable github --mcp

# Enable a skill
copilot plugins enable my-skill --skill

# Enable a plugin (default kind)
copilot plugins enable spark@copilot-plugins
选项说明
--plugin以插件为目标(默认)。
--mcp以 MCP 服务器为目标。
--skill以某项技能为目标。
--config-dir=DIRECTORY配置目录的路径。 此选项已弃用。 改用 COPILOT_HOME

指令仅在会话范围内有效,无法通过这些命令进行切换。 语言服务器、代理和钩子由别处管理。

copilot plugins remove

卸载插件、删除 MCP 服务器或按名称删除技能。

# Remove an MCP server
copilot plugins remove github --mcp

# Delete a personal or project skill
copilot plugins remove my-skill --skill

# Uninstall a plugin (default kind)
copilot plugins remove spark@copilot-plugins
选项说明
--plugin删除插件(默认值)。
--mcp删除 MCP 服务器。
--skill删除个人或项目技能。
--config-dir=DIRECTORY配置目录的路径。 此选项已弃用。 改用 COPILOT_HOME

使用 --skill 传递技能名称或指向添加的自定义技能目录的路径。 技能名称删除该技能的文件;自定义目录路径仅取消注册目录并将其文件保留在磁盘上。 只能删除你添加的个人和项目技能 -- 插件提供的技能或内置集不能以这种方式删除(改为禁用它们)。 指令源从磁盘中发现,无法在此处删除。

会话侧边栏

会话侧边栏是一个停靠在当前对话旁边的面板,可让你快速处理本地 GitHub Copilot CLI 会话。

当边栏具有焦点时,可以使用以下键盘快捷方式。

ShortcutPurpose
在对话中,打开侧边栏并将焦点移入其中(Vim:h)。
将焦点移回对话;再次按关闭边栏 (Vim: l) 。
/在侧边栏中切换会话(也可使用 k/j)。
输入打开所选会话并将焦点返回到对话。
n启动新会话。
x 两次关闭所选会话。
然后 按 Tab从会话列表顶部, 移动到标题按钮( 关闭边栏, + 新会话)。 按 Tab 键可在它们之间切换。
?显示侧边栏帮助。

侧边栏还会响应鼠标操作。

手势Purpose
单击会话切换到该会话并返回对话。
双击该会话切换到该会话并停留在侧边栏中。
拖动分隔符调整边栏的大小。
将鼠标悬停在侧边栏上并滚动滚动会话列表。
单击标题按钮
关闭边栏, + 以启动新会话。
将鼠标悬停在会话右侧显示关闭按钮(需要 sidebar.showCloseButton)。

会话状态指示器

侧边栏中的每个会话都会显示其当前状态指示器。

指示器Meaning
稳定正在运行但处于空闲状态的会话——等待你的下一步输入。
脉动正在运行的会话。 智能体当前正在处理一轮对话。
!会话需要权限才能继续。
?当前会话正在等待你的提问或选择。
可恢复会话 - 已保存,但当前未运行。

默认 CLI 聊天模式下会话的文本使用默认文本颜色。 在计划模式和 autopilot 模式下使用不同的颜色。

会话边栏设置

/settings sidebar使用交互式 CLI 会话中的斜杠命令调整会话边栏的这些设置。

设置说明默认
sidebar.enabled允许显示会话边栏。开启
sidebar.showResumableSessions侧边栏包含你可以继续的先前会话。 当设置为 off 时,仅列出活动会话。 对此设置所做的更改将在下次启动 Copilot CLI 时生效。开启
sidebar.showHeaderButtons显示侧边栏顶部的一排按钮,用于折叠侧边栏()并开始新会话(+)。开启
sidebar.showCloseButton作为单击 X 的替代方法,将鼠标悬停在侧栏中会话右侧会显示 关闭会话 按钮。 单击此项,然后再次单击以确认。 正在运行的会话将被结束、保存,并从侧边栏中移除。 未在运行的会话会直接从侧边栏中移除。 以这种方式移除的会话在之后的会话中不会显示在侧边栏中,除非你恢复该会话,例如通过 >/resume 会话选择器。关闭
sidebar.hoverFocus焦点根据鼠标指针的位置从主 CLI 选项卡更改为边栏。关闭
sidebar.coloredHints当边栏打开且当前对话处于聚焦状态时,以边栏的强调色显示使用边栏提示,以吸引用户注意。 关闭时,将使用与其他提示相同的颜色。 关闭边栏时,始终使用与其他提示相同的颜色。开启
sidebar.accentActiveSession更改侧栏中突出显示的会话选择。 开启后,你当前对话中打开的会话将被重点高亮显示。 处于关闭状态时,通过键盘的上、下箭头键(或鼠标)选中的会话将获得主要高亮显示。开启

有关会话边栏的详细信息,请参阅 使用多个 GitHub Copilot CLI 会话

交互式界面中的全局快捷方式

ShortcutPurpose
@ FILENAME将文件内容包含在上下文中。
# NUMBER在上下文中包含 GitHub 问题或拉取请求。
! COMMAND在本地 shell 中执行命令,绕过 Copilot。 在空提示符下单独输入 ! ,以按顺序输入运行多个 shell 命令的 shell 模式。 在空提示符上按 EscCtrl+C 退出 shell 模式。
$在提示符处单独输入 $,然后按 Enter,即可将终端切换到真正的交互式 shell(Unix 上为 $SHELL,Windows 上为 %COMSPEC%),并以会话的工作目录作为当前工作目录。 与 ! 壳模式不同,此模式会完全暂停 CLI 用户界面,因此任务控制、全屏应用、标签补全和颜色功能均可原生运行。 退出 shell(exit或 Unix 上的 Ctrl+D )以返回到 CLI。 仅在真实的 TTY 上针对本地、受信任且空闲的会话生效。 可以在企业托管设置中禁用。 默认启用。 使用 shellShortcut 设置禁用它 - 请参阅 GitHub Copilot CLI 配置目录
?打开快速帮助(在空白提示中)。 再次按下可取消并插入字面值 ?
Esc取消当前操作。 双按即可中断当前运行中的回合,或在主代理空闲时停止后台代理。
Ctrl+C取消操作/清除输入。 按两次退出。
Ctrl+D关闭。
Ctrl+G在外部编辑器中编辑提示($EDITOR)。
Ctrl+L清除屏幕。
Ctrl+EnterCtrl+Q将消息排队,以在智能体繁忙时发送。
Ctrl+R反向搜索命令历史记录。
Ctrl+空格开启或关闭语音输入(即 Ctrl+X 然后 v 的别名)。 只有在终端和操作系统都能将其透传时,这才会起作用。 可能需要在 OS 或终端密钥绑定中释放此值。 可改用 v+,然后
Ctrl+V从剪贴板粘贴为附件。
AltV将剪贴板中的图像粘贴为附件。
Ctrl+然后 X/开始键入提示后,这样就可以运行斜杠命令,例如,如果要更改模型,而无需重新键入提示。
Ctrl+然后 Xe在外部编辑器中编辑提示($EDITOR)。
Ctrl+然后 Xb将正在运行的任务或 shell 命令提升到后台。
Ctrl+然后 Xg折叠或展开自动驾驶目标面板。
Ctrl+然后 Xo从时间线打开最新的链接。
Ctrl+然后 Xv打开或关闭语音听写。
Ctrl+Z将进程挂起到后台 (Unix)。
Shift+EnterOption+Enter (Mac) / Alt+Enter (Windows/Linux)在输入中插入换行符。
Shift键+Tab键在标准模式、计划和 Autopilot 模式之间循环。

在本地会话中,您可以将提示词、Shell 命令和受支持的斜杠命令加入队列,以便在当前任务完成后按顺序运行。 按 Ctrl+Q 在代理运行时将当前输入排入队列。 已排队的条目会显示“待处理”标签,并可在运行前逐个取消。

交互式界面中的时间线快捷方式

ShortcutPurpose
Ctrl+F打开时间线搜索。
Ctrl+O虽然提示输入中没有任何内容,但这会扩展 Copilot 回复时间线中的最近项目以显示更多详细信息。
Ctrl+E虽然提示输入中没有任何内容,但这会展开Copilot的响应时间轴中的所有项。
Ctrl+T在响应中展开/折叠推理显示。
向上翻页/向下翻页将当前时间线视图向上或向下翻动一页。

任务对话框快捷方式

当任务对话框打开时(通过 /tasks 打开):

ShortcutPurpose
/K将所选内容上移。
/J向下移动所选内容。
输入查看任务详情,或“传送”至所选子智能体的会话视图中。
a切换显示所有嵌套子代理层级,或仅显示当前层级的任务。
f切换是否显示已完成的子智能体和 shell,而不仅限于活动中的。
X终止所选的活动任务。
R删除所选已完成的任务。
B将所选同步任务转为后台运行。
Esc关闭对话框(或返回列表)。

会生成自身嵌套子智能体的子智能体将以缩进树形结构显示;您传送到的行将高亮显示为“当前”。 在深入查看子智能体视图时,您可以像对主会话一样,通过编辑器向其发送控制消息。

会话选取器快捷方式

会话选择器打开时(通过 /resume--continue 打开):

ShortcutPurpose
/向上或向下移动所选内容。
输入打开所选会话。
s在以下排序顺序中循环:相关性→创建时间→名称→上次使用。
Tab在本地选项卡和远程选项卡之间切换。
x删除所选会话。
Esc关闭选取器。

会话按以下模式排序:

模式说明
relevance根据与当前工作目录的匹配度对会话进行排序(默认)。
last used最近修改的会话优先。
created最近创建的会话优先。
name按会话名称按字母顺序排列;未命名的会话将排序到末尾。

已在另一个窗口中打开的会话在所有非相关性排序模式下浮动到顶部。 当没有工作目录上下文可用时,将跳过 relevance 模式。

差异模式快捷键

当打开差异模式时(通过 /diff 进入):

ShortcutPurpose
/ k将所选内容向上移动一行。
/ j将所选内容向下移动一行。
/ h跳转到上一个文件。
/ l跳转到下一个文件。
/ g跳到第一行。
结束 / G跳到最后一行。
向上翻页向上滚动一页。
向下翻页向下滚动一页。
Ctrl+U向上滚动半页。
Ctrl+D向下滚动半页。
Click选择点击的差异行(需要鼠标支持)。
鼠标滚动向上或向下滚动。
Alt/Option+滚动每次滚动一行,以实现更精细的控制。
c在所选行上添加或编辑批注。
s显示批注摘要(当存在批注时)。
b在未暂存更改和分支差异之间切换。
w切换是否隐藏仅空白字符的更改。
输入提交所有注释(如果存在批注)。
r刷新差异(仅限远程会话)。
Esc / Ctrl+C退出差异模式。
ShortcutPurpose
Ctrl+A移动到行首(输入时)。
Ctrl+B移到上一个字符。
Ctrl+E移动到行的末尾(键入时)。
Ctrl+F移动到下一个字符。
Ctrl+H删除上一个字符。
Ctrl+K从光标删除到行尾。 如果光标位于行的末尾,请删除换行符。
Ctrl+U从光标删除到行首。
Ctrl+W删除上一个单词。
主页跳转至当前可视化行首。
结束跳转至当前可视化行尾。
Ctrl+主页移动到文本的开头。
Ctrl+结束移动到文本的末尾。
Alt+/ (Windows/Linux)
选项+/ (Mac)按单词移动光标。
/浏览命令历史。
Tab键 / Ctrl+Y接受当前的内联补全建议。

交互式接口中的斜杠命令

这些是在交互式 CLI 会话中可以使用的斜杠命令。 这些斜杠命令的子集可供通过其 ACP 服务器使用 CLI 的客户端使用。 有关详细信息,请参阅“Copilot CLI ACP 服务器”。

命令Purpose
/add-dir PATH允许访问某个目录,并将其.github/skills.github/agents加载为受信任配置。
/after [DELAY PROMPT]/after为当前会话安排一个仅执行一次的提示、技能或可安排执行的斜杠命令(例如 /after 30m remind me the time/after 1h /chronicle standup)。 在没有参数的情况下,将显示计划管理器。 仅在实验模式下可用。
/agent浏览并选择可用代理(如果有)。 请参阅“关于自定义代理”。
/app在 GitHub Copilot app 中打开当前会话(需要 1.1.3 或更高版本),如果未安装该应用,则显示下载链接。
/ask QUESTION在不添加到对话历史记录的情况下提出一个快速的附带问题。
/allow-all [off|auto|show]/yolo [off|auto|show]启用所有权限(工具、路径和 URL)。 这是 /permissions allow-all 的别名;请参阅 /permissions 所在的行,了解其规范命令及其子命令。
/autopilot [OBJECTIVE]/goal [OBJECTIVE]启动或重新聚焦自动驾驶模式,并可选择指定明确目标(例如,/goal Refactor the auth module)。 如果没有目标,Autopilot 会从上下文推断意向,状态面板将显示最后一个提示作为推断目标。 您可以使用 /goal Refactor the auth module --max-ai-credits 5 为目标设置 AI 积分支出上限(例如,--max-ai-credits N)。 达到上限后,Autopilot 会暂停并打开一个面板,报告针对上限使用的信用额度。 输入新金额以使用新的信用额度窗口恢复,或关闭面板以保持暂停状态。 还可以自行恢复暂停的目标,而无需面板,方法是自行运行选项,而不使用客观文本,例如 /goal --max-ai-credits 5。 这与面板执行的操作相同:它会打开一个新的窗口,其中包含您指定的积分(完整的新的上限,而非增量),并继续执行目标。
/goal on/goal off 用于切换自动驾驶模式,无需设置目标,且不支持 --max-ai-credits。 活动目标呈现为作曲家上方的固定面板,其中显示了使用的目标、积分和待办进度。 面板会在终端高度不足 30 行时自动折叠为单个身份行,并在超过该阈值时展开;按 Ctrl+X,然后按 g,即可手动覆盖自动大小调整。
/changelog [summarize] [VERSION|last N|since VERSION]/release-notes [summarize] [VERSION|last N|since VERSION]显示 CLI 更改日志。 可选地指定一个版本、最近发布的版本数量或起始版本。 请为 AI 生成的摘要添加关键字 summarize
/chronicle <standup|tips|improve|reindex|skills create|skills review|skills status>会话历史工具和分析。
skills 子命令用于起草、审查和跟踪根据观察到的使用情况生成的仓库技能提案的状态。 请参阅“关于 GitHub Copilot CLI 会话数据”。
/clear [PROMPT]/new [PROMPT]/reset [PROMPT]启动新对话。
/clikit [COMPONENT]预览 CLI 业务组件(例如配额信息)。
/compact [FOCUS-INSTRUCTIONS]汇总对话历史记录以减少上下文窗口使用情况。 (可选)提供焦点说明来引导摘要,例如 /compact focus on the auth module。 请参阅“在 GitHub Copilot CLI 中管理上下文”。
/context显示上下文窗口令牌使用情况和可视化效果。 请参阅“在 GitHub Copilot CLI 中管理上下文”。
/copy将最后一个响应复制到剪贴板。
/cwd/cd [PATH]更改工作目录或显示当前目录。
/delegate [PROMPT]使用 AI 生成的拉取请求提交更改到远程存储库。 请参阅“将任务委派给 Copilot”。
/diagnose [PROMPT]/diagnose分析当前会话日志中出现的错误、意外行为和其他问题。 (可选)包括自定义提示,以便将诊断重点放在特定问题上。
/diff查看当前目录中的更改;当工作树干净时自动切换到分支差异(实验性)。
/downgrade VERSION下载并重启到特定 CLI 版本。 可用于团队帐户。
/env显示加载的环境详细信息(说明、MCP 服务器、技能、代理、挂钩、插件、LSP、扩展)。
/every [INTERVAL PROMPT]/every为当前会话安排周期性提示、技能或可安排的斜杠命令(例如 /every 1h run tests/every 1d /chronicle standup)。 在没有参数的情况下,将显示计划管理器。 仅在实验模式下可用。
/exit/quit关闭当前会话。 如果还有其他会话正在运行,此操作会将最新的剩余会话置于前台,而不是退出。 仅当它是最后一个打开的会话时,才会退出 CLI。
/exit print 始终会关闭 CLI 并提示是否导出对话记录。
/extensions [manage|mode]/extension管理 CLI 扩展。 仅在实验模式下可用。
/experimental [on|off|show]切换、设置或显示实验性功能。
/feedback/bug提供有关 CLI 的反馈。
/fleet [PROMPT]支持对任务的某些部分进行并行子代理执行。 请参阅“使用 /fleet 命令并行运行任务”。
/help显示交互式命令的帮助。
/ide连接到 IDE 工作区。 请参阅“连接GitHub Copilot CLI到VS Code”。
/init初始化此存储库的 Copilot 自定义说明和智能体功能。 请参阅 项目初始化Copilot
/instructions查看和切换自定义指令文件。
/keep-alive [on|off|busy|DURATION]/caffeinate [on|off|busy|DURATION]防止计算机进入睡眠状态:当命令行界面(CLI)会话处于活动状态,或者软件代理繁忙,或者在设定的时间段内。 接受持续时间,例如3030m2h1d(裸数默认为分钟)。
/limits打开交互式响应限制对话框。
/limits set max-ai-credits VALUE为每个响应允许的 AI 信用额度设置软最大值。 响应限制是针对每个用户消息重置的软限制。 请参阅“在 AI credit 中设置 GitHub Copilot CLI 会话限制”。
/limits unset [max-ai-credits|all]删除特定的响应限制或所有响应限制。
/list-dirs显示允许访问文件的所有目录。
/login登录到 Copilot。
/logout注销 Copilot。
/lsp [show|test|reload|logs|help] [SERVER-NAME]管理语言服务器配置。 子 logs 命令打开实时 LSP 服务日志面板。
/mcp [config|list|show|add|edit|delete|disable|enable|auth|reload|search] [SERVER-NAME]管理 MCP 服务器配置。 在没有子命令的情况下,或者使用 show 时,将打开插件仪表板,显示你的 MCP 服务器。 选择服务器并按 Enter 查看其详细信息,并执行启用或禁用等操作,或者使用 show SERVER-NAME 直接打开该服务器的详细信息。
config 打开 MCP 配置接口而不是仪表板。
list(别名 ls)会输出一份纯文本列表,列出已配置的服务器及其连接状态和运行状态,且为只读操作,因此即使代理正忙于处理某个轮次,也可以运行。 除configshowlist之外的所有子命令在当前回合结束前均被阻止。 沙盒化的本地服务器显示为 connected (sandboxed) 状态。 请参阅“为 GitHub Copilot CLI 添加 MCP 服务器”。
/model [--session|--global|--repo|--local] [MODEL]/models选择要使用的 AI 模型,或选择 自动。默认情况下(或者使用 --session,别名为 -s 时),仅更改当前会话的模型、推理强度或上下文窗口,不会更改已保存的设置。
--repo
/
--local 而是在存储库设置中固定默认模型; --global (或 /config model) 设置将来会话的默认值。 在具有长上下文变体的模型上按 Tab ,在默认窗口和长上下文窗口之间切换其上下文列。 选择器会将模型分到不同分区中——按 Shift+Tab 可在推荐分组(最近使用、推荐、新增和其他模型)、提供方和类别之间循环切换分组方式。 具有特定于供应商的数据保留条款的模型显示数据保留警告横幅,其中包含供应商策略的链接。 可在轮次处理中使用:在代理运行期间提出的更改请求会作为可取消的(Ctrl+C)命令加入队列,并在当前轮次结束后生效,而不是在请求处理中途切换当前实时模型。 请参阅“关于 Copilotauto model selection”。
/permissions [default|assisted|allow-all|show]在权限模式(default、、 assistedallow-all)之间切换,或显示当前模式(show)。 这是权限模式更改的规范命令; /allow-all/yolo 保留为别名。
/permissions reset重置当前会话中所有内存中的工具和路径授权(下次使用时再次提示)。
/plan [PROMPT]在编码之前创建实现计划。
/plugin打开插件仪表板,其中显示您已安装的插件。 选择插件并按 Enter 了解其详细信息以及启用、禁用、更新或卸载插件等操作。 使用 密钥在 “已安装”、“ 联机”和 “市场 ”视图之间切换。 仪表板仅显示插件;MCP 服务器请使用 /mcp,技能请使用 /skills。 请参阅“关于 GitHub Copilot 插件”。
/plugin install SOURCE从市场规范、GitHub 仓库、git URL 或本地路径安装插件。
/plugin update PLUGIN[@MARKETPLACE]更新已安装的插件。
/plugin uninstall PLUGIN[@MARKETPLACE](别名 removerm卸载插件。
/plugin list (别名 ls列出已安装的插件。
/plugin marketplace add SOURCE添加应用市场。
/plugin marketplace remove NAME移除商城。
/plugin marketplace list列出已注册的市场。
/plugin marketplace browse NAME在应用市场中浏览插件。
/plugin marketplace update [NAME] (别名 refresh重新获取某个应用市场的插件目录;如果未指定名称,则重新获取所有已注册应用市场的插件目录。
/pr [view|create|fix|auto|automerge]管理当前分支的拉取请求。
auto 将拉取请求驱动为绿色并停止; automerge (别名: agentmerge) 将拉取请求驱动为绿色并合并请求。 请参阅“使用 /pr 命令管理拉取请求”。
/refine TEXT将大致撰写的提示重写为明确的提示以供审阅。 不带参数运行(通过 Ctrl+X 然后 /refine),以清理当前输入框。 对于通过语音输入的提示词尤其有用。
/remote [on|off]显示远程控制状态(如果未提供任何参数)、启用远程转向(on)或结束远程连接(off)。 请参阅“通过其他设备控制 GitHub Copilot CLI 会话”。
/rename [NAME]重命名当前会话(如果省略,将自动生成名称;这是/session rename的别名)。
/research TOPIC使用 GitHub 搜索和 Web 源进行深入调查。 请参阅“使用GitHub Copilot CLI进行研究”。
/reset-allowed-tools重置允许的工具列表。
/restart重启 CLI,还原当前进程的所有实时会话,而不仅仅是前台会话。 如果目标 CLI 版本无法还原多个会话,系统会提示你仅继续使用前台会话或取消。
/resume [SESSION-ID]/continue [SESSION-ID]通过从列表中选择(可选指定会话 ID)切换到其他会话。
/review [PROMPT]运行代码评审代理以分析更改。 请参阅“使用 GitHub Copilot CLI 请求代码评审”。
/rubber-duck [PROMPT]咨询橡皮鸭智能体,以获取关于计划、代码和测试的第二种意见。 请参阅“关于橡皮鸭智能体”。
/sandbox [config|status|policy|enable|disable]管理 OS 级沙盒,用于限制 shell 命令、MCP/LSP 服务器和内置文件/Web 工具的文件系统和网络访问。
config(或单独使用 /sandbox)可打开沙盒设置对话框。
status 显示沙箱模式是否已启用。
policy 显示有效策略,其中路径授权按来源(用户配置、系统、工作目录、当前会话和 ~/.copilot)和访问类型分组,以及网络策略和检测到的任何开发者工具。
enable
/
disable 直接开启或关闭沙箱模式。 仅在实验模式下可用。
/search [QUERY]/find [QUERY]搜索对话时间线。
/security-review [PROMPT]对当前本地代码改动进行有针对性的安全审查,并返回按优先级排序的漏洞发现及修复建议。 此命令不是完整的存储库安全审核。
/session [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all]/sessions [info|checkpoints [n]|files|plan|rename [NAME]|cleanup|prune|delete [ID]|delete-all]显示会话信息和管理会话。 子 info 命令显示会话详细信息,包括会话链接(如果可用)。 子命令:info、、、checkpointsfiles``plan``rename``cleanupprune、。 delete``delete-all
/settings [--repo|--local] [show KEY|KEY|KEY VALUE],
/config [--repo|--local] [show KEY|KEY|KEY VALUE]
打开设置对话框,打开时将焦点置于特定设置上(KEY),以内联方式设置某项设置(KEY VALUE),或显示某项设置的当前值(show KEY)。
show 会屏蔽名为“secret”的值(例如,嵌套在设置下的令牌或 API 密钥),而不是以明文形式显示它们。 对话框显示 用户仓库仓库(本地)问题 标签页 — 使用 Tab/ 进行切换 Shift+Tab 切换;在另一个作用域中被覆盖的设置会显示一个标记,注明哪个作用域的设置生效。
问题选项卡是一个显示需要关注的设置的跨作用域视图(例如,未知或无效的键);当任一作用域存在问题时,其标签会显示计数,例如 Problems (2),否则仅显示 Problems。 将 --repo--local 添加到目标 .github/copilot/settings.json.github/copilot/settings.local.json 中,而不是添加到用户设置文件中——例如 /settings --repo model gpt-5.2。 只有可由仓库覆盖的键才能通过此方式设置。 受有效组织或 MDM 管理策略约束的行会显示为只读,并带有 (managed) 标记。 请参阅“使用 /settings 命令更改设置”。
/share [link|off|file|html|gist|research] [...]/export [...]共享当前会话。 未指定子命令时,如果你已登录并完成同步,则会生成可共享的 GitHub 链接(否则会退回为 Markdown 文件导出)。
off 停止共享。
link 是默认链接流的显式别名; link off 停止链接共享。
file [session|research] [PATH] 导出为 Markdown 文件。
html [session|research] [PATH] 导出到 HTML 文件。
gist [session|research] 创建 GitHub gist。
research [PATH] 导出研究报告。
/skills打开“技能”选项卡上的插件仪表板。
/skills list列出所有可用的技能。
/skills info NAME显示特定技能的详细信息。
/skills add [--project] <FILE|URL|DIRECTORY>从文件、URL 或目录添加技能;--project 将把从文件或 URL 进行的安装限定到此仓库,而不是你的用户帐户。
/skills remove <NAME|DIRECTORY>按名称删除技能,或取消注册自定义技能目录。
/skills reload从所有目录重新加载技能。 请参阅“为 GitHub Copilot CLI 添加代理技能”。
/statusline/footer配置状态行中显示的项。
/subagents/agents配置默认子代理模型和每个代理的子代理模型。 请参阅“GitHub Copilot CLI 配置目录”。
/tasks查看和管理任务(子代理和 shell 命令)。
/terminal-setup为多行输入支持配置终端(Shift+EnterCtrl+Enter)。
/theme [default|github|dim|high-contrast|colorblind]查看或设置颜色模式。
/tuikit [colors|icons|select|tabbar]预览 TUIkit 设计系统组件和颜色令牌。
/undo/rewind打开回溯选择器,将会话回滚到较早的用户操作。 请选择:仅对话(回退对话,文件保持原样)或 对话 + 文件(同时将该轮次以及之后被放弃的轮次中更改过的文件 Copilot 恢复到更改前的内容,但会跳过此后你自行编辑过的文件)。 文件更改是跨编辑工具、shell 命令和子代理的轮次跟踪的,因此不需要 Git。
/update/upgrade将 CLI 更新到最新版本。
/usage显示会话使用情况指标和统计信息,包括每模型令牌总计。
/user [show|list|switch]管理当前 GitHub 用户。
/version显示版本信息并检查更新。
/voice [on|off|models|devices]切换语音模式、浏览可用的语音模型或选择输入设备(麦克风)。
/fork [NAME]/branch [NAME]将当前会话复制到新会话中,并可选择为其命名。
/worktree [branch|task]创建新的 Git 工作区副本并切换到该工作区副本,同时将未提交的更改留在当前工作区中。 传入分支名称、任务描述(支持多行,用作新工作树中的初始提示),或者省略该参数,以根据对话自动生成分支名称。 默认情况下,从当前检出分支进行分支(HEAD);将 worktreeBaseRef 设置设为 "defaultBranch" 即可改为从远程默认分支进行分支。 请参阅“GitHub Copilot CLI 配置目录”。 需要 Git 存储库。 仅在实验模式下可用。
/worktree new [PROMPT]在新 Git 工作树中启动新对话,使当前对话及其工作目录保持不变。 (可选)提供第一个提示。
new 保留为子命令关键字,不能用作文本分支名称。 遵循与 /worktree 相同的 worktreeBaseRef 设置。 仅在实验模式下可用。
/move [branch|task]将未提交的更改移动到新的 Git 工作树并切换到它。 传入分支名称、任务描述(支持多行,用作新工作树中的初始提示),或者省略该参数,以根据对话自动生成分支名称。 需要 Git 存储库。 仅在实验模式下可用。

要获取所有可用的斜杠命令的完整列表,请在 CLI 的交互式界面中输入 /help

在通过单独按下 /every/after 打开的计划管理器中,使用 / 选择一个条目,并按 x 将其删除。 仅可通过在提示符下使用 /every/after 并带参数来添加计划任务 — 对话框本身仅支持读取和删除操作。

/plugin 会在上游有可用新版本时提示已安装的插件或市场项,并在仪表板中提供 更新 操作。

/mcp list / ls/plugin list/ls(包括裸 /plugin)均为只读,并且可在代理忙于处理一轮交互时执行。 所有其他 /mcp 命令和 /plugin 子命令都会被阻止,直到轮次完成。

注意

实验性 /plugins 命令已被移除。 其资源已被转移到 /plugin/mcp以及 /skills。 使用 /subagents/instructions 用于代理和说明。

命令行选项

选项Purpose
--add-dir=PATH允许访问某个目录中的文件,并将其 .github/skills.github/agents 加载为受信任的配置(可多次使用)。
--add-github-mcp-tool=TOOL添加工具以启用 GitHub MCP 服务器,而不是默认 CLI 子集(可多次使用)。 将 * 用于所有工具。
--add-github-mcp-toolset=TOOLSET添加工具集以启用 GitHub MCP 服务器,而不是默认 CLI 子集(可多次使用)。 对所有工具集使用 all
--additional-mcp-config=JSON仅为此会话添加 MCP 服务器。 服务器配置可以作为 JSON 字符串或文件路径(前缀) @提供。 从 ~/.copilot/mcp-config.json 扩充配置。 覆盖任何已安装的同名 MCP 服务器配置。 请参阅“为 GitHub Copilot CLI 添加 MCP 服务器”。
--agent=AGENT指定要使用的值 custom agent 。 请参阅“关于自定义代理”。
--allow-all启用所有权限(等效于 --allow-all-tools --allow-all-paths --allow-all-urls)。
--allow-all-mcp-server-instructions在系统提示符中包含来自所有 MCP 服务器的初始化指令。 默认情况下,只有列入允许列表的服务器指令会预先加载;其他服务器的指令则按需获取。
--allow-all-paths禁用文件路径验证并允许访问任何路径。
--allow-all-tools允许所有工具在不确认的情况下自动运行。 以编程方式使用 CLI 时是必需的(env: COPILOT_ALLOW_ALL)。
--allow-all-urls允许在没有确认的情况下访问所有 URL。
--allow-tool=TOOL ...CLI 有权使用的工具。 不会提示输入权限。 对于多个工具,请使用带引号的逗号分隔列表。 请参阅“允许和拒绝工具使用”。
--allow-url=URL ...允许访问特定的网址或域。 对于多个 URL,请使用带引号的逗号分隔列表。
--acp以代理客户端协议服务器身份启动。
--attachment PATH将文件附加到初始提示(可以多次使用)。 可以接受图像文件,但要成功发送这些文件,前提是所选模型和组织策略允许视觉输入。
--autopilot启用自动驾驶连续运行模式——代理会持续运行,直到调用 task_complete,然后返回交互模式。 请参阅“允许 GitHub Copilot CLI 自主工作”。
--available-tools=TOOL ...只有这些工具可供模型使用。 对于多个工具,请使用带引号的逗号分隔列表。 请参阅“允许和拒绝工具使用”。
--banner--no-banner显示或隐藏启动横幅。
--bash-env启用 BASH_ENV 对 bash shell 的支持。
-C DIRECTORY在执行任何其他操作之前,请更改工作目录。
--connect[=SESSION-ID]直接连接到远程会话(可选)指定会话 ID 或任务 ID。 与 --resume--continue.
--context TIER设置分级定价模型的上下文窗口层级(该设置将覆盖已保存的配置,并在新的交互式会话中生效)。 选项:“default”、“long_context”。
--config-dir=DIRECTORY用于设置配置目录的选项已弃用。 请改用 COPILOT_HOME 环境变量。
--continue恢复当前工作目录中的最新会话,回退到全局最新会话。 与 --resume 冲突
--deny-tool=TOOL ...CLI 没有使用权限的工具。 不会提示输入权限。 对于多个工具,请使用带引号的逗号分隔列表。
--deny-url=URL ...拒绝访问特定 URL 或域,优先于 --allow-url。 对于多个 URL,请使用带引号的逗号分隔列表。
--disable-builtin-mcps禁用所有内置 MCP 服务器(当前: github-mcp-server)。
--disable-mcp-server=SERVER-NAME禁用特定的 MCP 服务器(可以多次使用)。
--disallow-temp-dir防止自动访问系统临时目录。
--effort=LEVEL--reasoning-effort=LEVEL设置推理工作量级别(low、、medium``highxhigh``max)。
max是Anthropic模型中深度最高的层级。
--enable-all-github-mcp-tools启用所有 GitHub MCP 服务器工具,而不是默认 CLI 子集。
--add-github-mcp-toolset--add-github-mcp-tool选项被覆盖。
--enable-mcp-server=SERVER-NAME为此会话重新启用在设置中禁用的 MCP 服务器(只能多次使用)。 此更改不会保存到您的配置中。
--enable-memory在提示模式下启用内存(默认禁用)。
--enable-reasoning-summaries已弃用的兼容性选项(已接受但忽略)。 默认情况下会显示支持 OpenAI 模型的详细推理摘要。 使用 Ctrl+T 切换它们。
--excluded-tools=TOOL ...这些工具将不适用于模型。 对于多个工具,请使用带引号的逗号分隔列表。
--experimental启用实验性功能(使用 --no-experimental 进行禁用)。
--extension-sdk-path DIRECTORY使用本地 @github/copilot-sdk 文件夹覆盖注入到扩展子进程中的捆绑 copilot-sdk/。 无效路径将回退到随附的 SDK。
-h--help显示帮助。
-i PROMPT--interactive=PROMPT启动交互式会话并自动执行此提示。
--log-dir=DIRECTORY设置日志文件目录(默认值: ~/.copilot/logs/)。
--log-level=LEVEL设置日志级别(选项:none、、error``warninginfodebugall``default)。
--max-ai-credits=CREDITS为每个响应允许的 AI 信用额度设置软最大值。 该限制会在每条用户消息后重置,并且可在会话中途通过 /limits 进行调整。 请参阅“在 AI credit 中设置 GitHub Copilot CLI 会话限制”。
--max-autopilot-continues=COUNTAutopilot 模式下的最大延续消息数(默认值:无限制)。 必须是非负整数;格式不正确的值(NaN、负值或小数)将被拒绝。 请参阅“允许 GitHub Copilot CLI 自主工作”。
--mode=MODE设置初始代理模式(选项:interactive、、plan``autopilot)。 与 --plan --mode autopilot 结合使用(作为 --plan),即可实现“先计划后自动驾驶”:会话将以计划模式启动,并在计划就绪后自动进入 Autopilot 模式,而不是等待人工批准。 拒绝任何其他 --plan --mode MODE 配对。
--model=MODEL设置要使用的 AI 模型。 作为值传递 auto ,以便 Copilot 自动选取最佳可用模型。 请参阅“关于 Copilotauto model selection”。
--mouse[=VALUE]在交互式界面中启用或禁用鼠标支持。 VALUE 可以是 on (默认值) 或 off。 启用后,CLI 捕获鼠标事件(滚轮、单击等)以导航其自己的界面,例如滚动时间线或单击选项卡。 禁用后,将保留终端的本机鼠标行为,例如文本选择和滚动回退。 显式设置此选项时,该值将保存到配置文件中。
-n NAME--name=NAME设置新会话的名称。 供 --resume/resume 用于按名称查找会话。
--no-ask-user
ask_user禁用该工具(代理在不提出问题的情况下自主工作)。
--no-auto-update禁用自动下载 CLI 更新。
--no-bash-env禁用 BASH_ENV 对 bash shell 的支持。
--no-color禁用所有颜色输出。
--no-custom-instructions禁止从 AGENTS.md 相关文件中加载自定义指令。
--no-experimental禁用实验性功能。
--no-mouse禁用鼠标支持。
--no-remote禁用此会话的远程访问。
--no-remote-export禁止将您的会话导出到 GitHub.com 和 GitHub Mobile(也会禁用远程控制)。
--output-format=FORMATFORMAT 可以是 text (默认值)或 json (输出 JSONL:每行一个 JSON 对象)。
-p PROMPT--prompt=PROMPT以编程方式执行提示(完成后退出)。 退出摘要包含一个用于继续会话的 copilot --resume=SESSION-ID 提示。 请参阅“以编程方式运行GitHub Copilot CLI”。
--plan在计划模式下启动。
--mode plan 的速记。 不能与 --autopilot 组合。 可与 --mode autopilot 结合使用,以实现“先规划后自动驾驶”;任何其他 --mode 值都会被拒绝。
--plain-diff禁用富差异渲染(通过 Git 配置指定的差异工具进行语法高亮)。
--plugin-dir=DIRECTORY从本地目录加载插件(可以多次使用)。
--remote启用从GitHub.com和GitHub Mobile远程访问此会话。 请参阅“通过其他设备控制 GitHub Copilot CLI 会话”。
--remote-export将您的会话导出到 GitHub.com 和 GitHub Mobile(只读;不会启用远程控制)。
-r--resume[=VALUE]通过从列表中选择来恢复以前的交互式会话。 (可选)指定会话 ID、ID 前缀或会话名称。 名称匹配精确且不区分大小写;当没有显式名称匹配时,回退到自动生成的摘要。 与 --continue 冲突 空写 --resume(无值)将显示交互式会话选择器,该操作需要 TTY 支持。 如果存在多个会话且无法显示选择器(例如在 -p 模式下、非 TTY 的 -i 模式下,或标准输入被管道重定向时),CLI 将报错退出,而非静默启动新会话——请显式传递 --resume=SESSION-ID 或使用 --continue
-s--silent仅输出代理响应(不使用使用情况统计信息),对于使用 -p脚本编写非常有用。
--screen-reader启用屏幕阅读器优化。
--secret-env-vars=VAR ...从 shell 和 MCP 服务器环境(可以多次使用)中修订环境变量。 对于多个变量,请使用带引号的逗号分隔列表。 默认情况下, GITHUB_TOKENCOPILOT_GITHUB_TOKEN 环境变量中的值会从输出中隐藏。
--session-id ID如果您不希望 --resume 通过 ID 前缀或会话名称进行更宽泛的匹配,请使用精确的会话或任务 ID。 如果 ID 与现有会话或任务匹配,则会恢复该会话或任务。 如果没有任何匹配项,则仅当该值是有效的 UUID 时,才会创建新会话。 名称和 ID 前缀不会创建新会话。 不要将此选项与其他会话选择或会话启动选项(例如 --resume--continue--connect)合并,因为它们争先决定要打开或创建哪个会话。
--sandbox仅为此会话启用 OS 级 shell 沙盒,而无需更改保存的沙盒设置。 与 -p 搭配使用很有用。 仅在实验模式下可用。
--no-sandbox仅对此次会话禁用本地沙盒,而不更改已保存的沙盒设置。 如果已配置了企业管理策略以强制启用沙盒,则会忽略此选项。 仅在实验模式下可用。
--share=PATH程序化会话结束后,将会话共享到 Markdown 文件(默认路径:./copilot-session-<ID>.md)。
--share-gist在编程会话完成后,将会话共享给机密 GitHub gist。
--stream=MODE启用或禁用流模式,该模式在生成时逐渐显示 Copilot其响应,而不是等待完整响应到达(模式选项: onoff,默认值: on) 。
-v--version显示版本信息。
-w--worktree[=NAME]<repo>.worktrees/ 下创建或复用一个隔离的 Git 工作树,并在其中启动会话。
NAME 是可选的,省略后将自动生成分支名称。 默认情况下,从当前检出分支进行分支(HEAD);将 worktreeBaseRef 设置设为 "defaultBranch" 即可改为从远程默认分支进行分支。 与 --resume--continue--connect 冲突 仅在实验模式下可用。
--yolo启用所有权限(等效于 --allow-all)。

有关命令和选项的完整列表,请运行 copilot help

注意

--remote--no-remote--remote-export``--no-remote-export--connect选项要求在帐户上提供远程会话功能。

你可以将--remote--resume <TASK-ID>配合使用,在本地恢复远程任务。 即使任务最初是在 Git 存储库外部创建的,也是如此。

如果会话在 CLI 进程消失时仍然处于打开状态,例如由于崩溃或计算机重启,下次启动 copilot 时,系统会提供还原会话的选项。 您可以查看可用于恢复的会话,或者改为启动一个新会话。 对于智能体正在处理中的恢复会话,系统会自动恢复该项工作。

先规划,后自动执行

Plan-then-autopilot 允许会话在计划模式下启动,并在计划准备就绪后自动继续进入 Autopilot 模式,而无需等待人工批准转换。 可通过 --plan --mode autopilot 启用此功能,或者对于只能注入环境变量而无法注入命令行选项的测试框架,可通过 COPILOT_PLAN_THEN_AUTOPILOT 环境变量启用。 如果同时设置了这两个选项,则显式选项优先,CLI 会显示一条警告,指出环境变量已被忽略。

企业级管理的沙箱底线

企业管理策略可将操作系统级 Shell 沙盒隔离强制设定为最低基线。 换言之,即使您传入 --no-sandbox,策略仍可强制启用沙箱。 这是策略覆盖,而非标志本身失败。 相比之下,--sandbox 不受影响,因为它只会启用沙盒机制,而不会将其移除。 如果有效策略允许绕过沙盒,则您可以在响应当前显示的绕过权限提示时,显式禁用当前会话剩余时间内的沙盒。

当托管策略覆盖了你的设置时,CLI 会在交互式时间线中显示警告(或者在使用 -p 时通过 stderr 显示警告),从而明确表明该行为是由策略强制执行导致的,而不是因为该选项本身不起作用。 如果需要更改策略,请与管理员联系。 每当受管策略强制启用沙盒机制时,/sandbox 命令也会被注册;即使未启用实验性功能,您仍可在该底线生效期间检查当前生效的策略和状态。 仅在实验模式下可用。

将受管理的 sandbox.failIfUnavailable 设置为 true,并同时将 sandbox.enabled 设置为 true,会使得在无法建立沙盒时必须强制使用沙盒。 如果策略无法验证、编译,或无法由可用的沙盒后端执行,Copilot 不会回退为以非沙盒方式运行命令,而是会阻止模型和工具执行。 请参阅“企业管理设置”。

当受管策略在您未请求的会话中启用沙箱时,CLI 也会发出警告,而不仅仅是在其覆盖 --no-sandbox 时。 这包括策略在启动后才生效的会话,因为服务器管理的设置仅在登录后才可用。 如果你自己的设置或 --sandbox 选项已请求启用沙盒,则会省略此警告,因为此时会话状态属于预期情况。

如果设备存在无法读取的受管策略,CLI 将以安全关闭方式失败,并以最高限制级别强制实施沙盒隔离。 该通知说明无法确定该策略,并告知你等待该问题得到解决。 不受支持的主机的启动警告使用相同的措辞。

限制使用 --allow-all 选项

如果将 permissions.disableBypassPermissionsMode 设置为 "disable",则所有允许授予全部权限的命令行选项(--allow-all-tools--allow-all-paths--allow-all-urls--allow-all--yolo)都会在启动时被禁用,且不能用于授予提升后的权限。 /permissions allow-all斜杠命令及其别名/allow-all/yolo也将被禁止显示。

permissions.disableBypassPermissionsMode设为"allow-auto-only",以阻止完全放开所有权限,但允许/permissions assisted(LLM 辅助权限审批)。 辅助批准仍会针对每个请求提示确认,但会附带一条 LLM 安全建议,以便 CLI 能自动批准那些被模型评估为可接受的请求。

如果 permissions.disableBypassPermissionsMode 设置为无法识别的值,CLI 将不再彻底拒绝它。 相反,CLI 会记录该问题,并强制执行 "disable" 作为“失败即关闭”的默认设置,因此格式错误的受管策略仍会限制“允许所有”选项,而非默默允许它们。

有三个来源可以设置此限制,按持久性递增的顺序如下:

来源Scope因切换帐户而被清除?
用户设置 (~/.copilot/settings.json机器否 - 适用于所有帐户
托管设置(按账户从服务器获取)客户是 — 切换到未禁用“允许所有”选项的其他账户时,该状态将被清除
MDM 策略(plist/注册表/文件)设备从不 — 不可被帐户切换覆盖的设备级策略

有关 MDM 配置详细信息,请参阅 GitHub Copilot CLI 配置目录

支持的模型

使用 --model=MODELCOPILOT_MODEL 环境变量选择 AI 模型。 传递auto让Copilot自动选择最佳可用模型。

型号最适用于
claude-sonnet-4.6常规用途编码(默认值)
gpt-5.4复杂的推理任务
claude-haiku-4.5快速、轻量的操作
gpt-5.3-codex以代码为中心的任务
gemini-3.1-pro-preview谷歌双子座推理
gemini-3.5-flash快速 Google Gemini 响应
gemini-3.6-flash快速 Google Gemini 响应
gemini-3.7-flash快速 Google Gemini 响应
mai-code-1-flash快速自适应编码任务

还可以使用斜杠命令在 /model 交互式会话期间切换模型。

工具可用性值

--available-tools``--excluded-tools选项支持以下值:

Shell 工具

工具名称说明
bash / powershell执行命令
list_bash / list_powershell列出活动 shell 会话
read_bash / read_powershell从 shell 会话中读取输出
stop_bash / stop_powershell终止 shell 会话
write_bash / write_powershell将输入发送到 shell 会话

文件操作工具

工具名称说明
apply_patch应用修补程序(某些模型使用修补程序,而不是 edit/create
create创建新文件
edit通过字符串替换编辑文件
view读取文件或目录

代理和任务委派工具

工具名称说明
list_agents列出可用的代理
read_agent检查后台代理状态
task运行子代理
write_agent向正在运行的代理发送消息

其他工具

工具名称说明
ask_user向用户提问
glob查找匹配模式的文件
grep(或 rg搜索文件中的文本
skill调用自定义技能
web_fetch提取和分析 Web 内容

工具权限模式

--allow-tool--deny-tool选项接受格式为Kind(argument)的权限模式。 该参数是可选的, 省略它与该类型的所有工具匹配。

种类说明示例模式
memory将事实存储到代理内存memory
read文件或目录读取
readread(.env)
shellShell 命令执行
shell(git push)shell(git:*)shell
url通过 web 抓取或 shell 访问 URL
url(github.com)url(https://*.api.com)
write文件创建或修改
writewrite(src/*.ts)
SERVER-NAMEMCP 服务器工具调用
MyMCP(create_issue)MyMCP

对于 shell 规则,:* 后缀与命令主干后跟一个空格匹配,以避免部分匹配。 例如, shell(git:*) 匹配 git pushgit pull 不匹配 gitea

即使设置了拒绝规则, --allow-all 拒绝规则始终优先于允许规则。

# Allow all git commands except git push
copilot --allow-tool='shell(git:*)' --deny-tool='shell(git push)'

# Allow a specific MCP server tool
copilot --allow-tool='MyMCP(create_issue)'

# Allow all tools from a server
copilot --allow-tool='MyMCP'

# Deny writes to a specific path (exact or trailing-path-segment match; no glob support yet)
copilot --deny-tool='write(secret.txt)'

--deny-tool='write(PATH)' 将拒绝范围限定为该路径 - 其他写入不受影响。 匹配操作会解析符号链接和 ./.. 段,并在 macOS 和 Windows 上不区分大小写。

环境变量

Variable说明
COPILOT_ALLOW_ALL将其设置为 true 以自动允许所有权限(相当于 --allow-all)。
COPILOT_AUTO_UPDATE设置为 false 禁用 CLI 和第一方插件的自动更新。
COPILOT_CACHE_HOME替代缓存目录(用于市场缓存、自动更新包和其他临时数据)。 有关平台默认值,请参阅 GitHub Copilot CLI 配置目录
COPILOT_CUSTOM_INSTRUCTIONS_DIRS自定义说明中额外目录的逗号分隔列表。
COPILOT_EDITOR用于交互式编辑的编辑器命令(在 $VISUAL$EDITOR 后检查)。 如果未设置,则默认为vi
COPILOT_ENABLE_HTTP2将其设置为 1true 以启用 HTTP/2 传输。 HTTP/1.1 是默认值。
COPILOT_GH_HOST
GitHub 仅用于 Copilot CLI 的主机名,覆盖 GH_HOST。 适用于以下场景:GH_HOST 的目标是 GitHub Enterprise Server,但 Copilot 却需要针对 GitHub.com 或 GitHub Enterprise Cloud 主机名来进行身份验证。
COPILOT_GITHUB_TOKEN身份验证令牌。 优先于 GH_TOKENGITHUB_TOKEN
COPILOT_HOME覆盖配置和状态目录。 默认值:$HOME/.copilot
COPILOT_LARGE_OUTPUT_THRESHOLD_BYTES直接返回给模型的工具输出的最大 UTF-8 字节大小。 默认值: 20480 (20 KiB)。 请参阅“在 GitHub Copilot CLI 中管理上下文”。
COPILOT_MCP_TOOL_CACHE设置为 false 禁用整个进程的加载和保留本地 MCP 服务器工具快照。 请参阅 工具快照缓存
COPILOT_MODEL设置 AI 模型。
COPILOT_PLAN_THEN_AUTOPILOT对于只能注入环境变量的测试框架,请设置为 1trueyeson 以请求“先规划后自动执行”(等同于 --plan --mode autopilot)。 当传入显式的 --mode--autopilot--plan 选项时,将被忽略,并发出警告。 请参阅 Plan-then-autopilot
COPILOT_PROMPT_FRAME
1设置为在输入提示周围启用装饰性 UI 框架,或0将其禁用。 替代当前会话的 PROMPT_FRAME 实验性功能标志。
COPILOT_SKILLS_DIRS技能附加目录的逗号分隔列表。
PLUGINS_DASHBOARD将其设置为false,以禁用通过单独使用 /mcp/plugin/skills 打开的插件仪表板,并禁用非交互式 copilot plugin/copilot plugins 命令。
COPILOT_STRIP_REASONING_ON_RESUME将其设置为 0false,以在会话恢复时保留 BYOK 推理令牌,而不是将其剥离。 默认行为是移除它们。
COPILOT_SUBAGENT_MAX_CONCURRENT每个会话的最大并发子代理数(默认值: 32,范围: 1256)。
COPILOT_SUBAGENT_MAX_DEPTH最大子代理嵌套深度(默认值: 4,范围: 1128)。
COPILOT_TASK_WAIT_TIMEOUT_SECONDS在退出前,等待待处理的后台智能体或 shell 命令完成的最大秒数 -p(以及 -p --autopilot)(默认:6000 则不等待,立即退出)。
GH_HOST
GitHub 和 GitHub CLI 的 Copilot CLI 主机名(默认值:github.com)。 将其设置为带有数据驻留主机名的 GitHub Enterprise Cloud。 仅替代为 COPILOT_GH_HOST 的 Copilot CLI。
GH_TOKEN身份验证令牌。 优先于 GITHUB_TOKEN.
GITHUB_COPILOT_PROMPT_MODE_EXTENSIONS设置为 true 加载项目扩展并允许在提示模式下使用扩展管理工具(-p)。 默认情况下禁用以防止运行存储库控制的扩展代码,而无需交互式信任。
GITHUB_COPILOT_PROMPT_MODE_REPO_HOOKS设置为 true 以在提示模式 (-p)下加载存储库挂钩。 如果该文件夹已受信任或已设置 COPILOT_ALLOW_ALL,仓库钩子也会自动加载。
GITHUB_COPILOT_PROMPT_MODE_WORKSPACE_MCP将其设置为 true 以在提示模式下加载工作区 MCP 源(-p)。 默认情况下禁用以防止启动存储库控制的 MCP 服务器,而无需交互式信任。
GITHUB_TOKEN身份验证令牌。
PLAIN_DIFF设置为 true 以禁用多差异呈现。
USE_BUILTIN_RIPGREP设置为 false 以使用系统 ripgrep,而不是捆绑的版本。
USE_TGREP将其设为 true,则无论仓库大小如何,始终使用 tgrep(一种基于三元组索引的搜索引擎);或将其设为 false,则始终使用 ripgrep。 未设置时,当存储库中的文件数量超过特定于平台的阈值后,Copilot CLI 会自动从 ripgrep 切换到 tgrep。

配置文件设置

有关配置文件设置的详细信息(包括用户设置、存储库设置、本地设置及其级联方式的完整列表),请参阅 GitHub Copilot CLI 配置目录

注意

用户设置以前存储在 ~/.copilot/config.json. 该位置中的现有用户可编辑设置将在启动时自动迁移到 ~/.copilot/settings.json 该位置。

Copilot 的项目初始化

使用命令 copilot init或交互式会话中的斜杠命令 /init 时, Copilot 分析代码库并写入或更新 .github/copilot-instructions.md 存储库中的文件。 此自定义说明文件包含特定于项目的指南,可改进将来的 CLI 会话。

当你启动新项目时,或者当你在现有存储库中开始使用 copilot init 时,你通常会使用/init 或 Copilot CLI。

copilot-instructions.md创建或更新的文件通常记录信息:

  • 生成、测试和 Lint 命令。
  • 高级体系结构。
  • 特定于代码库的约定。

如果文件已存在,Copilot 会提议可选择应用或拒绝的改进。

CLI 在启动时查找 copilot-instructions.md 文件,如果缺少该文件,则会显示消息:

💡 未找到副驾指令。 运行 /init 以为此项目生成 copilot-instructions.md 文件。

如果不想创建此文件,可以使用斜杠命令永久隐藏当前存储库的 /init suppress 此启动消息。

有关详细信息,请参阅“为GitHub Copilot添加存储库自定义说明”。

使用 --sandbox--no-sandbox 并配合 copilot init,可仅对初始化会话启用或禁用 OS 级 shell 沙盒,而无需更改已保存的沙盒设置。 这些选项与其他入口一样,受相同的企业管理沙盒下限约束——请参阅企业管理沙盒下限

自定义指令位置

Copilot CLI 同时从这些位置加载自定义指令(全部合并):

位置备注
CLAUDE.md在 Git 根目录和当前工作目录中
GEMINI.md在 Git 根目录和当前工作目录中
AGENTS.md在 Git 根目录和当前工作目录中
.github/instructions/**/*.instructions.md在 Git 根目录和当前工作目录中
.github/copilot-instructions.md在 Git 根目录和当前工作目录中
$HOME/.copilot/copilot-instructions.md
$HOME/.copilot/instructions/**/*.instructions.md
COPILOT_CUSTOM_INSTRUCTIONS_DIRS通过环境变量指定的附加目录。

自定义指令导入

说明文件支持 @path 导入。 在行首添加 @ 后跟路径,即可内联另一个文件的内容。 路径可以是相对于指令文件的目录或绝对路径。 导入会进行递归解析,受深度限制,并带有循环和大小限制。 AGENTS.mdCLAUDE.md.github/copilot-instructions.md 支持此功能。

挂钩引用

有关挂钩的详细信息(包括挂钩配置格式、挂钩事件、输入有效负载和决策控制),请参阅 GitHub Copilot 挂钩参考

MCP 服务器配置

MCP 服务器向 CLI 代理提供其他工具。 在~/.copilot/mcp-config.json中配置持久性服务器。 使用 --additional-mcp-config 来为单个会话添加服务器。

在沙盒内启动的本地(stdio)服务器(请参阅 /sandbox 斜杠命令)会在 connected (sandboxed)copilot mcp list 中显示为 /mcp list 状态,因为远程(HTTP/SSE)服务器绝不会在沙盒中运行。 仅在实验模式下可用。

copilot mcp list/mcp list 用于标记已禁用的服务器,在文本输出中以 (disabled) 后缀表示,或在 --json 输出中按服务器分别以 "enabled": false 表示。 copilot mcp get 显示一行 Status: Enabled/Disabled

切换 /sandbox 仅会重启本地(stdio)MCP 服务器,因为它们是在沙箱内部启动的。 远程(HTTP/SSE)服务器保持连接状态。

/mcp edit <name> 会拒绝来自工作区的服务器(即在仓库的 .mcp.json 中定义的服务器),而不是打开用户级向导,因为保存时会在无提示的情况下创建一个同名的用户级条目,而该条目仍会被工作区中的条目遮蔽。 错误信息直接给出了要编辑的文件名。 /mcp delete <name> 当系统要求删除工作区源服务器时,报告同一文件。

copilot mcp 子命令

用于 copilot mcp 从命令行管理 MCP 服务器配置,而无需启动交互式会话。

子命令说明
list [--json]列出按源分组的所有已配置的 MCP 服务器,包括插件提供的服务器。
get <name> [--json]显示特定服务器的配置和工具。 对于插件提供的服务器,还显示源插件名称和版本。
add [options] <name> [url]将服务器添加到用户配置。 写入到 ~/.copilot/mcp-config.json
remove <name>删除用户级服务器。 工作区服务器必须直接在其配置文件中进行编辑。

对于本地(stdio)服务器,请在 -- 后提供该命令:

Shell
copilot mcp add SERVER-NAME -- COMMAND [ARGS...]

对于远程 HTTP 或 SSE 服务器,请指定传输并提供 URL:

Shell
copilot mcp add --transport http SERVER-NAME URL

** copilot mcp add 选项:**

选项说明
-- <command> [args...]本地 (stdio) 服务器的命令和参数。
<url>远程服务器的 URL。
--transport <transport>传输类型: stdiohttpsse。 默认值为 stdio
--env KEY=VALUE环境变量(可重复)。
--header "HEADER: VALUE"远程服务器的 HTTP 标头(可重复)。
--tools <tools>工具筛选器: "*" 表示全部,逗号分隔列表,或 "" 表示无。
--timeout <ms>工具发现和工具调用的超时时间(以毫秒为单位)。 默认值:30000
--json将添加的配置输出为 JSON 格式。
--show-secrets显示完整的环境变量和标头值。

/mcp add//mcp edit 交互式表单中,在 env 字段中输入以逗号分隔的 KEY=VALUE 对,或输入 JSON 对象(例如 {"API_KEY":"secret"})。 $PATH 默认包含,无需列出。

注意

--show-secrets 可以将敏感的环境变量和标头值输出到终端或日志。 仅在受信任的环境中使用此选项,避免在共享日志或历史记录中复制、粘贴或其他捕获输出。

传输类型

类型说明必填字段
local / stdio本地进程通过 stdin/stdout 进行通信。
commandargs
http使用可流式 HTTP 传输的远程服务器。
"streamable-http" 也接受为别名,并规范化为 "http"url
sse使用服务器发送事件 (Server-Sent Events) 传输的远程服务器。url

本地服务器配置字段

领域必需说明
command是的用于启动服务器的命令。
args是的命令参数(数组)。
tools是的要启用的工具:["*"],可以是所有工具或特定工具名称的列表。
env环境变量。 支持$VAR${VAR}``${VAR:-default}扩展。
cwd服务器的工作目录。
timeout工具发现和工具调用的超时时间(以毫秒为单位)。 默认值:30000
type
"local""stdio"。 默认值:"local"
deferTools
"auto" (default) 或 "never". 将其设为 "never",即可始终显示此服务器的工具,即使在启用工具搜索时也是如此。
disableToolCache将其设置为 true 以跳过加载和持久保存此服务器的工具快照。

工具快照缓存

Copilot CLI 会持久化保存每个本地服务器的工具列表快照,以便在启动时工具可立即使用,同时在后台完成实时发现。 实时发现始终运行,并在完成后替换快照。

将服务器上的 disableToolCache: true 设为相应值,以仅对该服务器强制进行实时发现;或者设置 COPILOT_MCP_TOOL_CACHE=false 环境变量,以对整个进程禁用快照加载和持久化。 这两个选择退出都使现有缓存文件保持不变。

专用 npm 注册表

--registry 数组中使用 args 从私有 npm 注册表拉取包 — 例如,Artifactory 或 GitHub Packages 源:

{
    "mcpServers": {
        "my-internal-server": {
            "command": "npx",
            "args": [
                "--registry", "https://npm.pkg.github.com",
                "@my-org/internal-mcp-server"
            ],
            "tools": ["*"]
        }
    }
}

在计算服务器标识指纹时,--registry 选项和其他 npm 配置选项(--userconfig--globalconfig--prefix--cache--node-options--workspace-w)会被视为接受值的参数。 这可确保当这些选项出现在包名称之前时,企业允许列表校验和注册表验证能够正常运行。

远程服务器配置字段

领域必需说明
type是的
"http""sse""streamable-http" 也接受为别名 "http")。
url是的服务器 URL。
tools是的要启用的工具。
headersHTTP 标头。 支持变量扩展。
oauthClientId静态 OAuth 客户端 ID(跳过动态注册)。
oauthPublicClientOAuth 客户端是否为公共客户端。 默认值:true。 将其设置为false,适用于具有存储机密的机密客户端。
oauthGrantTypeOAuth 授权类型:"authorization_code"(默认,基于浏览器的流程)或 "client_credentials"(完全无外设,无需浏览器或回调)。
oidc启用 OIDC 令牌注入。 当true,CLI 会为服务器GITHUB_COPILOT_OIDC_MCP_TOKEN块(本地服务器)中引用的任何GITHUB_COPILOT_OIDC_MCP_TOKEN_<SUFFIX>env变量注入 OIDC 令牌,或将令牌作为Bearer``Authorization标头(远程服务器)发送。 对于本地服务器,首选后缀变体(例如), ${GITHUB_COPILOT_OIDC_MCP_TOKEN_MY_SVC}为每个服务器分配唯一的变量名称。
timeout工具发现和工具调用的超时时间(以毫秒为单位)。 默认值:30000
deferTools
"auto" (default) 或 "never". 将其设为 "never",即可始终显示此服务器的工具,即使在启用工具搜索时也是如此。

OAuth 重新身份验证

使用 OAuth 的远程 MCP 服务器可能会在令牌过期或需要其他帐户时显示 needs-auth 状态。 使用 /mcp auth <server-name> 触发新的 OAuth 流。 这会打开浏览器身份验证提示,允许你登录或切换帐户。 完成流后,服务器会自动重新连接。

在 Windows 上,受 Microsoft Entra ID 保护的远程 MCP 服务器则通过操作系统身份验证代理(Web 帐户管理器)进行身份验证,通常不会出现提示。 在其他平台上,在没有代理库的Windows计算机上,登录会回退到上述浏览器流。 传入 --device-code 会绕过代理程序,并强制使用 OAuth 设备代码流程,而不是浏览器流程。

无外设 OAuth(client_credentials 授权)

对于没有可用的浏览器的 CI 或 cron 用例,请设置 oauthGrantType: "client_credentials"。 这需要:

  • oauthClientId— MCP 提供程序颁发的静态客户端 ID。
  • oauthPublicClient: false- 客户端是机密的。
  • 存储在系统钥匙串中的 client_secret(通过 /mcp UI 配置一次,或写入 OAuth 凭据存储)。

配置后,CLI 将完全跳过浏览器、回调服务器、PKCE 和动态客户端注册。 每次遇到 401 错误时,会将 grant_type=client_credentials 直接发送至服务器检测到的令牌端点。

{
    "mcpServers": {
        "headless-api": {
            "type": "http",
            "url": "https://api.example.com/mcp",
            "tools": ["*"],
            "oauthClientId": "YOUR-CLIENT-ID",
            "oauthPublicClient": false,
            "oauthGrantType": "client_credentials"
        }
    }
}

筛选器映射

控制如何使用服务器配置中的filterMapping字段来处理 MCP 工具输出。

模式说明
none无筛选。
markdown将输出格式化为 Markdown。
hidden_characters删除隐藏或控制字符。 违约。

内置 MCP 服务器

CLI 包括内置 MCP 服务器,这些服务器在没有其他设置的情况下可用。

服务器说明
github-mcp-server
GitHub API 集成:问题、拉取请求、标签、提交、代码搜索和 GitHub Actions。
playwright浏览器自动化:导航、单击、键入、屏幕截图和表单处理。
fetch通过 fetch 工具发送的 HTTP 请求。
time时间实用工具: get_current_timeconvert_time

用于 --disable-builtin-mcps 禁用所有内置服务器,或 --disable-mcp-server SERVER-NAME 禁用特定服务器。

GitHub MCP 服务器工具

github-mcp-server 提供以下工具。

工具说明
get_file_contentssearch_code浏览存储库文件。
list_issuesissue_readsearch_issues问题跟踪。
get_pull_requestlist_pull_requestsget_pull_request_files拉取请求。
list_commitsget_commit提交历史记录。
list_workflow_runsget_workflow_run_logs
GitHub Actions。
get_labellist_labellabel_write标签管理。

MCP 服务器命名

服务器名称可以包含任何可打印字符,包括空格、Unicode 字符和标点符号。 不允许控制字符(U+0000–U+001F、U+007F)和右大括号(})。 服务器名称用作工具名称的前缀,例如,名为 my-server 的服务器生成类似 my-server-fetch 的工具名称,而名为 My Server 的服务器生成类似 My Server-fetch 的工具名称。

MCP 工具名称清理

MCP 服务器名称和工具名称在发送到模型之前进行过滤。 工具名称中无效的字符(除了 a-zA-Z0-9-_ 之外的任何字符)都将被 - 替换。 Unicode 字符是 Punycode 编码的。 符号 @ 也替换为 - ,以避免与 Punycode 编码冲突。

组合名称 (serverName-toolName) 上限为 64 个字符。 截断将创建名称冲突时,将追加数字后缀(例如,my-server-tool2``my-server-tool3),以确保唯一性。

MCP 服务器信任级别

MCP 服务器从多个源加载,每个源具有不同的信任级别。

来源信任级别需评审
内置
存储库 (.github/mcp.json中等推荐
工作区 (.mcp.json中等推荐
用户配置(~/.copilot/mcp-config.jsonUser-defined用户责任
远程服务器始终

所有 MCP 工具调用都需要显式权限。 这甚至适用于对外部服务的只读操作。

MCP 服务器加载优先级

来自不同源的 MCP 服务器按优先级顺序合并(第一个最高)。 当服务器共享名称时,优先级较高的源优先。

  1. --additional-mcp-config 选项(最高)
  2. 插件提供的服务器
  3. 工作区服务器 — .mcp.json.github/mcp.json 从工作目录向上加载到 Git 根目录;要求该文件夹受信任
  4. ~/.copilot/mcp-config.json (最低)

注意

工作区 MCP 服务器(.mcp.json.github/mcp.json)在交互式会话和 SDK 服务器模式会话中都会被加载,前提是工作目录已受信任。 有关文件夹信任的详细信息,请参阅 允许和拒绝工具使用

企业 MCP 允许列表

GitHub Enterprise 组织可以强制实施允许的 MCP 服务器白名单。 处于活动状态时,CLI 会根据企业策略评估每个非默认服务器,然后再连接。

检测到 GitHub Enterprise 注册表策略(或启用 MCP_ENTERPRISE_ALLOWLIST 实验性功能标志)时,CLI:

  1. 根据每个配置的非默认服务器的命令、参数和远程 URL 计算指纹。
  2. 将指纹发送到企业白名单评估端点。
  3. 仅允许指纹已获批准的服务器;所有其他服务器都将被阻止,并收到一个包含企业名称的消息。

此检查为“失效关闭”模式:如果评估终结点不可访问或返回错误,则会阻止非默认服务器,直至策略可以被验证。

当企业允许列表阻止服务器时,CLI 会显示:

MCP server "SERVER-NAME" was blocked by your enterprise "ENTERPRISE-NAME".
Contact your enterprise administrator to add this server to the allowlist.

内置默认服务器始终不受允许列表强制实施的约束。

迁移自 .vscode/mcp.json

如果项目使用 .vscode/mcp.json(VS Code 的 MCP 配置格式),请迁移到 .mcp.json 以便于 GitHub Copilot CLI。 迁移会将密钥servers重新映射到 mcpServers

POSIX Shell(bash、zsh、fish 和其他):

jq '{mcpServers: .servers}' .vscode/mcp.json > .mcp.json

需要 jq

PowerShell:

pwsh -NoProfile -Command "`$json = Get-Content '.vscode/mcp.json' -Raw | ConvertFrom-Json; `$content = ([pscustomobject]@{ mcpServers = `$json.servers } | ConvertTo-Json -Depth 100); [System.IO.File]::WriteAllText('.mcp.json', `$content, (New-Object System.Text.UTF8Encoding `$false))"

在Windows,如果使用 Windows PowerShell 而不是 PowerShell Core,请将 pwsh 替换为 powershell

Stdio 服务器输出

MCP stdio 传输协议将 stdout 专用于以换行符分隔的 JSON-RPC 帧。 在将输出传递到协议分析器之前,CLI 会自动筛选出任何非 JSON 行(纯文本日志、异常堆栈跟踪或仅空格行)。

将所有诊断输出写入 stderr,而不是 stdout。 将日志或错误消息写入 stdout 的服务器可以触发分析错误反馈循环,该循环会停止初始化握手;筛选器通过静默删除非 JSON 帧来阻止此情况。

超过 1 MB 的行会绕过结构检查,并按原样转发,以避免拆分或丢弃超大但有效的协议帧(例如,一个较大的 tools/list 响应)。

技能指南

技能是可扩展 CLI 功能的 Markdown 文件。 每个技能都位于其自己的目录中,其中包含一个 SKILL.md 文件。 调用(通过 /SKILL-NAME 或自动由代理调用)时,技能的内容将注入到会话中。

技能前页字段

领域类型必需说明
name字符串是的技能的唯一标识符。 仅字母、数字和连字符。 最多 64 个字符。
description字符串是的技能的作用以及何时使用它。 最多 1024 个字符。
argument-hint字符串在技能选取器中显示的、用于描述预期参数的自由格式提示(例如 "[target] [mode]")。
allowed-toolsString 或 String[]技能处于活动状态时自动允许的工具的逗号分隔列表或 YAML 数组。 将 "*" 用于所有工具。
user-invocable布尔用户是否可以使用 /SKILL-NAME 调用技能。 默认值:true
disable-model-invocation布尔阻止代理自动调用此技能。 默认值:false

技能位置

系统将按照优先顺序从这些位置加载技能(对于重复名称,以首次找到项为准)。

位置Scope说明
.github/skills/项目项目特定技能
.agents/skills/项目替代项目位置。
.claude/skills/项目与 Claude 兼容的位置。
.github/skills/继承Monorepo 父目录支持。
~/.copilot/skills/个人适用于所有项目的个人技能。
~/.agents/skills/个人跨所有项目共享的代理技能。
插件目录插件已安装插件中的技能。
COPILOT_SKILLS_DIRS自定义其他目录(逗号分隔)。
--add-dir <path>添加了根
.github/skills/ 在添加的 --add-dir目录下, /add-dir或 SDK 的 additionalDirectories目录下。 这是一个信任决策:新增技能与项目技能具有相同的信任级别。
(与 CLI 捆绑)内置CLI 附带的技能。 最低优先级 - 可以被任何其他来源替代。
(组织/企业)远程由你的组织或企业托管、通过 AHP 中继提供的技能。 调用技能时,会按需提取内容。

当本地技能具有相同名称时,远程技能与本地技能一起投影,并遵循相同的基于名称的优先级。

当两个插件提供具有相同名称的技能时,两个插件都使用插件限定的调用名称(例如 /my-plugin/search/other-plugin/search) 共存。 仅名称会路由到优先级更高的插件。 这仅适用于技能;命令仍保持标准的基于层级的去重机制,其中优先级更高的来源优先。

非交互式安装技能

使用 copilot plugins install --skill 可从文件、URL 或目录安装技能,而无需打开交互式会话:

# Install for your user account (default scope)
copilot plugins install --skill ./my-skill/SKILL.md

# Install into the current project (.github/skills; file or URL skills only)
copilot plugins install --skill --scope project ./my-skill/SKILL.md

安装一个目录时,系统会将其注册为自定义技能源,而不是复制该目录。 安装文件或 URL 会将技能的内容复制到个人或项目技能目录中。 等效的交互式命令为 /skills add [--project] <FILE|URL|DIRECTORY>. 有关完整选项参考,请参阅 GitHub Copilot CLI 插件参考

命令(可选技能格式)

命令是 .md 中存储为单个 .claude/commands/ 文件的技能的替代项。 命令名称派生自文件名。 命令文件使用简化格式(无需 name 字段),并支持 argument-hintdescriptionallowed-toolsdisable-model-invocation。 命令的优先级低于具有相同名称的技能。

自定义代理参考

自定义代理是在 Markdown 文件中定义的专用 AI 代理。 文件名(减扩展名)将成为代理 ID。 使用 .agent.md.md 用作文件扩展名。

内置代理

代理人默认模型说明
code-reviewclaude-sonnet-4.5高信噪比代码审查。 分析代码差异中的缺陷、安全问题和逻辑错误。 不会修改代码。
exploregpt-5.4-mini快速代码库浏览。 搜索文件、读取代码和回答问题。 提供不超过300字的简明答案。 可以安全地并行运行。
general-purposeclaude-sonnet-4.5支持复杂多步骤任务的全功能代理。 在单独的上下文窗口中运行。
researchclaude-haiku-4.5根据说明执行全面搜索。 使用引文搜索 GitHub 存储库、提取文件、验证声明和报告详细发现。
rubber-duck互补模型使用互补模型来对提案、设计、实现或测试进行建设性的批评。 标识薄弱点并建议改进。 请参阅“关于橡皮鸭智能体”。
security-reviewclaude-sonnet-4.5以安全为中心的代码评审。 分析 11 个类别中的高置信度漏洞变化。 仅标记可利用性置信度超过 80% 的问题。 报告严重程度和置信度评分。 不会修改代码。
taskclaude-haiku-4.5命令执行(测试、构建、代码检查)。 成功时返回简要摘要,失败时返回全部输出。

code-reviewsecurity-review 绝不会将完整审查转发给另一个审查代理:因为启动某个审查者本身就已经满足了“使用”或“调用”审查者的请求,所以它会自行完成审查,而不会在整个委托链中递归地将整个任务委托给嵌套的 code-reviewsecurity-review 子代理。 code-review 仍会将请求中侧重安全的部分交由专门的 security-review 专家处理,并且这两个代理都可以将范围较窄且可独立界定的事实查证工作委托给非审查代理,例如 explore

只有根代理才能调用 store_memoryvote_memory 来保存某条记忆或对其进行投票。 子代理通过对存储的 read_memories记忆保持读取访问权限,但无法对它们进行写入或投票。

自定义代理程序前端字段

领域类型必需说明
description字符串是的说明显示在代理列表和task 工具中。
infer布尔允许主代理自动委派。 默认值:true
mcp-servers对象要连接的 MCP 服务器。 使用与~/.copilot/mcp-config.json相同的模式。
model字符串此代理的 AI 模型。 未设置时,继承外部代理的模型。 当会话模型设置为 Auto (服务器选择)时,子代理始终继承解析的会话模型,而不考虑此字段。
name字符串显示名称。 默认为文件名。
reasoningEffort字符串该代理的默认推理强度(例如,"low""medium""high")。 当未设置时,继承外部智能体的努力值。
tools字符串[]代理可用的工具。 默认值: ["*"] (所有工具)。 在列表中的任意位置包含 * 即可授予对所有工具的完全访问权限——例如,["view", "*"] 会授予对所有工具的访问权限,而不只是 view

无论代理是通过 task 工具调度,还是直接启动(例如,通过 SDK 的 session.startSubagent),modelreasoningEffort 都适用。 它们按以下优先级确定,优先级从高到低依次为:每次调用时显式指定的值、model中的subagents覆盖值、代理定义中的/reasoningEffort``~/.copilot/settings.json字段,最后是父会话的值。 若声明的模型或操作无法被满足,系统将回退到会话的默认值,而非导致分派失败。

自定义代理位置

Scope位置
项目
.github/agents/.claude/agents/
用户~/.copilot/agents/
插件<plugin>/agents/
添加了根
.github/agents/位于使用 --add-dir/add-dir 或 SDK 的 additionalDirectories 添加的目录下。 添加该目录是一项信任决策:其中的代理会作为受信任的配置被加载。

对于项目作用域的代理,CLI 会从当前工作目录开始,逐级向上遍历直到 Git 根目录,并在沿途每一级父目录中加载 .github/agents/.claude/agents/ 目录。 这意味着 monorepo 中的每个包或子目录都可以贡献自己的代理。 当路径中存在多个 .github/agents/ 目录时,将加载所有目录,其中最深的目录具有最高优先级。 在同一级别中,.github/agents/ 约定优先于 .claude/agents/。 用户级代理的优先级低于项目级代理。 插件代理的优先级最低。

代理通信

在自定义代理中使用 list_agentswrite_agent,以检查附近的代理并在多代理会话中协调工作。

list_agents中的关系标签

关系标签标识可见代理与当前代理的关系。 当子代理在启用了共享同级通信的父会话内运行时,将显示标签。

标签Meaning使用它来
"self"当前代理确认哪个条目表示活动智能体
"sibling"由同一父级启动的智能体通过 write_agent 与对等代理协调
"child"由当前智能体启动的智能体跟踪当前智能体委派的后续工作

作用域列表

scope上使用list_agents,以便在选择目标之前缩小列表范围。

scopeReturns使用它来
省略当前上下文中的邻近智能体请参阅当前工作流的默认工作集
"siblings"仅同级代理查找同一父级启动的对等智能体
"children"仅限当前智能体的子智能体查看当前智能体委派的工作
"all"所有可见代理检查完整会话树而不使用它进行协调

在单代理会话中,默认视图以子代理为中心。 在多代理会话中,默认视图显示即时本地上下文,而不是整个树。

list_agents(scope="siblings")
list_agents(scope="children")
list_agents(scope="all")

作用域内消息传送

scope上使用write_agent,将一条消息广播给多个相关代理。

仅可在启用了共享同级通信的父会话内运行的子智能体中使用作用域内消息传送。 在顶级会话中,应改为以具有显式 agent_id 值的代理为目标。

scope发送到使用它来
"siblings"所有可见的同级代理在共享会话中协调协作工作
"children"当前代理的所有子代理向委派的工作发送相同的后续工作

如果某个作用域匹配的智能体过多,write_agent 会返回错误,并要求改为从 agent_id 提供明确的 list_agents 值。

write_agent(scope="children", message="Re-check your findings against the updated schema.")
write_agent(scope="siblings", message="Post status when your current check completes.")
write_agent(agent_id="explore-auth", message="Focus on token refresh flow and report only confirmed issues.")

子代理限制

CLI 强制实施深度和并发限制以防止生成失控代理。

Limit默认麦克斯
最大深度6256
最大并发数基于计划的32

深度 计数彼此嵌套的代理数。 达到深度限制时,最内部的代理无法生成进一步的子代理。 并发 计数在整个会话树中同时运行的子代理数。 达到限制后,将拒绝新的子代理请求,直到活动代理完成。

默认并发限制取决于您所用的 Copilot 套餐:

Plan最大并发数
免费/教育2
Pro/ Pro+4
麦克斯8
商业16
Enterprise32
基于使用量的计费32

按使用量计费的用户可通过 subagents.maxConcurrencysubagents.maxDepth 设置覆盖这些限制:

{
    "subagents": {
        "maxConcurrency": 16,
        "maxDepth": 10
    }
}

超出有效范围的值会被限制:maxConcurrency 的上限为 32maxDepth 的下限为 256。 对于不使用基于使用情况的计费的计划,将忽略这些设置。 请参阅 配置文件设置

Sidekick 智能体

Sidekick 代理在后台自动运行,并将上下文发布到会话收件箱中。 它们响应会话事件,而不是被显式调用。

在任何代理定义中添加 sidekick: 块,使其成为辅助代理:

---
name: Context Gatherer
description: Gathers relevant context when the working directory changes
sidekick:
    triggers:
        - session.context_changed
        - event: user.message
          limit: 1
    behavior: persistent
    maxSendsPerTurn: 2
---

Gather useful context about the current repository and working directory.
Summarize recent changes and any relevant project structure.

Sidekick 触发器

triggers 中的每个条目要么是一个纯事件名称字符串,可触发无限次;要么是一个包含 event 和可选的 limit 的对象。

事件说明
user.message在每次用户发送消息时触发。
session.context_changed在工作目录、仓库或分支发生变化时触发(例如,在 cd 之后或切换 Git 分支后)。
触发器字段类型默认说明
eventstring必需启动此代理的会话事件类型。
limitnumber无限制此触发器每个会话可触发的最大次数。 设置时必须是正整数。

Sidekick 配置字段

领域类型默认说明
triggers
string[] 或 object[]必需启动此代理的会话事件类型。 至少需要一个触发器。
behaviorstring"restart"
"restart":每次触发时取消之前的运行并重新开始。
"persistent":保持同一个长时间运行的进程持续运行,并将新消息投递到现有循环中,而不是重新启动。
maxSendsPerTurnnumber1每个触发器允许的最大收件箱发送量。 在 "persistent" 模式下,每个传递的用户消息都会重置此预算。

"restart" 的行为模式适合用于收集上下文的无状态代理。 "persistent" 行为适用于跨轮次累积状态的智能体。

权限审批结果

当 CLI 提示执行作的权限时,可以使用以下键进行响应。

密钥Effect
y允许此特定请求一次。
n拒绝此特定请求一次。
!在会话剩余时段允许所有类似的请求。
#在会话剩余时段拒绝所有类似的请求。
?显示有关请求的详细信息。

显示完整对话框后,还可以从以下选项中进行选择:

选项Scope持久性
一旦单一使用没有
此位置在手动清除之前按位置保存到磁盘
始终永久配置文件

当 CLI 可以确定位置密钥(Git 根目录或当前目录)时,将显示 “此位置 ”选项。 它将审批保存到磁盘,以便在下次在该目录中工作时自动授予相同的权限,而无需再次提示。

使用 /permissions reset 清除当前会话的内存中授权。

安全性

计划模式

/plan 启动规划会话,在该会话中,Copilot CLI 可以浏览和分析你的代码库,但无法编辑你的项目文件。 Specifically:

  • 项目文件受到保护。 任何试图编辑、修补文件,或运行会更改工作区中文件的 Shell 命令的行为,都会被自动阻止——这不只是给模型的一条建议,而是直接强制执行的,因此并不取决于模型是否选择遵守。
  • 计划本身仍可编写。 Copilot 需要一个位置来保留笔记和起草计划,因此允许在自己的专用规划工作区中创建和编辑文件(包括要审阅和批准的计划文件)。
  • 委派的子任务也受到保护。 如果 Copilot 启动一个辅助会话来研究你的问题中的一部分,该辅助会话也同样受到这些限制,无法编辑你的项目。
  • 这是一个安全网,不是保证。 此保护机制旨在拦截明显、直接的文件修改尝试 — 并非万无一失的封锁。 某些事情是有意允许的,因此研究没有过度限制:例如,无法提前明确确定其效果的 shell 命令,以及对已连接的外部/MCP 工具的调用。 在实践中,这很少是个问题,但计划模式应该被视为“更改需要你在应用之前进行评审”,而不是绝对保证磁盘上没有任何内容可以更改。

当您对计划满意后,请批准该计划以退出计划模式,并让 Copilot 执行实际更改。

命令安全分析

在执行之前会分析 Shell 命令,以确定潜在的危险模式:

  • 文件删除 (rm -rf
  • 系统修改 (sudochmod 777
  • 网络渗漏(带有敏感路径的 curl
  • 凭据访问(读取 .env、SSH 密钥)
  • 用于覆盖危险变量的内联环境变量赋值(例如,PATH=...LD_PRELOAD=...

高风险命令显示其他警告,并需要显式确认。

当启用沙箱且允许绕过沙箱设置为开启(默认)时,若同步 shell 命令被沙箱的文件系统或网络策略阻止,系统会提示您在沙箱外重新运行该命令 — 无需进行模型往返处理。 确认该提示后,将重新运行该命令并返回其输出结果。 拒绝后将保留沙箱中的(被阻止的)结果。

有关详细信息,请参阅“配置本地沙盒设置”。

环境变量拒绝列表

CLI 会阻止内联分配环境变量,这些环境变量可以被利用以执行任意代码,即使在其他只读命令中也是如此。 阻止的类别包括:

类别示例
动态链接器注入
LD_*DYLD_* (所有前缀)
Git 索引配置覆盖
GIT_CONFIG_COUNTGIT_CONFIG_KEY_*GIT_CONFIG_VALUE_*(所有GIT_CONFIG_前缀)
Git 外部程序钩子
GIT_EXTERNAL_DIFFGIT_PROXY_COMMAND
Git 配置文件覆盖
GIT_CONFIGGIT_CONFIG_GLOBALGIT_CONFIG_SYSTEM
Shell PATH 和启动文件
PATHBASH_ENVENV
现有被屏蔽的变量
PAGERGIT_PAGERGIT_EDITORVISUALEDITORGIT_SSHGIT_SSH_COMMANDGIT_ASKPASSBROWSERGH_BROWSER

web_fetch SSRF 防护

该工具 web_fetch 在发出任何 HTTP 请求之前强制实施服务器端请求伪造(SSRF)保护:

  • 协议允许列表:仅允许 http://https:// URL。 file:// 和其他方案均被拒绝。
  • IP 阻止列表:IP 文本检查和 DNS 预解析阻止了对环回地址127.x.x.x(、 ::1)、RFC-1918 专用范围(10.x172.16–31.x192.168.x)和云元数据终结点(例如) 169.254.169.254的请求。
  • 已验证的重定向web_fetch 遵循 3xx 重定向(最多 10 个跃点,在 60 秒的网络预算内),在遵循该重定向之前,针对同一 IP 阻止列表重新验证每个跃点的目标。 重定向到与原始 URL 不同的源需要权限审批,这与任何其他跨域提取相同;遵循同源重定向,无需额外提示。 最终结果会注明内容何时为 (redirected from <original URL>)

若要允许 web_fetch 在开发期间访问 localhost (例如,对于本地文档服务器),请设置以下环境变量:

export COPILOT_WEB_FETCH_ALLOW_LOCALHOST=1

沙箱工具目录授权

启用本地沙盒后, Copilot CLI 发现沙盒命令可能需要的工具目录并授予每个 只读 访问权限,因此命令可以运行已安装的工具链,而无需修改它。 在进程启动之前,发现会针对每个命令运行,并从命令环境读取两种类型的源。

  • PATH(在 Windows 上为 Path)。 列表中的每个目录都是授予候选项。
  • 命名工具链变量。 CLI 在每个操作系统上检查下表中的变量。 保存单个目录的变量会将该目录授予访问权限;保存路径列表的变量会按操作系统的路径分隔符进行拆分(Windows 上为 ;,其他系统上为 :),并且每个条目都会成为一个候选授权项。

只有当候选项为真实存在的绝对路径且解析为目录时,才会被授予。 当候选项为相对路径、不存在、解析为文件系统根目录(如 /C:\),或解析到系统关键位置(Windows 上的 %WINDIR%/bin/sbin/usr/bin/usr/sbin/boot/proc/sys/dev 在 Linux 及 macOS 上),候选项将被移除,并记录原因至 sandbox_spawn 日志目标。 在进行这些检查之前,会先解析符号链接,并移除重复目录(在 Windows 上按不区分大小写的方式处理)。

Variable工具链价值通常设置为
PATH / Path可执行文件(全部)路径列表All
PYTHONPATHPython路径列表All
PYTHONHOMEPython单个目录All
VIRTUAL_ENVPython (venv)单个目录All
PYENV_ROOTPython (pyenv)单个目录All
CONDA_PREFIXConda单个目录All
GOPATHGo路径列表All
GOROOTGo单个目录All
CARGO_HOMERust(Cargo)单个目录All
RUSTUP_HOMERust(rustup)单个目录All
JAVA_HOMEJava单个目录All
NODE_PATHNode.js路径列表All
NVM_HOMENode.js (nvm)单个目录Windows操作系统
NVM_SYMLINKNode.js (nvm)单个目录Windows操作系统
DOTNET_ROOT.NET单个目录All
PSModulePathPowerShell路径列表All
VCINSTALLDIRVisual C++单个目录Windows操作系统
VSINSTALLDIRVisual Studio单个目录Windows操作系统
VCPKG_ROOTvcpkg单个目录All
LD_LIBRARY_PATH共享库路径列表Linux

每个变量在所有平台上都会被读取;通常设置在列显示了每个变量的常规填充位置,而非 CLI 强制执行的限制。 未设置的变量不会产生任何影响。

这些并非唯一的只读权限。 Copilot CLI 还授予对用户配置文件应用程序目录的访问权限(Linux 和 macOS 上的 ~/.local/bin~/.local/lib;Windows 上 %LOCALAPPDATA%\Programs 的直接子目录)、标准系统和配置文件位置,以及常用包管理器和工具链使用的缓存和注册表(在 /sandbox policy 报告中显示为 dev-tool 访问)。 若要查看当前目录(读/写、只读和拒绝路径)的完全解析策略,请在会话中运行 /sandbox policy 。 有关如何组合策略的概念,请参阅 了解 GitHub Copilot CLI 中用于本地沙盒的文件系统策略

OpenTelemetry 监视

Copilot CLI 可以通过 OpenTelemetry(OTel )导出跟踪和指标,从而了解代理交互、LLM 调用、工具执行和令牌使用情况。 所有信号名称和属性都遵循 OTel GenAI 语义约定

默认情况下,OTel 处于关闭状态,开销为零。 当满足以下任一条件时,它将激活:

  • COPILOT_OTEL_ENABLED=true
  • OTEL_EXPORTER_OTLP_ENDPOINT 已设置
  • COPILOT_OTEL_FILE_EXPORTER_PATH 已设置

OTel 配置也可以在 VS Code 中设置,或者在企业范围内的 managed-settings.json 文件中设置。 请参阅 文档中的 VS Code 和 企业管理设置

OTel 环境变量

Variable默认说明
COPILOT_OTEL_ENABLEDfalse显式启用 OTel。 如果 OTEL_EXPORTER_OTLP_ENDPOINT 已设置,则不是必需的。
OTEL_EXPORTER_OTLP_ENDPOINTOTLP 终结点 URL。 设置此项会自动启用 OTel。
COPILOT_OTEL_EXPORTER_TYPEotlp-http导出程序类型: otlp-httpfile。 当设置file时自动选择COPILOT_OTEL_FILE_EXPORTER_PATH
OTEL_EXPORTER_OTLP_PROTOCOLhttp/jsonOTLP HTTP 线路协议: http/jsonhttp/protobuf。 仅适用于 otlp-http 导出器。
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL仅为跟踪覆盖 OTEL_EXPORTER_OTLP_PROTOCOL
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL仅为指标覆盖 OTEL_EXPORTER_OTLP_PROTOCOL
OTEL_SERVICE_NAMEgithub-copilot资源属性中的服务名称。
OTEL_RESOURCE_ATTRIBUTES逗号分隔的 key=value 对的额外资源属性。 对特殊字符使用百分比编码。
OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENTfalse捕获完整的提示和响应内容。 请参阅 内容捕获
OTEL_LOG_LEVELOTel 诊断日志级别:NONE、、ERROR``WARNINFO``DEBUGVERBOSEALL
COPILOT_OTEL_FILE_EXPORTER_PATH将所有信号作为 JSON 行写入此文件。 设置此项会自动启用 OTel。
COPILOT_OTEL_SOURCE_NAMEgithub.copilot用于跟踪程序和计量的检测范围名称。
OTEL_EXPORTER_OTLP_HEADERSOTLP 导出器(例如 Authorization=Bearer token)的身份验证头。

Traces

运行时为每个智能体交互发出分层跨度树。 每个树都包含根invoke_agent范围,以及chat``execute_tool子范围。

invoke_agent span 属性

包装整个智能体调用:一个用户消息的所有 LLM 调用和工具执行。

  • 无论是顶级会话还是子智能体调用(例如 explore、task),都使用 span 类型 INTERNAL(进程内);面向提供者的推断则由子 CLIENT``chat span 表示。
  • 顶层会话还会携带server.addressserver.port;子代理调用则不会携带。
Attribute说明Scope
gen_ai.operation.nameinvoke_agent两者都有
gen_ai.provider.name提供者(例如githubanthropic两者都有
gen_ai.agent.id已知时稳定的代理定义标识符;顶级默认使用 github.copilot.default两者都有
gen_ai.agent.name代理名称(可用时)两者都有
gen_ai.agent.description代理说明(可用时)两者都有
gen_ai.agent.version已知时代理定义版本;否则为运行时版本两者都有
gen_ai.conversation.id会话标识符两者都有
enduser.pseudo.id若可用,从 analytics_tracking_id 获取假名 Copilot 用户标识符两者都有
gen_ai.request.model请求的模型两者都有
gen_ai.response.finish_reasons
["stop"]["error"]两者都有
gen_ai.usage.input_tokens总输入令牌数(所有轮次)两者都有
gen_ai.usage.output_tokens总输出标记(所有轮次)两者都有
gen_ai.usage.cache_read.input_tokens读取缓存的输入令牌两者都有
gen_ai.usage.cache_creation.input_tokens创建的缓存输入令牌两者都有
github.copilot.turn_countLLM 往返次数两者都有
github.copilot.cost货币成本两者都有
github.copilot.aiuAI 单元消耗两者都有
server.address服务器主机名仅限顶层
server.port服务器端口仅限顶层
error.type错误类名称(出错时)两者都有
gen_ai.input.messages完整输入消息作为 JSON 格式(仅限内容捕获)两者都有
gen_ai.output.messagesJSON格式的完整输出消息(仅用于捕获内容)两者都有
gen_ai.system_instructionsJSON 格式的系统提示内容(仅限内容捕获)两者都有
gen_ai.tool.definitions工具模式为 JSON(仅内容捕获)两者都有

chat span 属性

每个 LLM 请求一个跨度。 范围类型: CLIENT.

Attribute说明
gen_ai.operation.namechat
gen_ai.provider.name提供者名称
gen_ai.request.model请求的模型
gen_ai.request.stream是否使用了流式处理模式(仅流式处理)
gen_ai.conversation.id会话标识符
gen_ai.response.finish_reasons停止原因
gen_ai.response.id响应 ID
gen_ai.response.model已解析的模型
gen_ai.response.time_to_first_chunk首次流式处理区块的时间(以秒为单位)(仅流式处理)
gen_ai.usage.cache_creation.input_tokens创建的缓存令牌
gen_ai.usage.cache_read.input_tokens读取缓存令牌
gen_ai.usage.input_tokens此轮次输入令牌
gen_ai.usage.output_tokens此轮次输出令牌
github.copilot.cost轮次成本
github.copilot.aiuAI 单元消耗当前回合
github.copilot.server_duration服务器端持续时间
github.copilot.initiator请求发起者
github.copilot.turn_id轮次标识符
github.copilot.interaction_id交互标识符
server.address服务器主机名
server.port服务器端口
error.type错误类名称(出错时)
gen_ai.input.messagesJSON 格式的完整提示消息(仅限内容捕获)
gen_ai.output.messagesJSON 形式的完整响应消息(仅内容捕获)
gen_ai.system_instructionsJSON 格式的系统提示内容(仅限内容捕获)

execute_tool span 属性

为每个工具调用指定一个跨度。 范围类型: INTERNAL.

Attribute说明
gen_ai.operation.nameexecute_tool
gen_ai.provider.name提供程序名称(如果可用)
gen_ai.tool.name工具名称(例如, readFile
gen_ai.tool.typefunction
gen_ai.tool.call.id工具调用标识符
gen_ai.tool.description工具说明
error.type错误类名称(出错时)
gen_ai.tool.call.arguments工具输入参数以 JSON 格式(仅内容捕获)
gen_ai.tool.call.result工具输出为 JSON(仅限内容捕获)

Metrics

GenAI 约定指标

Metric类型单位说明
gen_ai.client.operation.duration直方图sLLM API 调用和代理调用持续时间
gen_ai.client.token.usage直方图tokens按类型排序的令牌计数 (input/output
gen_ai.client.operation.time_to_first_chunk直方图s接收第一个流媒体数据块的时间
gen_ai.client.operation.time_per_output_chunk直方图s第一个区块后的区块间延迟
gen_ai.invoke_agent.inference_calls直方图{inference_call}单次代理调用期间发起的模型调用次数,在提供方分发时计数(包括失败和部分调用;不包括在分发前被阻止的请求)。 维度: gen_ai.agent.name.
gen_ai.invoke_agent.tool_calls直方图{tool_call}在一个代理调用期间进行的客户端工具调用数(包括失败和部分调用);不包括合成 CLI 工具生命周期和提供程序执行的服务器端工具。 维度: gen_ai.agent.name.

特定于供应商的指标

Metric类型单位说明
github.copilot.tool.call.countCountercalls通过 gen_ai.tool.namesuccess 调用工具
github.copilot.tool.call.duration直方图s工具执行由 gen_ai.tool.name 产生的延迟
github.copilot.agent.turn.count直方图轮次每个代理调用的 LLM 往返次数
github.copilot.mcp.server.connection.countCounter尝试按传输方式和结果划分的已完成 MCP 服务器连接尝试次数
github.copilot.code.lines_addedCounterlines由文件编辑工具添加的行,实时记录
github.copilot.code.lines_removedCounterlines文件编辑工具删除的行会被实时记录

跨度事件

在活动 chatinvoke_agent 跨度上记录的生命周期事件。

事件说明密钥属性
github.copilot.hook.start挂钩开始执行
github.copilot.hook.typegithub.copilot.hook.invocation_id
github.copilot.hook.end挂钩成功完成
github.copilot.hook.typegithub.copilot.hook.invocation_id
github.copilot.hook.error挂钩失败
github.copilot.hook.typegithub.copilot.hook.invocation_idgithub.copilot.hook.error_message
github.copilot.session.truncation对话历史记录被截断
github.copilot.token_limitgithub.copilot.pre_tokensgithub.copilot.post_tokensgithub.copilot.pre_messagesgithub.copilot.post_messagesgithub.copilot.tokens_removedgithub.copilot.messages_removedgithub.copilot.performed_by
github.copilot.session.compaction_start历史压缩开始没有
github.copilot.session.compaction_complete已完成历史记录压缩
github.copilot.successgithub.copilot.pre_tokensgithub.copilot.post_tokensgithub.copilot.tokens_removedgithub.copilot.messages_removedgithub.copilot.message(仅内容捕获)
github.copilot.skill.invoked调用了技能
github.copilot.skill.namegithub.copilot.skill.pathgithub.copilot.skill.plugin_namegithub.copilot.skill.plugin_version
github.copilot.session.shutdown会话正在关闭
github.copilot.shutdown_typegithub.copilot.total_premium_requestsgithub.copilot.lines_addedgithub.copilot.lines_removedgithub.copilot.files_modified_count
github.copilot.session.abort用户取消了当前操作github.copilot.abort_reason
exception会话错误
github.copilot.error_typegithub.copilot.error_status_codegithub.copilot.error_provider_call_id

资源属性

所有信号都携带这些资源属性。

Attribute价值
service.name
github-copilot (可通过 OTEL_SERVICE_NAME
service.version运行时版本

内容捕获

默认情况下,不会捕获提示内容、响应或工具参数,仅捕获模型名称、令牌计数和持续时间等元数据。 若要捕获完整内容,请设置 OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true

警告

内容捕获可能包括敏感信息,例如代码、文件内容和用户提示。 仅在受信任的环境中启用此功能。

启用内容捕获后,将填充以下属性。

AttributeContent
gen_ai.input.messages完整提示消息 (JSON)
gen_ai.output.messages完整响应消息 (JSON)
gen_ai.system_instructions系统提示内容 (JSON)
gen_ai.tool.definitions工具架构 (JSON)
gen_ai.tool.call.arguments工具输入参数
gen_ai.tool.call.result工具输出结果

延伸阅读