Appearance
GitHub Copilot 的内容排除功能让你指定哪些文件不应该被 AI 读取,被排除的文件不会触发 inline suggestions,也不会影响 Chat 回答,还会被 Code Review 功能跳过。本页介绍内容排除的配置方式和注意事项。
GitHub Copilot 内容排除:保护敏感文件不被 AI 读取
什么是内容排除
内容排除(Content Exclusion)允许你配置 Copilot 忽略特定文件或目录:
- Inline suggestions 在被排除的文件中不会出现
- Copilot Chat 不会用被排除的文件内容来构建回答
- Code Review 不会审查被排除的文件
典型使用场景:
.env文件和包含密钥的配置文件- 法律或合规要求不能提交给 AI 处理的代码
- 专有算法或商业机密代码
- 大型二进制生成文件(避免污染上下文)
谁可以配置
| 角色 | 配置范围 |
|---|---|
| 仓库管理员 | 当前仓库内的文件 |
| 组织 Owner | 组织内所有仓库,针对分配了 Copilot 席位的用户 |
| 企业 Owner | 企业内所有组织,针对所有 Copilot 用户 |
配置方法
在仓库或组织 Settings → Copilot → Content exclusion 中配置:
# 排除所有 .env 文件
**/.env*
# 排除特定目录
src/proprietary/**
# 排除所有 YAML 配置文件
**/*.yaml
**/*.yml支持 glob 语法,与 .gitignore 的语法基本一致。
生效范围
| 工具 | Inline Suggestions | Copilot Chat |
|---|---|---|
| VS Code | ✅ 支持 | ✅ 支持 |
| JetBrains IDEs | ✅ 支持 | ✅ 支持 |
| Visual Studio | ✅ 支持 | ✅ 支持 |
| Vim/Neovim | ✅ 支持 | N/A |
| GitHub Mobile | ❌(预览中) | ❌(预览中) |
| GitHub.com | N/A | ✅ 支持 |
注意:内容排除不适用于 VS Code 的 Edit 模式和 Agent 模式,这些模式目前不受约束。
限制和注意事项
间接访问风险:内容排除基于文件路径,但如果被排除的文件的内容通过其他方式间接暴露(例如被另一个未排除的文件导入,或出现在 IDE 的项目元数据中),Copilot 仍可能间接读取到相关内容。
符号链接:指向被排除文件的符号链接不受保护,通过符号链接访问的内容仍可能被读取。
远程仓库:远程仓库的内容排除规则不会自动同步到本地开发环境。
常见问题
Q: 配置了内容排除后,IDE 里的 Copilot 会立刻生效吗?
A: 生效需要一定时间同步,通常在重启 IDE 或重新连接 Copilot 后生效。如果不确定是否生效,可以在被排除的文件里测试是否还有 inline suggestions。
Q: 内容排除和 .gitignore 有什么区别?
A: .gitignore 控制哪些文件不被 git 跟踪,内容排除控制哪些文件不被 Copilot 读取。两者独立配置,.gitignore 里的文件不会自动被 Copilot 排除。
Q: 企业设置的内容排除规则能被仓库管理员覆盖吗?
A: 不能。上级(企业/组织)设置的排除规则优先级更高,仓库管理员无法取消企业级别的排除配置,只能在企业/组织规则的基础上增加更多排除规则。