GitHub Copilot CLI 把编程智能体带入终端。它可以编辑文件、运行命令,并处理仓库、issue 和拉取请求。搜索“github copilot cli security”或“is Copilot CLI safe”的人,大多想知道它可以运行什么、会向外发送什么。本文总结 GitHub 自己的文档,并展示 HisnLabs 开发的 macOS 网络防火墙 FireAI 如何监视它的连接。
Copilot CLI 是什么,如何在 Mac 上运行
其代码仓库说明,该工具由 GitHub 开发,与 Copilot 编程智能体使用相同的智能体框架。它支持 macOS、Linux 和 Windows,可以通过 npm(npm install -g @github/copilot)、Homebrew(brew install copilot-cli)或安装脚本安装。你可以使用 /login 命令登录,也可以使用具有 Copilot Requests 权限的个人访问令牌,以 GH_TOKEN 或 GITHUB_TOKEN 提供。它可以在交互模式下工作,也可以通过 -p 标志在程序化模式下工作,默认附带 GitHub 的 MCP 服务器,并支持自定义 MCP 服务器。
它能访问什么
GitHub 的文档说明,在受信任目录中,Copilot 可以读取、修改和执行文件,而智能体通过你已验证的账户与 GitHub.com 交互。由于它可以运行命令,它也可以建立网络连接,例如通过 curl 或 git。
文档所述的权限模型
- 受信任目录:你需要确认信任启动 CLI 时所在的目录。文档建议不要从主目录或含有不受信任可执行文件的位置启动。
- 工具审批:对于会修改或执行内容的工具,例如
rm、node或sed,Copilot 会请你选择批准一次、在本次会话中批准,或拒绝并建议替代方案。 - 标志:
--allow-tool='shell(COMMAND)'和--deny-tool='shell(COMMAND)'用于设置按命令的规则,--deny-tool优先。--allow-all-tools会跳过审批,用文档的话说,这会让 Copilot 拥有与你相同的访问权限。
对于最后这种情况,文档建议使用本地或云端沙箱,或隔离的虚拟机。本文查阅的页面没有详细说明哪些数据会被传输给 GitHub 或模型提供方,因此要了解确切的目的地,应当依靠观察。这正是 OWASP 所称的过度代理(excessive agency):智能体被允许行动,而每一步都没有人工检查。
用 FireAI 监视 GitHub Copilot CLI
FireAI 是 HisnLabs 开发的 macOS 设备端防火墙。其 Agent profile 功能把 GitHub Copilot CLI 列为它识别的 19 种 AI 智能体之一。由于 Copilot CLI 在 node 下运行,FireAI 通过运行时所运行的脚本来识别它,这是 Agent profile 针对 node、bun、deno 和 python 智能体所采用的方法。智能体的子进程,例如它启动的 shell、git 或 curl,会通过向上追溯父进程而归属于它。随后,FireAI 会在最初 3 天学习 GitHub Copilot CLI 通常联系哪些目的地,按域名分组,在此期间不标记任何内容。此后,首次出现的目的地会在 Suggestions、AI agents 卡片和 Quick Review 中被标记。上传峰值也会被标记:某一小时内该智能体的上传量至少是其此前最繁忙一小时的 4 倍,且不少于 25 MB。
FireAI 只使用元数据,即主机名和字节数,从不读取连接的有效载荷。默认情况下,它只作标记,把决定留给你。在 Agent profile 安全模式下,它会更进一步:学习结束后,连接到基线之外目的地的请求会被拦截,直到你点按 Allow;Keep blocked 则会把这次拦截变成一条在所有模式下都有效的规则。
逐步设置
- 安装 FireAI 并完成首次运行设置,参见 Install and finish setup。
- 像平常一样使用 GitHub Copilot CLI 3 天。FireAI 会在后台学习其目的地,此时还不会标记任何内容。
- 打开 Suggestions,找到 AI agents 卡片。出现标记时,阅读那句平实的说明,然后在 Quick Review 中向左滑动拦截,或向右滑动选择“It’s fine”(没问题)。
- 如果希望智能体只访问它已经在用的地方,请在安全模式菜单中选择 Agent profile,它与 Home、Coffee shop、Paranoid 和 Under attack 并列。
- 有内容被拦截时,打开 AI agents 卡片,选择 Allow 将其加入基线,或选择 Keep blocked 创建拦截规则。
局限
- FireAI 无法阻止提示注入。它通过标记数据离开你的 Mac 的路径并允许你拦截该路径来限制损害。
- FireAI 看不到 GitHub Copilot CLI 的提示、MCP 工具的内容、技能,也看不到它读取了哪些文件,因为 TLS 隐藏了有效载荷,而且 FireAI 并不在智能体内部。
- Copilot CLI 是按脚本名称匹配的,因此 FireAI 只是对它进行标注,而不是验证:只有 Claude Code、Claude 和 Cursor 会根据其开发者的签名进行核验。
- 由
gh或git程序建立的连接通过进程树进行匹配,即按路径匹配,而很快就退出的子进程可能会被遗漏。 - FireAI 不读取审批或命令,因此无法告诉你是哪条命令建立了某个连接。
- 在 3 天学习期内不会标记任何内容,上传峰值只会被标记,不会被拦截。
- 由于目的地按域名分组,智能体已在使用的域名下的新服务器会被视为已知。
该功能的说明见 Agent profile 文档。
FireAI 识别的其他智能体也有各自的指南:Claude Code、Claude 桌面 App、Cursor、ChatGPT Mac App、OpenAI Codex CLI、OpenClaw、Hermes Agent、Gemini CLI、Amp、Qwen Code、opencode、Aider、Goose、Crush、Windsurf、Kiro、Trae、Meta 的 Muse、由 Python 或 Node 运行的任何 AI 智能体。
FireAI 和 HisnLabs 在其中扮演的角色
Copilot CLI 在你批准后可以运行命令。FireAI 显示它接下来连接到哪里,并且可以拦截。
FireAI 是 HisnLabs 自己的产品:一款直接在 Mac 上运行的 AI 防火墙。它用通俗易懂的语言显示你的应用建立的每一个连接,并让你决定哪些数据可以离开你的 Mac——它的 AI 在本地运行,因此你的流量永远不会发送给我们或任何其他人。HisnLabs 的安全研究团队负责让这些判断保持准确:归类哪些域名只是普通的遥测、哪些属于真正的服务,追踪连接背后的国家和网络,并用真实的流量模式训练设备端模型(FireAI Pilot 功能)——这一切都不会离开你的 Mac。
你可以阅读它背后的技术决策,或试用 FireAI 17 天:HisnLabs 出品的 FireAI。
