2026 年 9 月 9 日,Atomburst 团队在 Hacker News 发布《Show HN: Geiger – See every AI agent on your machine and what it can touch》,48 分首页关注,7 条评论。Geiger 是一个零依赖的 read-only AI Agent 资产扫描器——一行 `npx geiger-scan` 就能清
2026 年 9 月 9 日,Atomburst 团队在 Hacker News 发布《Show HN: Geiger – See every AI agent on your machine and what it can touch》,48 分首页关注,7 条评论。Geiger 是一个零依赖的 read-only AI Agent 资产扫描器——一行 `npx geiger-scan` 就能清点本机每个 AI Agent、Harness、MCP server、plugin、AI extension,并用 plain language 告诉用户"每个能触达什么资源"。GitHub README 直接引用一个惊人的背景数据——2026 年 8 月,某个开源 agent harness 在三周内从 0 到 20 万 + GitHub stars,plugin 生态同期过 13,000 仓库,一键桌面客户端当天出现,Instagram carousel 教 office worker 装这些东西。每一个 install 都是一个能执行命令、读文件、持有 credential 的程序,配置在没人看第二眼的 dotfiles 里。这件事把一个长期被忽视但对企业 Agent 落地极其关键的现实摆到了桌面上——企业 IT 完全不知道本机跑了什么 Agent、Agent 持有哪个 credential、能 reach 哪些资源。Geiger 的工程价值在于它把"看不见 AI 资产"这个隐性安全债,第一次用一个零依赖、可信审计、read-only 的命令行工具变成可见。结合 9 月 Manifold Security 披露的 GitSpawn(一个 RCE 漏洞同时拿下 Claude Code / Codex / Cursor / Grok 等 7 个 agent)和 9 月 Reware Labs 披露的 Security Cards(BaxBench 上 Claude Code Opus 4.7 不安全代码减少 72.3%),三件事合起来,把企业级 Agent 资产可见性的工程基线完整地勾出来。 ## 一、Geiger 的核心问题定义 Atomburst 团队在 README 第一段直接给出他们看到的问题——"Every one of those installs is a program that can execute commands, read files, and hold credentials — configured in dotfiles nobody looks at twice."每一个 install 都是 executable code + file access + credential store,但没人看这些 dotfiles。 这条问题的工程含义极其具体。企业 IT 部署 Coding Agent 时,通常会做合规审查——批准 vendor、批准 license、批准 security policy。但合规审查只发生在 procurement 阶段,procurement 之后发生了什么完全不知道。开发者自己 npm install 一个 MCP server,这个 server 可能执行任意代码、读 ~/.ssh/id_ed25519、post 到外部——企业 IT 没有 visibility。这是开源 AI Agent 生态当前最大的隐性安全债。 Geiger 给出的解法是一个 read-only scanner,一行命令:`npx geiger-scan` 扫描本机,`--html` 输出 self-contained HTML 报告,`--json` 输出 machine-readable JSON,`--strict` 在检测到 executable 或 holding secret 时 exit 2,`--diff` 对比基线发现漂移。所有写操作必须显式 `--json yourfile.json` 才能发生,否则 read-only。"We have no idea how many people use this — a trade we're happy with," README 显式承认——没有 telemetry,不知道多少人用,这是故意的 trade-off。 ## 二、Geiger 扫描覆盖的资产清单 Geiger 的扫描覆盖面相当彻底,涵盖所有主流 AI agent 生态。 AI apps 和 IDEs:Cursor、Windsurf、Zed、Claude Desktop、ChatGPT Desktop、Codex desktop app——通过 presence 检测,即使没装 MCP server 的 installed client 也会被报告。 CLI agents:Codex CLI、Gemini CLI、Kilo CLI、Grok Build、Aider、OpenCode、Qwen Code、DeepSeek Harness、Continue、GitHub Copilot CLI、Goose、JetBrains Junie、Open Interpreter、LM Studio、Ollama。 Hook 配置:Claude Code (settings)、Cursor、Gemini CLI settings——commands 被列出,因为 hooks 会在没有 prompt 的情况下执行。 Editor extensions:VS Code / Insiders / Cursor 的 AI 扩展,显示 AI Assistant / MCP settings 在每个产品的位置(settings 在 IDE 内,Geiger 指向正确的 settings screen)。 npm packages:global npm roots 里直接读 agent packages(never execute npm)。 Browser extensions:Chrome / Edge / Brave / Vivaldi / Arc / Comet / Dia / Atlas / Firefox profiles 的 AI 扩展及其 granted permissions。 每条 finding 携带四个核心标签:what it is、where it came from(registry / store / git / local script / remote server / or unknown)、what it can do(EXECUTES / HOLDS-SECRETS / BROAD-FILESYSTEM / NETWORK)、evidence path 以便手工验证。Geiger 还识别 policy agents(把 enforcement layer 放在 MCP server 前面的 agent)并报告双层结构,而不是把 real server 藏在 wrapper 后。 Demo 输出显示一个真实 dev-laptop 扫描结果——"9 findings across 3 ecosystems · 7 can execute code · 1 credential in config files"。具体 finding 包括:Claude Code agent(EXECUTES, BROAD-FILESYSTEM, NETWORK)、magic MCP server(EXECUTES, HOLDS-SECRETS, BROAD-FILESYSTEM)、一个 API_KEY credential 在 ~/.claude.json,被 domainguard-agent.exe 这个 policy agent wrapper 包裹。 ## 三、Geiger 的三条硬约束 Geiger 在 README 里显式声明三条硬约束,这三条加起来让 Geiger 在企业 IT 信任模型里能站住脚。 第一条,only write on explicit request。Geiger 永远不写任何文件,除非用户显式传 `--json yourfile.json` 或 `--html report.html`。这条约束意味着任何 Geiger 误用都不可能修改系统,即使 agent 的 prompt 被攻破也不能通过 Geiger 注入恶意配置。Talos permission kernel 和 Geiger read-only scanner 在这一条上殊途同归。 第二条,nothing leaves your machine。没有 endpoint 发任何数据——read 完就完,完全离线。"This also means we have no idea how many people use this — a trade we're happy with," README 承认这是故意 trade-off,不收集 telemetry 是为了保证 trust 模型。 第三条,Secrets by shape only。Geiger 发现 credential-shaped 值时只报告 key name、file、shape——绝不报告 value 任何部分。所有 output 经过 redaction pass 作为 defense-in-depth,test suite 强制执行。这条约束让 Geiger 即使被入侵(虽然它是 read-only)也不能泄漏具体 secret 值,只能报告"这个 file 有 API_KEY 形状的 secret"。 配套的技术约束是 zero dependencies + Node.js 18+。Geiger 用几百行 dependency-free JavaScript 写,npm publish 走 GitHub Actions,GitHub release 链接到 exact commit,npm page 携带 signed link 到 public commit。让用户能 verify what's published 就是 what's running。 ## 四、GitSpawn 揭示的 Geiger 必要性 9 月 3 日 Manifold Security 披露的 GitSpawn 把 Geiger 的必要性推到极致。GitSpawn 是一个 8-finding 跨 7-agent 的系统性 RCE 漏洞——Claude Code、Codex、Cursor、Grok Build、Hermes、Goose、Qwen Code 全部中招,4 个在发表时仍然 unpatched。攻击路径是 untrusted repo 的 `.git/config` 包含 `core.fsmonitor =Geiger 开源:看见本机每个 AI Agent 与它能触达的资源,以及企业级 Agent 资产可见性新基线