Copilot 命令行界面(CLI) 将其配置、会话历史记录、日志和自定义存储在计算机上的单个目录中。 默认情况下,此目录为 ~/.copilot (即 $HOME/.copilot) 。
本文介绍此目录的内容以及如何使用它们。
目录概述
该 ~/.copilot 目录包含以下顶级项。
| 路径 | 类型 | 说明 |
|---|---|---|
agents/ | 目录 | 个人自定义代理定义 |
config.json | File | 自动管理的应用程序状态(身份验证、已安装的插件和其他内部数据) |
copilot-instructions.md | File | 个人自定义说明(适用于所有会话) |
extensions/ | 目录 | 由 CLI 加载的个人扩展 |
hooks/ | 目录 | 用户级挂钩脚本 |
ide/ | 目录 | IDE 集成状态 |
installed-plugins/ | 目录 | 已安装的插件文件 |
instructions/ | 目录 | 其他个人 *.instructions.md 文件 |
logs/ | 目录 | 会话日志文件 |
lsp-config.json | File | 用户级 LSP 服务器定义 |
mcp-config.json | File | 用户级 MCP 服务器定义 |
mcp-oauth-config/ | 目录 | MCP OAuth 令牌和注册后备存储 |
mcp-secrets/ | 目录 | MCP 密钥占位符的本地后备存储和索引 |
permissions-config.json | File | 每个项目保存的工具和目录权限 |
plugin-data/ | 目录 | 已安装插件的持久数据 |
session-state/ | 目录 | 会话历史记录和工作区数据 |
command-history-state/ | 目录 | 命令历史记录数据 |
session-store.db | File | 用于跨会话数据的 SQLite 数据库 |
settings.json | File | 个人配置设置 |
skills/ | 目录 | 个人自定义技能定义 |
注意
并非所有项都立即出现。 有些是在首次使用特定功能时按需创建的,例如, installed-plugins/ 仅在安装第一个插件后显示。
用户可编辑的文件
以下文件旨在由你直接编辑,或通过 CLI 命令进行管理。
settings.json
这是用于 Copilot 命令行界面(CLI) 的主配置文件。 在会话中,可以使用交互式 /settings 命令更改特定值,或运行 /settings KEY VALUE 以设置单个值。 请参阅“使用 /settings 命令更改设置”。 或者,可以直接在文本编辑器中编辑 settings.json 文件。 该文件支持带有注释的 JSON(JSONC)。
默认情况下,此文件位于 ~/.copilot 目录(即用户级配置目录)。 它包含所有存储库的全局用户级默认值。 可以通过将环境变量设置为 COPILOT_HOME 其他路径来更改此目录的位置。
注意
用户可编辑的设置最初存储在 config.json. 他们被转移到 settings.json了。 启动时存在 config.json 的任何用户设置都将自动迁移到 settings.json。
注意
如果 settings.json 无法读取、分析或验证, Copilot 命令行界面(CLI) 则忽略无效值(识别 config.json 的值仍在合并中),并在时间线上显示一个标识错误的启动警告。 修复了报告的问题以还原受影响的设置。
有关设置的完整列表及其与存储库级配置交互的方式,请参阅本文后面的 配置文件设置 。
提示
在终端中运行 copilot help config 以获取快速参考。
copilot-instructions.md
适用于所有会话的个人自定义说明,无论你正在使用哪个项目。 此文件的工作方式与存储库级别 copilot-instructions.md 相同,但全局应用。
有关详细信息,请参阅“为GitHub Copilot添加存储库自定义说明”。
instructions/
将此处的其他个人说明文件存储为 *.instructions.md 文件。 这些内容将与 copilot-instructions.md 一起加载,并适用于所有会话。 可以按主题组织说明,例如 ~/.copilot/instructions/code-style.instructions.md。
mcp-config.json
定义用户级别可用的 MCP(模型上下文协议)服务器。 无论你处于哪个项目目录,这些服务器都可以在所有会话中使用。 项目级 MCP 配置(在 .mcp.json 或 .github/mcp.json 中)在当服务器名称冲突时,优先于用户级定义。
有关详细信息,请参阅“为 GitHub Copilot 命令行界面 (CLI) 添加 MCP 服务器”。
lsp-config.json
定义在用户级别提供的语言服务器协议标准(LSP)服务器。 这些服务器向代理提供语言智能(诊断、完成等)。 使用 /lsp 斜杠命令管理此文件,或直接对其进行编辑。
有关详细信息,请参阅“为 GitHub Copilot 命令行界面 (CLI) 添加 LSP 服务器”。
agents/
将个人自定义代理定义存储在此处作为 .agent.md 文件。 放置在此目录中的代理在所有会话中都可用。 项目级智能体(位于 .github/agents/ 中)如果与个人智能体同名,将优先使用。
有关详细信息,请参阅“为 GitHub Copilot 命令行界面 (CLI) 创建和使用自定义智能体”。
skills/
在此处存储个人自定义技能定义。 每个技能都位于一个包含 SKILL.md 文件的子目录中,例如 ~/.copilot/skills/my-skill/SKILL.md。 所有会话中均可使用个人技能。 项目级别的技能优先于个人技能(如果两者同名)。
有关详细信息,请参阅“为 GitHub Copilot 命令行界面 (CLI) 添加代理技能”。
hooks/
在此处存储用户级挂钩脚本。 这些挂钩适用于所有会话。 还可以使用 ~/.copilot/settings.json 键在用户配置文件 (hooks) 中以内联方式定义挂钩。 存储库级挂钩(in .github/hooks/)与用户级挂钩一起加载。
有关详细信息,请参阅“与 GitHub Copilot 命令行界面 (CLI) 一起使用挂钩”。
extensions/
在此处存储用户级扩展文件。 此目录中的扩展可在会话之间使用。
可以手动在此目录中创建文件,或搭建扩展基架,然后编辑生成的文件。
自动管理文件
以下项由 CLI 管理。 通常不应手动编辑它们。
config.json
存储 CLI 自动管理的内部应用程序状态,包括身份验证数据、已安装的插件元数据和其他运行时信息。 通常不需要编辑此文件。
注意
早期版本的Copilot 命令行界面(CLI)将用户设置和应用程序状态存储在config.json中。 用户可编辑的设置现在位于 settings.json。 启动时的任何用户设置 config.json 都将自动迁移到 settings.json。 应用程序状态字段(例如loggedInUsers、installedPlugins和firstLaunchAt``staff)仍保留在其中config.json,并且不会迁移。
permissions-config.json
存储已保存的工具和目录权限决策,按项目位置进行组织。 批准工具或授予对当前位置目录的访问权限时,CLI 会在此处记录决策,这样就不会在同一存储库或目录中再次提示你。
注意
如果要重置项目的权限,可以从此文件中删除相关条目。 但是,在会话运行时编辑文件可能会导致意外行为。 CLI 会自动删除磁盘上不再存在其位置路径的条目。
文件位置
Copilot 命令行界面(CLI) 从配置目录中定位该文件。
| 优先级 | Source | 使用的文件 |
|---|---|---|
| 1 | --config-dir=DIRECTORY | DIRECTORY/ |
| 2 | COPILOT_HOME | $COPILOT_HOME/ |
| 3 | Default | ~/ |
CLI 仅按此顺序使用第一个适用的配置目录。 它也不会从优先级较低的位置加载 permissions-config.json 。
此选项 --config-dir 是旧选项。 需要更改配置目录时首选 COPILOT_HOME 。
在Windows上,默认文件通常是:
C:\Users\YOUR-USER\.copilot\permissions-config.json
较旧的构建版本使用了一个名为 permissions-config 的无扩展名文件。 如果 permissions-config.json 不存在,但无扩展文件仍然存在,CLI 仍遵循旧文件。 新编辑时请使用 permissions-config.json。
当未设置 ~/.copilot 时,程序会在启动时将先前基于 XDG 的配置位置迁移到 COPILOT_HOME。
位置键
顶层 locations 对象以绝对路径为键。
- 对于 Git 存储库,请使用用于界定权限范围的 Git 根目录。
- 链接的工作树解析为主存储库根,因此它们与主工作树共享权限。
- 子模块使用自己的工作目录。
- 对于不在 Git 存储库中的目录,请使用规范化当前工作目录。
密钥必须与运行的位置 Copilot 命令行界面(CLI) 匹配。 如果密钥不匹配,则保存的审批将不适用。
当会话启动和活动工作目录更改时,CLI 会加载匹配位置的批准。
Schema
该文件必须包含 JSON 对象。
| 领域 | 类型 | 必需 | Default | 允许的值 | 说明 |
|---|---|---|---|---|---|
locations | 对象 | 否 | {} | 绝对路径键 | 保存批准的位置键映射。 |
locations.<key> | 对象 | 否 | {} | 任意绝对位置键 | 针对一个存储库或目录的已保存批准。 |
locations.<key>.tool_approvals | Array | 否 | [] | 审批对象 | 已批准用于此位置的工具。 |
locations.<key>.allowed_directories | 字符串数组 | 否 | [] | 绝对目录路径 | 路径门可以访问此位置的额外目录。 CLI 应用配置时,必须存在每个目录。 |
locations.<key>.tool_approvals[].kind | String | 是的 | None | ||
commands、read、write、mcp、mcp-sampling、memory、custom-tool、extension-management、extension-permission-access | 选择审批类型。 | ||||
command | 字符串数组 | 是,对于 commands | None | 命令标识符 | 待批准的 Shell 命令标识符。 |
serverName | String | 是,对于 mcp 和 mcp-sampling | None | MCP 服务器名称 | 待批准的 MCP 服务器。 |
toolName | 字符串或 null | 是,对于 mcp | None | MCP 工具名称,或 null | 要批准的 MCP 工具。 使用 null 批准服务器上的所有工具。 |
toolName | String | 是,对于 custom-tool | None | 自定义工具名称 | 按确切名称批准的自定义工具。 |
operation | String | 否,对于 extension-management | 省略 | 扩展操作名称 | 待批准的扩展管理操作。 省略此字段以批准所有扩展管理操作。 |
extensionName | String | 是,对于 extension-permission-access | None | 扩展名称 | 已批准访问权限门控功能的扩展。 |
permissions-config.json 不支持拒绝规则、“ask”规则、默认模式、URL 规则、工具筛选或存储库本地共享策略。 对于这些行为,请使用命令行选项,例如--deny-tool、--available-tools、--excluded-tools和--allow-url``--deny-url。 保存的 URL 规则存储在其中 settings.json,而不是存储在其中 permissions-config.json。
未知字段不是架构的一部分。 CLI 可能会忽略它们,以后的写入可能会删除它们。
审批类型
每个项 tool_approvals 必须是下列对象之一。
kind | 必填字段 | 可选字段 | Meaning |
|---|---|---|---|
commands | command | None | 批准匹配的 shell 命令标识符。 |
read | None | None | 批准读取工具请求。 交互式 CLI 会话已自动批准读取,因此这通常是不必要的。 |
write | None | None | 批准创建和修改文件的工具请求。 路径提示仍可应用于允许的目录之外的路径。 |
mcp | |||
serverName、toolName | None | 批准一个 MCP 工具,或者在 toolName 为 null 时批准服务器上的所有工具。 | |
mcp-sampling | serverName | None | 批准针对单个服务器的 MCP 采样请求。 |
memory | None | None | 批准内存写入和投票请求。 |
custom-tool | toolName | None | 按确切名称批准自定义工具。 |
extension-management | None | operation | 批准扩展管理。 如果 operation 省略,则所有扩展管理操作都匹配。 |
extension-permission-access | extensionName | None | 批准扩展对权限门控功能的访问。 |
对于 MCP 审批, serverName 必须与配置的 MCP 服务器名称完全匹配。 使用 MCP 配置中的原始服务器名称,而不是经过规范化处理的工具名称前缀。
Shell命令匹配
permissions-config.json 不支持正则表达式或常规 glob 模式。 字符串值按字面意义进行匹配,但在 shell 的 :* 值中,末尾的 commandIdentifiers 会匹配 :* 前的文本,既可以仅匹配该文本本身,也可以后跟一个空格及更多内容。 一个普通 * 没有特殊的含义,所以 git* 不匹配 git status。
| 图案 | Matches | 不匹配 |
|---|---|---|
git status | git status | git status --short |
git:* | ||
git、git status、git push | gitea | |
gh pr:* | ||
gh pr、gh pr view、gh pr create | gh repo view |
目录匹配
allowed_directories 条目允许 Copilot 命令行界面(CLI) 在没有单独的路径提示的情况下访问这些目录中的路径。 他们并不批准该工具本身的操作。 例如,在允许的目录中编辑文件仍需要 write 审批。
每个 allowed_directories 条目必须是绝对的、非空的可访问目录。 CLI 在比较路径之前解析符号链接,阻止 UNC 网络路径,除非它们是扩展长度的本地路径,在 Windows 上不区分大小写地比较路径,在其他平台上区分大小写。 如果无法应用条目,CLI 会记录警告并跳过该条目。
Examples
允许所有 Git 子命令并访问额外的本地目录:
{
"locations": {
"C:\\src\\my-repo": {
"tool_approvals": [
{
"kind": "commands",
"commandIdentifiers": ["git:*"]
}
],
"allowed_directories": ["C:\\src\\shared-docs"]
}
}
}
{
"locations": {
"C:\\src\\my-repo": {
"tool_approvals": [
{
"kind": "commands",
"commandIdentifiers": ["git:*"]
}
],
"allowed_directories": ["C:\\src\\shared-docs"]
}
}
}
允许在文件写入前仍询问所选命令:
{
"locations": {
"/Users/YOUR-USER/src/my-repo": {
"tool_approvals": [
{
"kind": "commands",
"commandIdentifiers": [
"git status",
"git diff",
"git log",
"npm test",
"npm run build"
]
}
]
}
}
}
{
"locations": {
"/Users/YOUR-USER/src/my-repo": {
"tool_approvals": [
{
"kind": "commands",
"commandIdentifiers": [
"git status",
"git diff",
"git log",
"npm test",
"npm run build"
]
}
]
}
}
}
批准文件写入和存储库的一个 MCP 服务器:
{
"locations": {
"/home/YOUR-USER/src/my-repo": {
"tool_approvals": [
{
"kind": "write"
},
{
"kind": "mcp",
"serverName": "github-mcp-server",
"toolName": null
}
]
}
}
}
{
"locations": {
"/home/YOUR-USER/src/my-repo": {
"tool_approvals": [
{
"kind": "write"
},
{
"kind": "mcp",
"serverName": "github-mcp-server",
"toolName": null
}
]
}
}
}
批准一个 MCP 工具、内存写入和扩展权限访问:
{
"locations": {
"C:\\src\\my-repo": {
"tool_approvals": [
{
"kind": "mcp",
"serverName": "github-mcp-server",
"toolName": "search_code"
},
{
"kind": "memory"
},
{
"kind": "extension-permission-access",
"extensionName": "my-extension"
}
]
}
}
}
{
"locations": {
"C:\\src\\my-repo": {
"tool_approvals": [
{
"kind": "mcp",
"serverName": "github-mcp-server",
"toolName": "search_code"
},
{
"kind": "memory"
},
{
"kind": "extension-permission-access",
"extensionName": "my-extension"
}
]
}
}
}
session-state/
包含按子目录中的会话 ID 组织的会话历史记录数据。 每个会话目录存储事件日志(events.jsonl)和工作区项目(计划、检查点、跟踪的文件)。 此数据启用会话恢复(--resume 或 --continue)。
从此目录中删除文件只会删除本地副本。 如果已将会话同步到 GitHub 账户,则同步的数据将单独存储,不受删除本地文件的影响。 您可以从 GitHub.com 删除或隐藏已同步的会话。 有关详细信息,请参阅“关于 GitHub Copilot 命令行界面 (CLI) 会话数据”。
command-history-state/
包含用于反向搜索(Ctrl+R)和交互式界面中的历史记录导航的命令历史记录数据。 此目录是自动管理的,不应对其进行编辑。
session-store.db
CLI 使用的 SQLite 数据库,用于存储跨会话数据,例如检查点索引和搜索。 此文件是自动管理的,不应对其进行编辑。
如果删除此文件,可以使用命令重新生成该文件 /chronicle reindex 。 重新编入索引还会将您的会话数据同步到您的账户。
logs/
包含 CLI 会话的日志文件。 每个会话创建一个名为process-{timestamp}-{pid}.log的文件。 这些文件可用于调试问题。
CLI 还可能在 logs/extensions/ 下创建扩展专用日志。
这与 ~/.copilot/extensions/存储用户创作的扩展代码不同。
提示
若要查找当前会话的日志文件,请在交互式会话中输入 /session 。 输出包括日志文件的完整路径,以及其他会话详细信息,例如会话 ID、持续时间和工作目录。
installed-plugins/
包含已安装的插件的文件。 从市场安装的插件存储在 installed-plugins/{marketplace-name}/{plugin-name}/以下位置。 直接安装的插件存储在 installed-plugins/_direct/. 使用 copilot plugin 命令管理插件,而不是直接编辑此目录。
有关详细信息,请参阅“GitHub Copilot CLI 插件参考”。
plugin-data/
包含已安装插件的持久性数据,按市场和插件名称进行组织。 此数据由插件本身管理,不应手动编辑。
ide/
包含 IDE 集成相关的锁定文件和状态(例如,当Copilot 命令行界面(CLI)与Visual Studio Code连接时)。 此目录会自动管理。
mcp-oauth-config/
包含 MCP OAuth 令牌、注册信息以及在密钥链存储不可用时的 PKCE 备用文件。 此目录会自动管理。
mcp-secrets/
包含备用文件存储以及在密钥链存储不可用时 MCP 密钥占位符的索引。 此目录会自动管理。
更改配置目录的位置
若要替代默认 ~/.copilot 位置,请将 COPILOT_HOME 环境变量设置为要使用的目录的路径。
export COPILOT_HOME=/path/to/my/copilot-config
export COPILOT_HOME=/path/to/my/copilot-config
要注意的事项
-
COPILOT_HOME替换整个~/.copilot路径。 设置的值应该是要用于配置文件和子目录的目录的完整路径。 -
更改目录意味着不会在新位置找到现有的配置、会话历史记录、已安装的插件和已保存的权限。 如果您想要保留
~/.copilot的内容,请将其复制或移动到新位置。 -
缓存目录(用于市场缓存、自动更新包和其他临时数据)遵循平台约定,不受影响
COPILOT_HOME。 它位于:- macOS:****
- Linux:
$XDG_CACHE_HOME/copilot或~/.cache/copilot - Windows:
%LOCALAPPDATA%/copilot
若要单独替代缓存目录,请设置
COPILOT_CACHE_HOME。
可以安全地删除的内容
| 物品 | 删除是否安全? | Effect |
|---|---|---|
agents/、skills/、hooks/ | 不推荐 | 你将丢失个人自定义项。 首先备份。 |
config.json | 谨慎 | 重置应用程序状态,包括身份验证。 需要重新进行身份验证,CLI 将在下次启动时重新检测内部状态。 |
copilot-instructions.md、instructions/ | 不推荐 | 你将丢失个人自定义说明。 首先备份。 |
extensions/ | 不推荐 | 您将丢失个人扩展。 首先备份。 |
installed-plugins/ | 不推荐 | 请改用 copilot plugin uninstall ,确保插件元数据 config.json 保持准确。 |
logs/ | 是的 | 日志文件在每次会话中会被重新创建。 删除它们不会影响功能。 |
lsp-config.json | 不推荐 | 你将失去用户级 LSP 服务器定义。 首先备份。 |
mcp-config.json | 不推荐 | 你将失去用户级 MCP 服务器定义。 首先备份。 |
mcp-oauth-config/ | 谨慎 | 清除本地 MCP OAuth 回退状态。 可能需要重新对 MCP 服务器进行身份验证。 |
mcp-secrets/ | 谨慎 | 清除本地 MCP 机密的后备状态和映射。 机密支持的 MCP 服务器可能需要重新配置。 |
permissions-config.json | 谨慎 | 重置所有已保存的权限。 CLI 将再次提示你进行工具和目录审批。 |
plugin-data/ | 是的 | 插件持久数据会根据需要重新创建。 |
session-state/ | 谨慎 | 删除会话将清除历史记录。 你将无法再恢复过去的会话。 |
command-history-state/ | 谨慎 | 删除会清除命令历史记录。 你将无法再使用 Ctrl+R 搜索以前的命令。 |
session-store.db | 谨慎 | 删除操作会移除跨会话数据。 该文件会自动重新创建。 |
settings.json | 谨慎 | 将所有用户首选项重置为默认值。 需要重新配置设置。 |
配置文件设置
设置按此顺序应用(稍后将替代前面):
- 内置默认值
- 移动设备管理(MDM)托管设置
- 用户设置 (
~/.copilot/settings.json) - 存储库设置 (
.github/copilot/settings.json) - 本地设置 (
.github/copilot/settings.local.json) - 环境变量
- 命令行标志
MDM 托管设置会在启动时加载,并作为策略基线与用户设置合并。 对于大多数密钥,用户设置可以替代该基线。 对于 permissions.disableBypassPermissionsMode,MDM 值 "disable" 始终获胜。 有关详细信息,请参阅 MDM 托管设置。
| Scope | Location | Purpose |
|---|---|---|
| 用户 | ~/ | 所有存储库的全局默认值。 使用 COPILOT_HOME 环境变量指定备用路径。 |
| 资料库 | .github/ | 共享存储库配置(提交到存储库)。 |
| Local | .github/ | 个人覆盖(将此添加到 .gitignore)。 |
CLI 还会读取 .claude/settings.json 和 .claude/settings.local.json,以获取存储库设置中供各工具共享的那部分子集(例如 companyAnnouncements、disableAllHooks、enabledPlugins、extraKnownMarketplaces 和 hooks)。
用户设置 (~/.copilot/settings.json)
这些设置适用于所有会话和存储库。 可以使用 /settings 斜杠命令运行交互式对话,或使用特定的斜杠命令来更新单个值,或直接编辑此文件。
| 密钥 | 类型 | Default | 说明 |
|---|---|---|---|
allowedUrls | string[] | [] | 无需提示即允许的 URL 或域。 支持确切的 URL、域模式和通配符子域(例如)。 "*.github.com" |
askUser | boolean | true | 允许代理提出澄清问题。 设置为 false 可实现完全自主运作。 还可以使用 --no-ask-user. |
autoUpdate | boolean | true | 自动下载 CLI 更新。 |
auto | |||
"stable" | |||
| | | |||
"prerelease" | |||
"stable" | 更新通道。 将"prerelease"设置为接收预发布更新。 | ||
banner | |||
"always" | |||
| | | |||
"once" | |||
| | | |||
"never" | |||
"once" | 动画横幅显示频率。 | ||
bashEnv | boolean | false | 启用 BASH_ENV 对 bash shell 的支持。 可以用 --bash-env 或 --no-bash-env 设置。 |
beep | boolean | true | 需要注意时播放一声哔哔音。 |
beepOnSchedule | boolean | true | 在预定的 /every 或 /after 运行完成后发出蜂鸣提示音。 |
built | boolean | true | 启用“橡皮鸭”子智能体,该子智能体会对智能体计划提供对抗性反馈。 |
built | boolean | false | 包含主动提示,用于自动调用“橡皮鸭”。 设置为 true 以在智能体回合期间选择接收额外的“橡皮鸭”提示。 |
colorMode | |||
"default" | |||
| | | |||
"github" | |||
| | | |||
"dim" | |||
| | | |||
"high-contrast" | |||
| | | |||
"colorblind" | |||
"github" | |||
theme 的已弃用别名。 首选 theme。 | |||
command | number | 50 | 为输入历史记录和反向搜索保留的最新命令的最大数目。 必须是介于 1 和 1000 之间的整数。 |
compactPaste | boolean | true | 将大块粘贴内容(超过 10 行)折叠成紧凑的标记。 |
company | string[] | [] | 启动时随机显示的自定义消息。 每次启动 CLI 时,都会随机选择一条消息。 适用于团队公告或提醒。 |
continue | boolean | false | 在速率受限时自动切换到自动模式。 如果为 true,那么符合条件的速率限制错误会触发系统自动切换到自动模式并进行重试。 不适用于全局速率限制或 BYOK 提供程序。 |
copyOnSelect | boolean | ||
true (macOS)、 false (其他) | 自动将鼠标选择的文本复制到系统剪贴板。 | ||
custom | boolean | false | 仅使用本地自定义代理(无远程组织或企业代理)。 |
deniedUrls | string[] | [] | 始终被拒绝的 URL 或域。 拒绝规则优先于允许规则。 |
disableAllHooks | boolean | false | 禁用所有钩子(包括存储库级别和用户级别)。 |
disabled | string[] | [] | 要禁用的 MCP 服务器名称。 列出的服务器已配置,但未启动。 |
disabledSkills | string[] | [] | 要禁用的技能名称。 列出的技能已被发现,但未能加载。 |
dynamicRetrieval | { skills?: boolean } | 取消设置 | 按类别控制基于嵌入的动态指令检索。 将 skills 设置为 false 以禁用技能的检索。 |
effortLevel | string | "medium" | 扩展思维的推理工作水平: "low"、 "medium"、 "high"或 "xhigh"。 更高的级别使用更多的计算。 |
enabledMcpServers | string[] | [] | 启用默认禁用的内置 MCP 服务器。 |
enabledPlugins | Record<string, boolean> | {} | 声明性插件自动安装。 密钥是插件规格; true 值为 (enabled) 或 false (disabled)。 |
experimental | boolean | false | 启用实验性功能。 还可以使用 --experimental 命令行选项或 /experimental 斜杠命令启用。 |
extra | Record<string, {...}> | {} | 其他插件市场。 每个密钥都是市场名称;值指定源("directory"或"git"``"github")。 |
footer | object | — | 控制状态行中显示的项。 子键包括showModelEffort、showDirectory、showBranch、showContextWindow、showQuota、showAgent、showAiUsed、showCodeChanges、showUsername、showSandbox、showYolo和showCustom(均为boolean)。 由 /statusline 斜杠命令管理。 |
hooks | object | — | 内联用户级挂钩定义,按事件名称进行键控。 使用与 .github/ 文件相同的架构。 请参阅“与 GitHub Copilot 命令行界面 (CLI) 一起使用挂钩”。 |
ide.autoConnect | boolean | true | 启动时自动连接到 IDE 工作区。 当 false 时,你仍然可以使用 /ide 命令手动连接。 |
ide.open | boolean | true | 在连接的 IDE 中打开文件编辑差异以供批准。 如果为 false,文件编辑审批仅显示于终端中。 |
include | boolean | true | 将 Co-authored-by 尾部添加到代理进行的 git 提交。 |
keepAlive | |||
"on" | |||
| | | |||
"off" | |||
| | | |||
"busy" | |||
"off" | 启动 CLI 时应用保持活动模式。 | ||
"on" 始终防止系统进入休眠状态,"busy" 仅在智能体运行时防止休眠,而 "off" 禁用保持活动状态。 也可以使用 /keep-alive 斜杠命令进行配置。 | |||
logLevel | |||
"none" | |||
| | | |||
"error" | |||
| | | |||
"warning" | |||
| | | |||
"info" | |||
| | | |||
"debug" | |||
| | | |||
"all" | |||
| | | |||
"default" | |||
"default" | 日志记录详细程度。 | ||
mergeStrategy | |||
"rebase" | |||
| | | |||
"merge" | |||
| — | |||
/pr fix conflicts 的冲突解决策略。 设置为 "rebase" 时,通过变基到基分支来解决冲突。 当设置为 "merge"时,将基分支合并到功能分支中。 如果未配置,将显示选取器对话框。 | |||
model | string | 变化 | 要使用的 AI 模型。 设置为 "auto" 允许 Copilot 自动选取最佳可用模型。 由 /model 斜杠命令管理。 |
mouse | boolean | true | 启用鼠标支持。 可以用 --mouse 或 --no-mouse 设置。 |
permissions.disable | string | — | 当设置为 "disable" 时,所有“全部允许”标志(--allow-all-tools、--allow-all-paths、--allow-all-urls、--allow-all、--yolo)都会在启动时被禁用,并且不能用于授予提升后的权限。 |
pinnedPrompts | boolean | true | 滚动时间线时,将当前区段的用户请求固定在顶部栏下方,以便始终清楚当前可见的输出对应的是哪个请求。 仅适用于 CLI UI——对发送给模型的提示词没有影响。 |
powershellFlags | string[] | ["-NoProfile", "-NoLogo"] | 启动时传递给 PowerShell 的标志。 在Windows上,CLI 首选 PowerShell 7+ (pwsh),并在 powershell.exe 不可用时回退到 Windows PowerShell(pwsh)。 仅适用于Windows。 |
proxy | string | 取消设置 | 用于 Kerberos/Negotiate 代理身份验证的服务主体名称 (SPN),会覆盖派生的 HTTP/<proxy-host>。 |
proxyUrl | string | 取消设置 | HTTP(S) 请求的代理 URL(例如 http:/)。 可由 HTTP_PROXY 或 HTTPS_PROXY 环境变量覆盖(不区分大小写)。 |
remote | |||
"on" | |||
| | | |||
"off" | |||
"on" | 控制会话同步和远程访问。 | ||
"off"设置为仅保留本地会话数据并禁用远程控制。 可以用 --remote 或 --no-remote 设置。 | |||
renderHexColors | boolean | true | 将以内联代码形式编写的六位十六进制颜色代码(例如 `#FF0000`)显示为颜色色块。 |
renderMarkdown | boolean | true | 在终端输出中呈现 Markdown。 |
remoteExport | boolean | true | 当会话同步可用时远程导出会话。 设置为 false 默认退出远程导出。 当 remoteSessions 设置设为 true 时,或设置了 --remote 标志时,无论此设置如何,仍会启用导出和引导。 |
respectGitignore | boolean | true | 从 @ 文件提及选取器中排除 gitignored 文件。 当 false,选取器包含通常被 .gitignore排除的文件。 |
sandbox.allow | boolean | true | 允许沙盒中的命令为特定操作请求绕过限制(会弹出权限提示),这样一来,像 grep 和 glob 这样的工具在原本会被沙盒阻止时也能继续工作。 将其设置为 false 以选择退出。 |
sandbox.enabled | boolean | false | 将 shell 命令、MCP/LSP 服务器和内置文件/Web 工具限制为具有有限文件系统和网络访问权限的沙盒环境。 可在 /sandbox 对话框中启用它,或使用 /sandbox enable。 |
sandbox.gitAuth | boolean | true | 将 Git 凭据注入沙盒,以便其内部运行的命令可以使用 Git 进行身份验证。 将其设为 false 以选择退出。 |
sandbox.ghAuth | boolean | true | 将 GitHub CLI(gh)凭据注入沙盒中,以便在其中运行的命令能够与 GitHub CLI 进行身份验证。 将其设置为 false 以选择退出。 |
sandbox.user | boolean | true | 允许沙盒命令访问本地网络地址(例如本地开发服务器)。 将其设置为 false 以选择退出。 |
sandbox.user | boolean | false | 仅限 macOS。 授予沙盒命令对系统密钥链的访问权限。 也可以从 /sandbox 对话框中切换。 |
screenReader | boolean | false | 启用屏幕阅读器优化。 |
scrollbar | boolean | true | 在可滚动视图中显示滚动条。 将其设置为 false 以将其隐藏,并使用终端的全部宽度。 |
shellShortcut | boolean | false | 在提示符处单独输入 $ 可打开一个以该会话工作目录为根目录的交互式 shell(仅在真实 TTY 上的本地、受信任且空闲的会话中启用)。 仅限用户或托管范围 - 不可重写存储库。 |
showTimestamps | boolean | true | 在时间线中于用户消息旁显示浅色 HH:mm 时间戳。 |
showTipsOnStartup | boolean | true | 在 CLI 启动时显示随机命令提示。 |
skillDirectories | string[] | [] | 用于搜索自定义技能定义的其他目录(除了 ~/)。 |
statusLine | object | — | 自定义状态行显示。 |
type:必须是 "command"。 | |||
command:用于接收 stdin 上的会话 JSON 的可执行脚本的路径,并将状态内容输出到 stdout。 | |||
padding:可选数量的左填充空格。 | |||
stayInAutopilot | boolean | false | 在每个任务完成之后,保持 Autopilot 模式。 启用后,在任务完成之后输入的下一个提示也会在 autopilot 模式下进行处理。 有关详细信息,请参阅“允许 GitHub Copilot CLI 自主工作”。 |
store | boolean | false | 允许在系统密钥链不可用时以纯文本 config.json 形式存储身份验证令牌。 |
stream | boolean | true | 启用流响应。 |
streamerMode | boolean | false | 隐藏预览模型名称、配额详细信息、提示时间戳和可用更新通知。 演示 Copilot 命令行界面(CLI) 或屏幕共享时非常有用。 |
subagents.agents | object | {} | 各代理的模型配置,以代理名称为键。 每个值都是一个具有可选model(字符串)、 effortLevel (string)和contextTier("default"、或"long_context"``"inherit")字段的对象。 将任意字段设置为 "inherit",以在分派时使用父会话的值。 |
/subagents使用斜杠命令以交互方式配置这些设置。 | |||
subagents.disabled | string[] | [] | 需防止被调度的智能体名称。 只有 rubber-duck 代理无法通过此设置禁用。 可以禁用所有其他内置代理,包括explore、task、code-review``general-purpose、research和security-review。 |
subagents.max | number | 基于计划的 | 此会话的最大并发子代理数。 仅对按使用量计费用户生效;对所有其他套餐均不生效。 上限为 32。 请参阅“GitHub Copilot CLI 命令参考”。 |
subagents.max | number | 6 | 最大子代理嵌套深度。 仅对按使用量计费的用户生效;对所有其他方案均无效。 上限为 256。 请参阅“GitHub Copilot CLI 命令参考”。 |
tabs.enabled | boolean | true | 显示主选项卡栏。 将其设为 false 以将其完全隐藏。 |
tabs.hide | string[] | [] | 要隐藏的选项卡标识符。 接受的值:"copilot"、"agents"、"issues"、"pull-requests"、"gists"(匹配时不区分大小写)。 |
tabs.sort | string[] | [] | 选项卡的显示顺序。 未列出的选项卡排在已列出的选项卡之后,并保持其默认的相对顺序。 忽略未知标识符。 |
terminalProgress | boolean | true | 在代理工作时发送 OSC 9;4 终端进度指示器。 支持的终端包括 Windows 终端、iTerm2、Ghostty 和 ConEmu。 |
theme | |||
"default" | |||
| | | |||
"github" | |||
| | | |||
"dim" | |||
| | | |||
"high-contrast" | |||
| | | |||
"colorblind" | |||
"github" | 终端输出的调色板。 由/settings``/theme斜杠命令管理。 | ||
colorMode 是此设置已弃用的别名。 | |||
toolSearch | boolean | 取决于模型和功能 | 控制工具搜索(延迟的工具加载)。 将 toolSearch: false 设为不参与工具搜索。 |
update | boolean | true | 在终端选项卡或窗口标题中显示当前意向。 |
存储库设置 (.github/copilot/settings.json)
存储库设置适用于在存储库中工作的每个人。 它们将提交到存储库并与协作者共享。
注意
存储库配置文件(enabledPlugins 和 extraKnownMarketplaces)中与插件相关的键也会被 Copilot云代理 读取,而不只是被 Copilot 命令行界面(CLI) 读取。 这样,便可以从单个文件中为两个客户端启用相同的插件。 有关插件的详细信息,请参阅 关于 GitHub Copilot 插件。
存储库级别仅支持下表中列出的密钥。 将无提示地忽略任何其他密钥(包括用户配置文件中有效的密钥)。 每个受支持的键都有一种定向合并策略,以确保覆盖操作在发生故障时保持默认关闭并且安全。
| 密钥 | 类型 | 合并行为 | 说明 |
|---|---|---|---|
company | string[] | 已替换 — 存储库优先 | 启动时随机显示的消息。 |
contextTier | |||
"default" | |||
| | | |||
"long_context" | |||
| 已替换 — 存储库优先 | 固定默认上下文层级。 | ||
deniedUrls | string[] | 联合 - 存储库可以添加条目,从不删除 | URL 或域名已被阻止。 |
disableAllHooks | boolean | 存储库优先 | 禁用所有挂钩。 |
disabled | string[] | 联合 - 存储库可以添加条目,从不删除 | MCP 服务器已配置但未启动。 |
disabledSkills | string[] | 联合——存储库只能添加条目,不能删除条目 | 已发现但未加载的技能 |
effortLevel | string | 已替换 — 存储库优先 | 固定默认推理工作量。 |
enabledPlugins | Record<string, boolean> | 已合并 — 存储库覆盖用户的相同密钥 | 声明性插件自动安装。 |
extra | Record<string, {...}> | 已合并 — 存储库覆盖用户的相同密钥 | 此存储库中提供的插件市场。 |
hooks | object | 已合并 — 存储库覆盖用户的相同密钥 | 范围限定到此存储库的挂钩定义。 请参阅“与 GitHub Copilot 命令行界面 (CLI) 一起使用挂钩”。 |
include | boolean | 已替换 — 存储库优先 | |
Co-authored-by添加预告片以提交。 | |||
mergeStrategy | |||
"rebase" | |||
| | | |||
"merge" | |||
| 已替换 — 存储库优先 | |||
/pr fix conflicts 的冲突解决策略。 | |||
model | string | 已替换 — 存储库优先 | 将此仓库的默认模型置顶。 |
respectGitignore | boolean | 仅可收紧——仓库可以启用,但不能禁用 | 从 @ 文件提及选取器中排除 gitignored 文件。 |
model、effortLevel 和 contextTier 覆盖仅在工作目录受信任时生效。
仅通过存储库启用的 enabledPlugins 插件的范围限定为该存储库:它在声明存储库中自动安装和激活,但全局保持禁用状态,因此它永远不会在无关项目中激活。 离开存储库,或者存储库禁用该插件时,会关闭其 MCP 服务器,并停用该会话中的代理和技能。
存储库级模型允许列表 (.github/allowed_models.txt)
通过位于 .github/allowed_models.txt 的纯文本允许列表,限制仓库可使用哪些内置模型;该路径相对于当前工作目录所在仓库的根目录解析(如果当前工作目录不在仓库内,则相对于当前工作目录本身解析)。
每一行都是与模型 ID 匹配的 glob 模式,或者是一条 fallback: 指令,用于指定当已配置或请求的模型不被允许时应使用的模型:
# .github/allowed_models.txt
fallback: gpt-5.2
gpt-5.2
gpt-5.4
claude-sonnet-*
| 规则 | 说明 |
|---|---|
* | 允许所有模型(不存在文件时的默认设置)。 |
MODEL-ID | 允许指定精确的模型 ID。 |
GLOB-PATTERN | 允许与 glob 模式匹配的模型 ID(例如,claude-sonnet-*)。 |
fallback: MODEL-ID | 必须且只能有一次。 当前模型不被允许时使用的模型 Copilot。 |
# | 注释行。 |
不支持否定模式(!pattern),回退模型必须是精确 ID(而不是通配模式),并且回退模型本身必须匹配已配置的通配模式之一。
Copilot 命令行界面(CLI) 重新评估关于 /cd 的策略,并在运行前报错并拒绝无效文件。
允许列表仅适用于 Copilot 的内置模型。 它无法筛选出使用自带 API 密钥 (BYOK) 方法添加的自定义模型。 无论配置的模式如何,BYOK 模型都会保持列出和可选择状态,并且 fallback: 指令永远不会应用于它们。 有关详细信息,请参阅 在企业中为 GitHub Copilot 启用自定义模型 和 在你的组织中为 GitHub Copilot 启用自定义模型。
本地设置 (.github/copilot/settings.local.json)
在存储库中创建 .github/copilot/settings.local.json,用于存放那些不应被提交的个人覆盖。 将此文件添加到 .gitignore.
本地配置文件使用与存储库配置文件 (.github/copilot/settings.json) 相同的架构,并优先于它。
MDM 托管设置
IT 管理员可以通过移动设备管理(MDM)托管设置下发基线策略,而不是要求按用户逐一配置。 这些设置对受支持的密钥应用设备级默认值,并在用户设置之前加载。
Copilot 命令行界面(CLI) 在启动时除了加载 MDM 外,还会加载由服务器管理的设置。 由设备管理(MDM)和服务器管理的设置会按键分别确定:对于 MDM 已设置的任意键,均以 MDM 的值为准;对于 MDM 未设置的键,则由服务器的值补充。 这样,组织可以通过 MDM(例如,permissions)设置某些策略,同时仍从服务器接收其他托管默认值(例如,model)。
长时间运行的会话每小时都会重新获取并重新应用托管设置,因此策略更改(例如某个组织启用 permissions.disableBypassPermissionsMode)无需重启会话即可生效。
MDM 托管设置源
Copilot 命令行界面(CLI) 从平台特定的 MDM 或基于文件的位置中读取托管设置。
| Platform | 源类型 | Location |
|---|---|---|
| macOS | MDM 属性列表 | com.github.copilot |
| macOS | File | / |
| Windows操作系统 | MDM 注册表 | HKLM\ |
| Windows操作系统 | File | %Program |
| Linux | File | / |
注意
在 POSIX 系统上, Copilot 命令行界面(CLI) 拒绝基于文件的托管设置,这些设置是符号链接,不是根拥有的,也不是世界可写的。
文件格式
将基于文件的托管设置编写为 JSON。
{
"model": "auto",
"permissions": {
"disableBypassPermissionsMode": "disable"
}
}
注意
model 是顶级密钥。 将其嵌套为 permissions.model 的旧配置仍然有效——当缺少顶层 model 键时,运行时会回退到该位置——但新配置应将 model 写在顶层。
支持的密钥
MDM 托管设置中仅支持以下密钥。
| 密钥 | 说明 |
|---|---|
allowedMcpServers | 用户可加载的 MCP 服务器允许列表,按 serverUrl、serverCommand 或 serverName 匹配。 受信任的第一方服务器(例如内置 GitHub MCP 服务器)始终是豁免的。 将此键留空会允许所有非默认服务器;空数组会拒绝所有这些服务器。 请参阅 托管 MCP 服务器允许/拒绝列表。 |
deniedMcpServers | 绝不能加载的 MCP 服务器阻止列表,其匹配方式与 allowedMcpServers 相同。 匹配的非默认服务器都会被阻止,不受允许名单影响——拒绝规则始终优先。 请参阅 托管 MCP 服务器允许/拒绝列表。 |
enabledPlugins | 启用或禁用特定插件 |
extra | 添加可信的插件市场 |
model | 为所有用户设置默认模型(可被 --model 标记或恢复会话时使用的模型覆盖) |
permissions | 设置托管权限,包括 disable |
remoteControl | 控制此设备上的会话是否可以从其他设备进行控制。 |
mode 是 "enabled", "disabled"或 "requireSSO" (在设置时需要 github )。 | |
shellShortcut | 为所有用户强制启用或强制禁用 $ 交互式 shell 的快捷方式。 托管值始终替代用户自己的 shellShortcut 设置。 |
strict | 将插件限制为已知市场 |
telemetry | 推送基线 OpenTelemetry 导出配置:enabled、endpoint、protocol、headers、resource、captureContent、lock和serviceName。 请参阅“GitHub Copilot CLI 命令参考”。 |
注意
当 remoteControl.mode 为 "requireSSO" 时,在 remoteControl.githubDotComOrganizations 中列出允许的组织。 客户端必须对至少一个列出的 GitHub.com 组织进行 SSO 授权,因此不再需要对所有组织进行授权。
托管 MCP 服务器允许/拒绝列表
管理员可以直接通过 MDM 托管设置(独立于 企业 MCP 允许列表)来管理 MCP 服务器。
在托管设置源中设置 allowedMcpServers 和/或 deniedMcpServers :
{
"allowedMcpServers": [
{ "serverUrl": "https://mcp.example.com/*" },
{ "serverCommand": ["npx", "-y", "@example/mcp-server"] }
],
"deniedMcpServers": [
{ "serverName": "untrusted-server" }
]
}
每个条目通过以下匹配器中的恰好一种来标识服务器。
| 匹配器 | Matches | 备注 |
|---|---|---|
serverUrl | 通过 URL 指定的远程(HTTP/SSE)服务器 | 支持 * 通配符;协议和主机名匹配时不区分大小写,路径匹配时区分大小写。 |
${VAR} 引用在匹配之前展开。 | ||
serverCommand | 按其确切命令和参数顺序排列的 stdio 服务器 | |
${VAR} 引用在匹配之前展开。 | ||
serverName | 按已分配标签的服务器 | 允许列表条目限制为 [A-Za-z0-9_-]+ (无通配符);拒绝列表条目接受任何非空字符串。 |
规则:
- 受信任的第一方服务器 (例如,内置 GitHub MCP 服务器)始终免除这两个列表。
- 未设置
allowedMcpServers时允许所有非默认服务器;空数组 会阻止所有非默认服务器(全部拒绝)。 - 未设置或为空的
deniedMcpServers不会阻止任何内容。 - 拒绝始终优先——匹配
deniedMcpServers的服务器即使也匹配allowedMcpServers,也会被阻止。 - 对于远程服务器,匹配结果必须来自
serverUrl条目;仅在不存在serverUrl条目的情况下,serverName才算有效。 对于 stdio 服务器,匹配必须来自条目serverCommand;serverName仅当不存在serverCommand条目时才会进行计数。