Copilot 默认扫描所有打开文件并上传片段至云端,易致敏感信息泄露;必须通过 settings.json 按语言禁用、.copilotignore 屏蔽目录或右键临时禁用当前文件来显式阻止上传,因其禁用逻辑发生在代码上传前而非建议渲染后。

Copilot 默认会扫描所有打开的文件并上传片段到云端推理,不加限制时可能把 API 密钥、数据库连接串、内部 SDK 调用逻辑等敏感内容意外外泄。 你不能只靠“不写注释”或“手动删建议”来防,必须从配置层切断它对特定文件的访问权限。
在 settings.json 中按语言禁用 Copilot
这是最稳定、可版本控制的方式。Copilot 提供了细粒度的 github.copilot.enable 配置项,支持按文件类型开关:
- 打开工作区根目录下的
.vscode/settings.json(没有就新建) - 添加如下字段,例如禁用 shell 脚本和环境变量文件:
"github.copilot.enable": { "fileTypes": { "shellscript": false, "env": false, "properties": false } } - 注意:
shellscript对应.sh文件,env对应.env,不是后缀名而是 VSCode 的语言标识(可通过右下角查看) - 修改后需重启 VSCode 或重载窗口(
Cmd+Shift+P→Developer: Reload Window)才生效
用 .copilotignore 屏蔽整个目录或敏感路径
当你要保护的是某个子目录(如 /secrets/、/config/、/internal/),.copilotignore 比逐个禁用语言更直接:
- 在项目根目录创建
.copilotignore文件(纯文本,无扩展名) - 每行写一个通配路径,例如:
/secrets/ /config/local.js **/credentials.json /arch/
- 路径匹配规则与
.gitignore一致,**表示任意层级,/开头表示项目根起始 - 该文件不会影响 VSCode 的文件显示或搜索,仅作用于 Copilot 的上下文采集阶段
临时禁用当前文件的 Copilot 补全
某些场景下你只是临时编辑一个敏感配置文件(比如刚拉下来的 docker-compose.yml),不想改配置、也不想加 ignore 文件:
- 右键编辑器标签页 → 选择
Disable GitHub Copilot for This File - 或按
Cmd+Shift+P(Mac) /Ctrl+Shift+P(Win/Linux),输入并执行GitHub Copilot: Disable for Current File - 状态栏 Copilot 图标会变成灰色,且右下角提示 “Copilot disabled for this file”
- 该设置是会话级的,关闭文件再重开即恢复;如需持久化,仍得走
.copilotignore或settings.json
真正容易被忽略的是:Copilot 的禁用逻辑发生在「代码上传前」,而不是「建议渲染后」。这意味着即使你关掉了补全界面,只要文件没被明确排除,它仍可能在后台提取 AST 片段用于上下文建模。所以别依赖“我没看到建议=它没读”,关键路径必须显式屏蔽。


















