面向 AI 代理的盖革计数器。
只需一条只读命令,即可清点机器上的每一个 AI 代理、harness、MCP 服务器、插件和 AI 扩展——并用通俗的语言告诉你,每一个都能触及什么。
npx geiger-scan
无需安装。无需账户。无遥测。读取配置和目录,不写入任何内容(除非你指定 --json yourfile.json)。
2026 年 8 月,一个开源 agent harness 在三周内从零增长到 200,000+ GitHub stars。其插件生态系统在同一时间段内突破了 13,000 个仓库。一键式桌面客户端在发布当天就出现了。Instagram 轮播图现在教办公室职员安装所有这些。
每一次安装都是一个可以执行命令、读取文件并持有凭据的程序——配置在没人会多看一眼的 dotfiles 中。问问自己这个工具所回答的问题:这台机器上实际运行着什么,它能触及什么? 大多数人无法回答。现在只需一条命令。
GEIGER · a Geiger counter for AI agents
machine dev-laptop · 2026-09-06 12:24 UTC · read-only · no telemetry
──────────────────────────────────────────────────────────────
9 findings across 3 ecosystems · 7 can execute code · 1 credential in config files
claude-code (6)
Claude Code agent
[EXECUTES] [BROAD-FILESYSTEM] [NETWORK]
origin: registry · @anthropic-ai/claude-code
magic (Claude Code · global) MCP server
[EXECUTES] [HOLDS-SECRETS] [BROAD-FILESYSTEM]
origin: registry · @21st-dev/magic@latest
credential: "API_KEY" — opaque value under a credential-named key · ~/.claude.json
note: wrapped by a policy agent (domainguard-agent.exe) — enforcement layer in front of the server
hooks: UserPromptSubmit, PreToolUse hook
[EXECUTES]
note: hooks execute without a prompt each time their event fires
...
来自真实机器的真实输出(数值已脱敏——见下文)。
| 生态系统 | geiger 读取的内容 |
|---|---|
| Claude Code | 全局 + 按项目的 MCP 服务器、hooks、插件、skills、subagents、apiKeyHelper |
| MCP 主机 | 在 Claude Desktop、Cursor、Windsurf、VS Code(用户 + 项目)、Cline、Roo Code、Continue、Zed 中配置的 MCP 服务器 |
| AI 应用与 IDE | Cursor、Windsurf、Zed、Claude Desktop、ChatGPT Desktop、Codex 桌面应用——按存在性报告,因此即使已安装的客户端没有任何 MCP 服务器,也仍会显示出来 |
| 其他 agent | 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 |
| Hooks | Claude Code(settings)、Cursor(hooks.json)、Codex(config.toml 中的 notify)、Gemini CLI(settings)——会列出这些命令,因为 hooks 无需提示即可运行 |
| Git hooks | .git/hooks 中的活动 hooks(忽略示例)、core.hooksPath 重定向以及 merge drivers——git 会自行运行这些内容,而 agent 工具也会在此处安装自身 |
| Skill 与 subagent 文本 | skill 实际说了什么:它的描述、试图覆盖 agent 或向你隐藏工作的指令文本、具有恶意形态的命令以及凭据形态——目录列表中的名称并不能告诉你任何信息 |
| 编辑器扩展 | VS Code / Insiders / Cursor 中的 AI 扩展 |
| JetBrains IDE | 按产品报告 AI Assistant / MCP 设置的存在性(设置位于 IDE 内部——geiger 会指引你到正确的界面) |
| 全局 CLI | 全局 npm 根目录中的 agent 包(直接读取——从不执行 npm) |
| AI 浏览器 | Comet、Dia、ChatGPT Atlas——浏览器本身就是 agent,因此它的存在即是一项发现 |
| 浏览器扩展 | Chrome / Edge / Brave / Vivaldi / Arc / Comet / Dia / Atlas / Firefox 配置文件中的 AI 扩展,及其已授予的权限 |
每项发现都会包含:它是什么、它来自哪里(registry、store、git、本地脚本、远程服务器——或 UNKNOWN-ORIGIN)、它能做什么(EXECUTES、HOLDS-SECRETS、BROAD-FILESYSTEM、BROAD-WEB、NETWORK),以及证据路径,以便你手动验证。
Geiger 还能识别 policy wrappers(在 MCP 服务器前放置强制执行层的 agent),并报告这两层,而不是将真实服务器隐藏在包装器之后。
--json 文件。Node.js 18 或更新版本。仅此而已。 Node 自带 npm 和 npx,而 geiger 没有任何依赖,因此不会安装其他任何东西。无需全局安装,无需管理员权限,无需账户。
如果机器上还没有 Node,只需用你已有的包管理器执行一条命令——然后打开一个新终端,使 npx 位于路径中:
winget install OpenJS.NodeJS.LTS # Windows
brew install node # macOS (Homebrew)
sudo apt install nodejs npm # Debian / Ubuntu
其他平台和版本管理器(nvm、fnm):https://nodejs.org/en/download
npx geiger-scan scan, print the report
npx geiger-scan --html report.html self-contained HTML report with per-finding
"what to do" remediation guidance
npx geiger-scan --json out.json machine-readable findings (schemaVersion 1)
npx geiger-scan --path D:\repo1 --path E:\repo2
also scan these project directories for
project-level agent and MCP configs
npx geiger-scan --home C:\Users\other scan a different home root (another user
profile, a mounted image)
npx geiger-scan --strict exit 2 if anything can execute code or
holds secrets
npx geiger-scan --diff baseline.json compare against an earlier --json
snapshot: what appeared, disappeared,
or escalated since then
漂移告警: 在审查完一台机器后,保存一份基线
(--json baseline.json),并将 geiger-scan --strict --diff baseline.json
放入 cron 或 CI 中。只有当某些新增内容能够执行代码或
持有密钥时,它才会以退出码 2 退出——那些长期存在、已经审查过的清单则保持静默。这与
锁文件的心智模型相同:接受现有内容,对变更发出告警。
Registry 被屏蔽,或者想使用尚未发布的 main?
npx github:Atomburstofficial/geiger 可直接从本仓库运行(仍然
需要 Node——参见环境要求)。
在运行任何东西之前,先确切了解你会得到什么:本仓库中提供了 示例 HTML 报告和 示例 JSON 输出,它们由 测试夹具生成——合成数据、通用路径、凭据仅按形态展示(一如既往)。HTML 报告如下:

每一条需要采取行动的发现都附带通俗语言的修复建议——在终端中表现为
fix: 行,在 HTML 报告中表现为“What to do”块。
机群模式(MSP、IT):按计划在每台机器上以 --json 运行(通过 RMM 任务或登录脚本
将 %COMPUTERNAME%.json 写入共享目录),保留
每台机器的基线,并让 --diff 报告每台机器的漂移。该
schema 已版本化且稳定。Geiger 从不回传数据——JSON 文件
只去往你放置它们的地方。
在此明确说明,因为一个被你过度信任的扫描器比没有扫描器更糟:
--path)读取,而不是机器上的每个仓库。这是一次安全审计吗? 不是。它是一份带有诚实暴露 标签的清单——是你在任何审计有意义之前所需要的东西。
我为什么要信任一家安全公司的免费扫描器? 读一读它。它只有 几百行无依赖的 JavaScript,而且发布的就是 运行的——发布通过 GitHub Actions 配合 npm provenance 发布,因此 npm 页面带有指向每个版本构建自的确切公开提交的签名链接。
发现这些问题后我该怎么办? 个人层面:删除你不认识的条目,轮换那些本不该留在配置文件中的凭据。公司层面:这属于策略执行,是另一款产品—— DomainGuard 就是组织在这一暴露面之前部署策略层的方式。无论哪种情况,Geiger 都保持免费且独立。