
CLI in sola lettura che inventaria agenti AI, server MCP, plugin ed estensioni su una macchina, riportandone capacità ed esposizione con indicazioni di remediation in linguaggio semplice.
Un contatore Geiger per gli agenti AI.
Un unico comando in sola lettura che inventaria ogni agente AI, harness, server MCP, plugin ed estensione AI presenti su una macchina — e ti dice, in linguaggio semplice, a cosa può accedere ciascuno di essi.
npx geiger-scan
Nessuna installazione. Nessun account. Nessuna telemetria. Legge configurazioni
e directory, non scrive nulla (a meno che tu non richieda --json tuoFile.json).
Ad agosto 2026, un harness per agenti open-source è passato da zero a oltre 200.000 stelle su GitHub in tre settimane. Il suo ecosistema di plugin ha superato i 13.000 repository nello stesso periodo. I client desktop con un solo clic sono apparsi lo stesso giorno del lancio. Ora i caroselli su Instagram insegnano agli impiegati come installare tutto quanto.
Ognuna di quelle installazioni è un programma che può eseguire comandi, leggere file e conservare credenziali — configurato in dotfile che nessuno guarda due volte. Poniti la domanda a cui questo strumento risponde: cosa sta effettivamente girando su questa macchina, e a cosa può accedere? La maggior parte delle persone non sa rispondere. Ora basta un 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
...
Output reale da una macchina reale (valori oscurati — vedi sotto).
| Ecosistema | Cosa legge geiger |
|---|---|
| Claude Code | server MCP globali + per progetto, hook, plugin, skill, subagent, apiKeyHelper |
| Host MCP | Claude Desktop, Cursor, Windsurf, VS Code (utente + progetto), Cline, Roo Code, Continue, Zed |
| Altri agenti | Codex CLI, Gemini CLI, Aider, OpenCode, Qwen Code, DeepSeek Harness, Continue, GitHub Copilot CLI, Goose, Open Interpreter, LM Studio, Ollama |
| Estensioni dell'editor | estensioni AI in VS Code / Insiders / Cursor |
| CLI globali | pacchetti agente nelle root npm globali (letti direttamente — npm non viene mai eseguito) |
| Estensioni del browser | estensioni AI nei profili Chrome / Edge / Brave, con i permessi del loro manifest |
Ogni risultato include: cos'è, da dove proviene (registry, store, git, script locale, server remoto — oppure UNKNOWN-ORIGIN), cosa può fare (EXECUTES, HOLDS-SECRETS, BROAD-FILESYSTEM, BROAD-WEB, NETWORK) e il percorso delle prove, così puoi verificare manualmente.
Geiger riconosce anche i wrapper di policy (agenti che pongono un livello di enforcement davanti ai server MCP) e riporta entrambi i livelli invece di nascondere il server reale dietro il wrapper.
--json
che indichi esplicitamente.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
Allarme di deriva: dopo aver revisionato una macchina, salva una baseline
(--json baseline.json) e metti geiger-scan --strict --diff baseline.json in
cron o in CI. Esce con codice 2 solo quando qualcosa di nuovo può eseguire
codice o conservare segreti — l'inventario stabile e già revisionato resta
silenzioso. Stesso modello mentale di un lockfile: accetta ciò che c'è, allarma
sul cambiamento.
Niente npm? npx github:Atomburstofficial/geiger viene eseguito direttamente
dal repository.
Prima di eseguire qualsiasi cosa, vedi esattamente cosa otterresti: un report HTML di esempio e un output JSON di esempio si trovano in questo repository, generati dal fixture di test — dati sintetici, percorsi generici, credenziali mostrate solo per forma (come sempre). Il report HTML:

Ogni risultato che richiede un intervento porta con sé una correzione in
linguaggio semplice — come righe fix: nel terminale e blocchi "What to do"
nel report HTML.
Pattern per flotte (MSP, IT): esegui con --json per macchina secondo una
pianificazione (un'attività RMM o uno script di login che scrive
%COMPUTERNAME%.json su una condivisione), conserva la baseline di ogni
macchina e lascia che --diff segnali la deriva per macchina. Lo schema è
versionato e stabile. Geiger non contatta mai casa — i file JSON viaggiano solo
dove li metti tu.
Dichiarate in anticipo, perché uno scanner di cui ti fidi troppo è peggio di nessuno scanner:
È un audit di sicurezza? No. È un inventario con etichette di esposizione oneste — la cosa che ti serve prima che qualsiasi audit abbia senso.
Perché dovrei fidarmi dello scanner gratuito di un'azienda di sicurezza? Leggilo. Sono poche centinaia di righe di JavaScript senza dipendenze, e ciò che è pubblicato è ciò che viene eseguito — le release sono pubblicate da GitHub Actions con la provenance npm, quindi la pagina npm porta un link firmato al commit pubblico esatto da cui è stata costruita ogni versione.
Cosa faccio riguardo a ciò che trova? Individualmente: rimuovi ciò che non riconosci, ruota le credenziali che non dovrebbero trovarsi nelle configurazioni. In azienda: quella è applicazione di policy, che è un prodotto diverso — DomainGuard è il modo in cui le organizzazioni pongono un livello di policy davanti a questa superficie. Geiger resta gratuito e autonomo in ogni caso.