FireAI 安全博客

作者 FireAI Security & Research Team · 发布于

Mac 上的 Goose 智能体安全:监控网络访问(FireAI)

Mac 上的 Goose 智能体安全:监控网络访问(FireAI)

Goose 是一款不局限于代码的开源 AI 智能体:其代码仓库将它描述为面向代码、工作流以及介于两者之间的一切而构建。它以桌面 App 和命令行工具两种形式运行,并通过扩展访问外部工具。这些事实解释了“goose ai agent security mac”和“goose agent network access”之类的搜索。本文梳理该项目的文档内容,指出我们能够读到的页面未作说明之处,然后解释 HisnLabs 开发的 macOS 设备端防火墙 FireAI 如何监视一个以 App 形式安装的智能体的连接。

Goose 是什么

goose 使用 Rust 编写,采用 Apache 2.0 许可证。该代码仓库最初由 Block 发布,仓库说明该项目现由在 Linux Foundation 旗下运作的 Agentic AI Foundation 维护。它以桌面 App、CLI 和 API 的形式提供,并通过工具集成的开放标准 Model Context Protocol(MCP)连接扩展。README 列出了与十多家模型提供方的兼容性,包括 Anthropic、OpenAI、Google、Ollama、OpenRouter、Azure 和 Bedrock [1]。每个扩展都是智能体可以调用的工具,而扩展本身也可能访问网络。

Goose 如何在 macOS 上运行

安装指南给出了在 macOS 上的两种途径。桌面 App 可以下载适用于 Apple 芯片或 Intel 的版本,也可以使用 brew install --cask block-goose。CLI 可以通过下载脚本或 brew install block-goose-cli 安装,更新可以通过 Homebrew 或 goose update 获取。CLI 和桌面 App 共享配置,包括提供方设置、模型选择和扩展 [2]。在 macOS 上,共享的配置文件是 ~/.config/goose/config.yaml [3]。

它能访问什么,如何加以控制

Goose 能够触及什么,取决于你启用的扩展(因为每个 MCP 扩展都会提供自己的工具)以及你的 macOS 账户的权限。该项目的文档中有一节关于权限模式的内容。撰写本文时该页面无法完整读取,因此本文不描述各个模式;在依赖这些模式之前,请阅读 goose 文档中的相关指南。

它连接到哪里

配置指南记录了一项遥测设置 GOOSE_TELEMETRY_ENABLED,其说明为启用匿名使用数据收集,默认值为 false;它可以在 config.yaml 中设置,也可以作为环境变量设置 [3]。除了你选择的模型提供方和各个扩展之外,所查阅的页面没有公布域名列表。

用 FireAI 监视 Goose

FireAI 是一款在 Mac 上运行的 macOS 防火墙。其 Agent profile 功能可识别 19 种 AI 智能体,学习每种智能体通常连接到哪里,并标记新出现的情况。FireAI 的 Agent profile 页面把 Goose 与 ChatGPT、Windsurf、Kiro、Trae 和 OpenClaw 一起,列为根据其运行所在的 App 来识别的 App。该页面没有说明从终端启动的 Goose 进程如何匹配,因此除了 FireAI 在其活动列表中向你显示的内容之外,本文不对 CLI 作任何断言。

  • 在最初的 3 天里,FireAI 学习该智能体通常联系的目的地,并按域名分组,因此 api.anthropic.com 会归为 anthropic.com。在此期间不会标记任何内容。
  • 此后,基线之外首次出现的目的地会在 Suggestions、AI agents 卡片和 Quick Review 中被标记以供审查。向左滑动为拦截,向右滑动为“It’s fine”(没问题)。
  • 上传峰值也会被标记:某一小时内该智能体的上传量至少是其此前最繁忙一小时的 4 倍,且不少于 25 MB。
  • FireAI 只使用元数据,即主机名和字节数,从不读取连接的有效载荷。

为 Goose 设置 FireAI

  1. 安装 FireAI,然后像平常一样使用该智能体。3 天学习期会自动开始,期间不会标记任何内容。
  2. 打开 Suggestions,找到 AI agents 卡片。学习期结束后,针对该智能体的标记会出现在那里以及 Quick Review 中。
  3. 审查每一个标记。选择 Block 会为发起连接的进程创建一条规则,选择“It’s fine”会把该目的地加入智能体的基线。
  4. 若要让智能体只访问它已经在用的地方,请在安全模式菜单中选择 Agent profile,它与 Home、Coffee shop、Paranoid 和 Under attack 并列。你的规则会像在 Home 模式中一样生效,而一旦智能体完成学习,连接到基线之外目的地的请求会被拦截,而不只是被标记。
  5. 被拦截的目的地会出现在 AI agents 卡片中,并附有 Allow 和 Keep blocked 两个选项。Allow 会把它加入基线,智能体随即可以访问。Keep blocked 会创建一条在所有模式下都有效的拦截规则。

你为网站、域名或地址编写的允许规则仍然优先,DNS 和你的本地网络也绝不会被拦截。对于 FireAI 未列出的智能体,请在按 App 设置规则中为其程序手动编写规则。Agent profile 模式需要 FireAI 1.0.3 或更高版本,识别 Goose 需要 1.0.4。

局限

  • FireAI 看到的是 Goose 或其子进程访问了哪些目的地,而不是哪个 MCP 扩展请求了该连接。
  • Goose 是根据其运行所在的 App 来识别的,这意味着它只是被标注,而未经验证:只有 Claude Code、Claude 和 Cursor 会根据其开发者的签名进行核验。
  • FireAI 无法阻止提示注入。它通过标记数据离开你的 Mac 的路径并允许你拦截该路径来限制损害。
  • FireAI 看不到提示、MCP 工具的内容、文件访问或技能。TLS 隐藏了有效载荷,而且 FireAI 并不在智能体内部。
  • 很快就退出的子进程可能会被遗漏,而且子进程是按路径而非签名匹配的。
  • 在 3 天学习期内不会标记任何内容,上传峰值只会被标记,不会被拦截。
  • 在 Agent profile 模式下,直接连接到没有主机名的裸 IP 地址时,会按地址进行匹配,因此智能体常用服务的新地址在你允许之前会被拦截。

其他智能体

同样的方法适用于 FireAI 识别的每一种智能体。请参阅其他指南:Claude Code、Claude 桌面 App、Cursor、ChatGPT Mac App、OpenAI Codex CLI、OpenClaw、Hermes Agent、Gemini CLI、GitHub Copilot CLI、Amp、Qwen Code、opencode、Aider、Crush、Windsurf、Kiro、Trae、Meta 的 Muse、在 python 或 node 上运行的任何其他 AI 智能体。完整的功能说明见 HisnLabs 发布的 Agent profile 文档页面。

FireAI 和 HisnLabs 在其中扮演的角色

FireAI 会学习 Goose 在你的 Mac 上通常连接到哪里,并标记首次出现的目的地或上传峰值,且不读取你的数据。

FireAI 是 HisnLabs 自己的产品:一款直接在 Mac 上运行的 AI 防火墙。它用通俗易懂的语言显示你的应用建立的每一个连接,并让你决定哪些数据可以离开你的 Mac——它的 AI 在本地运行,因此你的流量永远不会发送给我们或任何其他人。HisnLabs 的安全研究团队负责让这些判断保持准确:归类哪些域名只是普通的遥测、哪些属于真正的服务,追踪连接背后的国家和网络,并用真实的流量模式训练设备端模型(FireAI Pilot 功能)——这一切都不会离开你的 Mac。

你可以阅读它背后的技术决策,或试用 FireAI 17 天:HisnLabs 出品的 FireAI。

来源