
CLI en lecture seule qui inventorie les agents IA, les serveurs MCP, les plugins et les extensions sur une machine, en signalant leurs capacités et leur exposition avec des remédiations en langage clair.
Un compteur Geiger pour les agents IA.
Une seule commande en lecture seule qui recense tous les agents IA, harnais, serveurs MCP, plugins et extensions IA présents sur une machine — et vous dit, en langage clair, ce que chacun peut toucher.
npx geiger-scan
Aucune installation. Aucun compte. Aucune télémétrie. Lit les configurations
et les répertoires, n'écrit rien (sauf si vous demandez --json yourfile.json).
En août 2026, un harnais d'agent open source est passé de zéro à plus de 200 000 étoiles GitHub en trois semaines. Son écosystème de plugins a dépassé les 13 000 dépôts dans la même période. Des clients de bureau en un clic sont apparus le jour même de son lancement. Des carrousels Instagram apprennent désormais aux employés de bureau à tout installer.
Chacune de ces installations est un programme capable d'exécuter des commandes, de lire des fichiers et de détenir des identifiants — configuré dans des dotfiles que personne ne regarde deux fois. Posez-vous la question à laquelle cet outil répond : qu'est-ce qui tourne réellement sur cette machine, et à quoi cela peut-il accéder ? La plupart des gens ne peuvent pas y répondre. Maintenant, c'est une seule commande.
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
...
Sortie réelle d'une machine réelle (valeurs masquées — voir ci-dessous).
| Écosystème | Ce que geiger lit |
|---|---|
| Claude Code | serveurs MCP globaux + par projet, hooks, plugins, skills, subagents, apiKeyHelper |
| Hôtes MCP | Claude Desktop, Cursor, Windsurf, VS Code (utilisateur + projet), Cline, Roo Code, Continue, Zed |
| Autres agents | Codex CLI, Gemini CLI, Aider, OpenCode, Qwen Code, DeepSeek Harness, Continue, GitHub Copilot CLI, Goose, Open Interpreter, LM Studio, Ollama |
| Extensions d'éditeur | extensions IA dans VS Code / Insiders / Cursor |
| CLI globaux | paquets d'agents dans les racines npm globales (lus directement — npm n'est jamais exécuté) |
| Extensions de navigateur | extensions IA dans les profils Chrome / Edge / Brave, avec leurs permissions de manifeste |
Chaque résultat indique : ce que c'est, d'où il vient (registre, store, git, script local, serveur distant — ou UNKNOWN-ORIGIN), ce qu'il peut faire (EXECUTES, HOLDS-SECRETS, BROAD-FILESYSTEM, BROAD-WEB, NETWORK), et le chemin de la preuve pour que vous puissiez vérifier à la main.
Geiger reconnaît aussi les wrappers de politique (agents qui placent une couche d'application devant les serveurs MCP) et signale les deux couches au lieu de masquer le vrai serveur derrière le wrapper.
--json que vous nommez explicitement.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
Alarme de dérive : une fois que vous avez examiné une machine,
enregistrez une référence (--json baseline.json) et placez
geiger-scan --strict --diff baseline.json dans cron ou la CI. Il ne renvoie
le code 2 que lorsqu'un nouvel élément peut exécuter du code ou détenir
des secrets — l'inventaire permanent, déjà examiné, reste silencieux. Même
modèle mental qu'un lockfile : acceptez ce qui est là, alertez sur les
changements.
Pas de npm ? npx github:Atomburstofficial/geiger s'exécute directement
depuis le dépôt.
Avant d'exécuter quoi que ce soit, voyez exactement ce que vous obtiendriez : un exemple de rapport HTML et un exemple de sortie JSON se trouvent dans ce dépôt, générés à partir de la fixture de test — données synthétiques, chemins génériques, identifiants affichés par forme uniquement (comme toujours). Le rapport HTML :

Chaque résultat qui justifie une action comporte une remédiation en langage
clair — sous forme de lignes fix: dans le terminal et de blocs « What to do »
dans le rapport HTML.
Modèle de flotte (MSP, IT) : exécutez avec --json par machine selon un
calendrier (une tâche RMM ou un script de connexion écrivant
%COMPUTERNAME%.json sur un partage), conservez la référence de chaque
machine, et laissez --diff signaler la dérive par machine. Le schéma est
versionné et stable. Geiger ne téléphone jamais à la maison — les fichiers
JSON ne voyagent que là où vous les placez.
Énoncées d'emblée, car un scanner en lequel vous avez trop confiance est pire que pas de scanner :
Est-ce un audit de sécurité ? Non. C'est un inventaire avec des étiquettes d'exposition honnêtes — ce dont vous avez besoin avant qu'un audit ait le moindre sens.
Pourquoi faire confiance au scanner gratuit d'une société de sécurité ? Lisez-le. C'est quelques centaines de lignes de JavaScript sans dépendances, et ce qui est publié est ce qui s'exécute — les versions sont publiées depuis GitHub Actions avec la provenance npm, donc la page npm porte un lien signé vers le commit public exact à partir duquel chaque version a été construite.
Que faire de ce qu'il trouve ? Individuellement : supprimez ce que vous ne reconnaissez pas, faites tourner les identifiants qui ne devraient pas se trouver dans des configurations. En entreprise : c'est de l'application de politique, ce qui est un autre produit — DomainGuard est la façon dont les organisations placent une couche de politique devant cette surface. Geiger reste gratuit et autonome dans tous les cas.