
CLI de solo lectura que inventaría agentes de IA, servidores MCP, plugins y extensiones en una máquina, informando sus capacidades y exposición con remediación en lenguaje sencillo.
Un contador Geiger para agentes de IA.
Un único comando de solo lectura que inventaría cada agente de IA, harness, servidor MCP, plugin y extensión de IA en una máquina — y te dice, en lenguaje sencillo, a qué puede acceder cada uno.
npx geiger-scan
Sin instalación. Sin cuenta. Sin telemetría. Lee configuraciones y directorios, no escribe
nada (a menos que pidas --json yourfile.json).
En agosto de 2026, un harness de agente de código abierto pasó de cero a más de 200.000 estrellas en GitHub en tres semanas. Su ecosistema de plugins superó los 13.000 repositorios en el mismo período. Los clientes de escritorio de un solo clic aparecieron el mismo día que se lanzó. Los carruseles de Instagram ahora enseñan a los oficinistas a instalarlo todo.
Cada una de esas instalaciones es un programa que puede ejecutar comandos, leer archivos y contener credenciales — configurado en dotfiles que nadie mira dos veces. Hazte la pregunta que responde esta herramienta: ¿qué se está ejecutando realmente en esta máquina y a qué puede acceder? La mayoría de la gente no puede responderla. Ahora es un solo comando.
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
...
Salida real de una máquina real (valores censurados — ver más abajo).
| Ecosistema | Qué lee geiger |
|---|---|
| Claude Code | servidores MCP globales + por proyecto, hooks, plugins, skills, subagentes, apiKeyHelper |
| Hosts MCP | Claude Desktop, Cursor, Windsurf, VS Code (usuario + proyecto), Cline, Roo Code, Continue, Zed |
| Otros agentes | Codex CLI, Gemini CLI, Aider, OpenCode, Qwen Code, DeepSeek Harness, Continue, GitHub Copilot CLI, Goose, Open Interpreter, LM Studio, Ollama |
| Extensiones de editor | extensiones de IA en VS Code / Insiders / Cursor |
| CLIs globales | paquetes de agentes en raíces npm globales (leídos directamente — npm nunca se ejecuta) |
| Extensiones de navegador | extensiones de IA en perfiles de Chrome / Edge / Brave, con sus permisos de manifiesto |
Cada hallazgo obtiene: qué es, de dónde vino (registro, tienda, git, script local, servidor remoto — o UNKNOWN-ORIGIN), qué puede hacer (EXECUTES, HOLDS-SECRETS, BROAD-FILESYSTEM, BROAD-WEB, NETWORK), y la ruta de evidencia para que puedas verificarlo a mano.
Geiger también reconoce envoltorios de políticas (agentes que colocan una capa de aplicación delante de los servidores MCP) y reporta ambas capas en lugar de ocultar el servidor real detrás del envoltorio.
--json
que nombras explícitamente.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
Alarma de deriva: una vez que hayas revisado una máquina, guarda una línea base
(--json baseline.json) y pon geiger-scan --strict --diff baseline.json
en cron o CI. Sale con código 2 solo cuando algo nuevo puede ejecutar código o
contener secretos — el inventario permanente, ya revisado, permanece silencioso. El mismo
modelo mental que un lockfile: acepta lo que hay, alarma ante cambios.
¿Sin npm? npx github:Atomburstofficial/geiger se ejecuta directamente desde el repositorio.
Antes de ejecutar nada, mira exactamente lo que obtendrías: un informe HTML de ejemplo y una salida JSON de ejemplo viven en este repositorio, generados a partir del fixture de prueba — datos sintéticos, rutas genéricas, credenciales mostradas por forma únicamente (como siempre). El informe HTML:

Cada hallazgo que amerita acción lleva remediación en lenguaje sencillo — como
líneas fix: en la terminal y bloques "What to do" en el informe HTML.
Patrón de flota (MSPs, TI): ejecuta con --json por máquina según un calendario (una
tarea RMM o script de inicio de sesión que escribe %COMPUTERNAME%.json en un recurso compartido), mantén
la línea base de cada máquina y deja que --diff reporte la deriva por máquina. El
esquema está versionado y es estable. Geiger nunca llama a casa — los archivos JSON
viajan solo donde tú los pongas.
Declaradas por adelantado, porque un escáner en el que confías demasiado es peor que ningún escáner:
¿Es esto una auditoría de seguridad? No. Es un inventario con etiquetas de exposición honestas — lo que necesitas antes de que cualquier auditoría signifique algo.
¿Por qué debería confiar en el escáner gratuito de una empresa de seguridad? Léelo. Son unos pocos cientos de líneas de JavaScript sin dependencias, y lo que se publica es lo que se ejecuta — las versiones se publican desde GitHub Actions con procedencia npm, así que la página de npm lleva un enlace firmado al commit público exacto desde el que se construyó cada versión.
¿Qué hago con lo que encuentra? Individualmente: elimina lo que no reconozcas, rota las credenciales que no deberían estar en las configuraciones. En una empresa: eso es aplicación de políticas, que es un producto diferente — DomainGuard es cómo las organizaciones colocan una capa de políticas delante de esta superficie. Geiger sigue siendo gratuito e independiente en cualquier caso.