Coding agents & harnesses
Claude Code, Codex CLI, Gemini CLI, Aider, Goose, Copilot CLI, DeepSeek Harness, and more — with their hooks, skills, and subagents.
One read-only command inventories every AI agent, harness, MCP server, plugin, and AI extension on a machine — and tells you, in plain language, what each one can touch. Zero dependencies. No account. No telemetry.
$ npx geiger-scanGEIGER · a Geiger counter for AI agents machine dev-laptop · read-only · no telemetry ────────────────────────────────────────────── 10 findings across 3 ecosystems 8 can execute code · 1 credential in config files claude-code (6) magic MCP server [EXECUTES] [HOLDS-SECRETS] [BROAD-FILESYSTEM] origin: registry · @21st-dev/magic@latest credential: "API_KEY" — value never shown fix: pin an exact version, rotate the key hooks: PreToolUse hook [EXECUTES] note: runs without a prompt on every event
Agents live in dotfiles nobody reads twice. Geiger reads them all — configs and directories only, never executing anything it finds:
Claude Code, Codex CLI, Gemini CLI, Aider, Goose, Copilot CLI, DeepSeek Harness, and more — with their hooks, skills, and subagents.
Claude Desktop, Cursor, Windsurf, VS Code, Cline, Roo Code, Continue, Zed — global and per-project, including wrapped and remote servers.
Agent plugins, AI extensions in VS Code and Cursor, and AI browser extensions with their actual manifest permissions.
Registry, store, git, local script, or remote server — and an honest UNKNOWN-ORIGIN flag when the answer is "we can't tell".
API keys sitting in plaintext config files, reported by shape and key name only — the value itself is never printed. Enforced by test.
Every finding that warrants action carries plain-language remediation — in the terminal, and as "What to do" blocks in the HTML report.
No CVSS theater. Each finding gets the labels its position earns:
Zero runtime dependencies, no build step — the source you read is the code that runs.
The only write Geiger ever performs is the report file you explicitly name. It reads configs and directories; it never executes what it finds.
Nothing leaves your machine. There is no endpoint to send anything to — which also means we can't count our own users. A trade we're happy with.
Credential-shaped values are reported by key name, file, and shape — never any part of the value. A redaction pass runs on all output, and the test suite enforces it.
npx geiger-scan --json per machine, collect the files, and diff over time. The JSON schema is versioned and stable. MSPs and IT teams: this pairs naturally with Access Review & Evidence for the "prove it" half.You cannot secure a surface you haven't inventoried. Run it now — it reads, it reports, it leaves.
npx geiger-scan · MIT · zero dependencies · no telemetry