在特定的仓库或项目中禁用GitHub Copilot(出于隐私考虑)
我在VS Code中使用GitHub Copilot,但有一个特定的项目出于隐私原因不希望被Copilot处理(并非安全性关键,我只是希望相关信息留在本地)。
我的理解是,Copilot可能会把周围的代码上下文发送到远程服务以生成建议。对于这个特定的仓库,我更希望该项目的任何代码都不要发送给Copilot/OpenAI的服务。
理想情况下,我想要以下其中一种:
- 仅在特定的仓库或文件夹中禁用Copilot
- 配置我的编辑器,使Copilot永远不会在该项目中激活
- 确保该仓库中的任何代码都不会传输给Copilot的服务
完全卸载或全局禁用Copilot并非理想,因为我还想在其他项目中使用它。不过如果确实需要这样做,我也可以这么做。
解决方案
基本选项
有几件简单的事可以先看看,这些做法工作量最小,但能提供基本保护。
1.内容排除
在使用Copilot for Business或 Copilot Enterprise时,您可以在企业、组织和仓库级别设置内容排除。如果你在仓库级别添加 **/*,该仓库中的所有文件应从GitHub Copilot的 Suggestions和 Ask模式中排除。 不幸的是,Copilot CLI、Edit模式和Agent模式并不能完全强制执行/支持内容排除(因为内容可能通过 grep 或其他工具被读取)。因此,这并不能提供完全的隔离。
2.在工作区禁用Copilot
你现在可以在vscode工作区中启用/禁用特定扩展。这取决于你打开的根文件夹。打开Visual Studio Code中的项目文件夹,打开扩展面板,并为你的工作区禁用GitHub Copilot Chat:
重新启动Visual Studio Code之后,Copilot窗口将被禁用。
你也可以通过在工作区/仓库根目录中添加/编辑你的 .vscode/settings.json,并在那里禁用Copilot来手动完成:
{
"extensions.disabled": [
"GitHub.copilot-chat",
"GitHub.copilot"
]
}
3. Visual Studio Code配置文件
在Visual Studio Code中,你可以创建多个配置文件。每个配置文件将有自己安装的扩展列表。因此,你可以在一个配置文件中安装并启用Copilot,在另一个配置文件中安装并禁用 Copilot。
你随后可以 将一个配置文件关联到工作区或文件夹,以便它为你在不同配置文件之间自动切换:
高级选项
遗憾的是,这仍然不能保证Copilot不会读取你的文件,因为它没有把这些文件夹与其他已经启用Copilot的 Visual Studio Code实例隔离开来。如果你想更加确定,你需要把你的文件与其他项目隔离开来。可以通过在操作系统中切换账户、对驱动器进行加密或使用容器化来实现。这样你就能够为每个用户设置特定的设置,并通过文件系统权限拒绝对文件的访问。
为获得最佳保护,你需要在另一台机器上启动Visual Studio Code,或在一个隔离的用户账户中运行。
4.容器化
如果你使用devcontainers、Codespaces打开你的项目,那么每个项目都会在自己独立的Docker容器中加载,这极大地提升了Visual Studio Code进程的隔离性,同时你还可以更好地控制在不同的开发容器中应安装哪些扩展。容器也可以与策略结合使用。
尤其 GitHub Codespaces 是一个不错的选项,因为此时的Visual Studio Code实例在远程主机上运行,无法访问你的本地文件系统。那里还具有额外的安全性,因为用于打开codespace的访问令牌默认只对codespace打开的仓库有访问权限,从而也防止了远程访问。
5.企业策略
在使用多名不同用户、容器或虚拟机时,你可以 使用Enterprise Policy来确保不能在不应使用GitHub Copilot的用户账户下激活Copilot。
使用Visual Studio Code的策略包,你可以轻松屏蔽Copilot:
"extensions.allowed": {
"GitHub.copilot-chat": false,
"GitHub.copilot": false
}
企业策略在Windows、Linux和 Mac上可用。
6.网络设置
在运行在独立虚拟机中的情况下,也可以阻止对某些主机的访问:
通过阻止对以下主机的访问:
*.business.githubcopilot.com
*.enterprise.githubcopilot.com
*.individual.githubcopilot.com
你就可以阻止Copilot自行启用。例如,你可以将以下内容添加到虚拟机的hosts文件中:
127.0.0.1 *.business.githubcopilot.com
127.0.0.1 *.enterprise.githubcopilot.com
127.0.0.1 *.individual.githubcopilot.com
这将完全阻止Copilot的启用,甚至对Copilot CLI和其他IDE也同样有效。
7.阻止对驱动器的访问
当你把敏感文件存放在加密的驱动器或分区上时,可以通过简单地“锁定”驱动器来阻止访问该驱动器。Windows有内置的BitLocker功能可用来加密驱动器,你还可以将其配置为启动时不自动解锁。这样就可以防止一个正在使用Copilot的 Visual Studio Code窗口访问你的敏感文件。
在Linux和 macOS上也存在类似的驱动器加密功能。

