메뉴
HN
Hacker News • 16일 전

Geiger – 내 컴퓨터의 모든 AI 에이전트와 접근 권한을 한눈에 보기

IMP
7/10
핵심 요약

Geiger는 단 한 번의 읽기 전용 명령으로 PC에 설치된 모든 AI 에이전트, MCP 서버, 플러그인, 확장 프로그램을 조사하고 각각이 코드 실행, 파일 시스템 접근, 자격증명 보유 등 어떤 권한을 가지는지 평이한 언어로 알려주는 도구입니다. 설치·계정·텔레메트리 없이 npx geiger-scan 한 줄로 실행되며, Claude Code, Cursor, VS Code, 브라우저 확장까지 폭넓게 감지합니다.

번역된 본문

geiger — AI 에이전트용 방사선 계수기(가이거 계수기). 읽기 전용 명령 하나로 컴퓨터에 있는 모든 AI 에이전트, 하네스(harness), MCP 서버, 플러그인, AI 확장 프로그램을 목록화하고, 각각이 무엇에 접근할 수 있는지 평이한 언어로 알려줍니다.

npx geiger-scan

설치 없음. 계정 없음. 텔레메트리 없음. 설정 파일과 디렉터리를 읽기만 하고 아무것도 쓰지 않습니다(--json yourfile.json을 명시적으로 요청한 경우 제외).

왜 이 도구를 만들었나

2026년 8월, 오픈소스 에이전트 하네스 하나가 3주 만에 GitHub 스타 20만 개를 돌파했습니다. 같은 기간 플러그인 생태계는 1만 3천 개 저장소를 넘어섰습니다. 출시 당일 원클릭 데스크톱 클라이언트가 등장했고, 이제 인스타그램 캐러셀에서 일반 직원들에게 이걸 전부 설치하라고 가르칩니다. 그 설치 하나하나는 명령을 실행하고, 파일을 읽고, 자격증명을 보관할 수 있는 프로그램입니다 — 아무도 두 번 확인하지 않는 dotfile 속에 설정되어 있습니다. 이 도구가 답하는 질문을 스스로에게 던져보세요: 이 컴퓨터에서 실제로 무엇이 실행되고 있으며, 무엇에 접근할 수 있는가? 대부분의 사람은 답하지 못합니다. 이제는 명령 하나면 됩니다.

스캔 결과 예시

GEIGER · AI 에이전트용 가이거 계수기 machine dev-laptop · 2026-09-06 12:24 UTC · 읽기 전용 · 텔레메트리 없음 ────────────────────────────────────────────────────────────── 3개 생태계에서 9개 항목 발견 · 7개가 코드 실행 가능 · 설정 파일에 1개 자격증명

claude-code (6) Claude Code 에이전트 [코드실행] [광범위 파일시스템 접근] [네트워크] 출처: registry · @anthropic-ai/claude-code

magic (Claude Code · 전역) MCP 서버 [코드실행] [시크릿 보유] [광범위 파일시스템 접근] 출처: registry · @21st-dev/magic@latest 자격증명: "API_KEY" — 자격증명 이름을 가진 키 아래 불투명 값 · ~/.claude.json 참고: 정책 에이전트(domainguard-agent.exe)로 래핑됨 — 서버 앞단의 강제 계층

hooks: UserPromptSubmit, PreToolUse hook [코드실행] 참고: hook은 해당 이벤트가 발생할 때마다 프롬프트 없이 실행됩니다. ...

실제 컴퓨터에서 나온 실제 출력입니다(값은 마스킹됨 — 아래 참고).

감지 대상

  • Claude Code: 전역 및 프로젝트별 MCP 서버, hooks, 플러그인, 스킬, 서브에이전트, apiKeyHelper
  • MCP 호스트: Claude Desktop, Cursor, Windsurf, VS Code(사용자+프로젝트), Cline, Roo Code, Continue, Zed
  • 기타 에이전트: Codex CLI, Gemini CLI, Aider, OpenCode, Qwen Code, DeepSeek Harness, Continue, GitHub Copilot CLI, Goose, Open Interpreter, LM Studio, Ollama
  • 에디터 확장: VS Code / Insiders / Cursor의 AI 확장 프로그램 (전역)
  • 글로벌 CLI: 전역 npm 루트의 에이전트 패키지 (직접 읽음 — npm은 실행하지 않음)
  • 브라우저 확장: Chrome / Edge / Brave 프로필의 AI 확장 프로그램 및 매니페스트 권한

모든 발견 항목에는 다음이 포함됩니다: 무엇인지, 어디서 왔는지(registry, 스토어, git, 로컬 스크립트, 원격 서버 — 또는 출처 불명(UNKNOWN-ORIGIN)), 무엇을 할 수 있는지(코드실행, 시크릿 보유, 광범위 파일시스템 접근, 광범위 웹 접근, 네트워크), 직접 검증할 수 있는 증거 경로. 또한 정책 래퍼(MCP 서버 앞에 강제 계층을 두는 에이전트)를 인식하고, 래퍼 뒤에 실제 서버를 숨기지 않고 두 계층을 모두 보고합니다.

세 가지 약속

  1. 읽기 전용. geiger가 수행하는 유일한 쓰기 작업은 사용자가 명시적으로 지정한 --json 파일입니다.
  2. 텔레메트리 없음. 아무것도 컴퓨터를 떠나지 않습니다. 데이터를 보낼 엔드포인트 자체가 없습니다. (즉, 사용자 수도 알 수 없다는 뜻입니다 — 기꺼이 감수하는 트레이드오프입니다.)
  3. 시크릿은 형태만. 설정에서 자격증명 형태의 값이 발견되면 키 이름, 파일, 어떤 종류의 시크릿으로 보이는지만 보고하고 값의 어떤 부분도 절대 표시하지 않습니다. 모든 출력에 마스킹 처리가 심층 방어로 실행되며, 테스트 스위트가 이를 강제합니다.

사용법

  • npx geiger-scan : 스캔 후 보고서 출력
  • npx geiger-scan --html report.html : 항목별 "조치 방법" 가이드가 포함된 자체 완결형 HTML 보고서
  • npx geiger-scan --json out.json : 기계 판독 가능한 결과(schemaVersion 1)
  • npx geiger-scan --path D:\repo1 --path E:\repo2 : 추가로 지정한 프로젝트 디렉터리에서 프로젝트 수준 에이전트·MCP 설정도 스캔
  • npx geiger-scan --home C:\Users\other : 다른 홈 루트 스캔(다른 사용자 프로필, 마운트된 이미지 등)
  • npx geiger-scan --strict : 종료
원문 보기
원문 보기 (영어)
geiger A Geiger counter for AI agents. One read-only command that 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. npx geiger-scan No install. No account. No telemetry. Reads configs and directories, writes nothing (unless you ask for --json yourfile.json ). Why this exists In August 2026, an open-source agent harness went from zero to 200,000+ GitHub stars in three weeks. Its plugin ecosystem passed 13,000 repositories in the same window. One-click desktop clients appeared the same day it launched. Instagram carousels now teach office workers to install all of it. Every one of those installs is a program that can execute commands, read files, and hold credentials — configured in dotfiles nobody looks at twice. Ask yourself the question this tool answers: what is actually running on this machine, and what can it reach? Most people cannot answer it. Now it's one command. What a scan looks like 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 ... Real output from a real machine (values redacted — see below). What it detects Ecosystem What geiger reads Claude Code global + per-project MCP servers, hooks, plugins, skills, subagents, apiKeyHelper MCP hosts Claude Desktop, Cursor, Windsurf, VS Code (user + project), Cline, Roo Code, Continue, Zed Other agents Codex CLI, Gemini CLI, Aider, OpenCode, Qwen Code, DeepSeek Harness, Continue, GitHub Copilot CLI, Goose, Open Interpreter, LM Studio, Ollama Editor extensions AI extensions in VS Code / Insiders / Cursor Global CLIs agent packages in global npm roots (read directly — npm is never executed) Browser extensions AI extensions in Chrome / Edge / Brave profiles, with their manifest permissions Every finding gets: what it is, where it came from (registry, store, git, local script, remote server — or UNKNOWN-ORIGIN ), what it can do ( EXECUTES , HOLDS-SECRETS , BROAD-FILESYSTEM , BROAD-WEB , NETWORK ), and the evidence path so you can verify by hand. Geiger also recognizes policy wrappers (agents that put an enforcement layer in front of MCP servers) and reports both layers instead of hiding the real server behind the wrapper. The three promises Read-only. The only write geiger ever performs is the --json file you explicitly name. No telemetry. Nothing leaves your machine. There is no endpoint to send anything to. (This also means we have no idea how many people use this — a trade we're happy with.) Secrets by shape only. When a credential-shaped value is found in a config, geiger reports the key name, the file, and what kind of secret it looks like — never any part of the value. A redaction pass runs on all output as defense-in-depth, and the test suite enforces it. Usage 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 Drift alarm: once you've reviewed a machine, save a baseline ( --json baseline.json ) and put geiger-scan --strict --diff baseline.json in cron or CI. It exits 2 only when something new can execute code or hold secrets — the standing, already-reviewed inventory stays quiet. Same mental model as a lockfile: accept what's there, alarm on change. No npm? npx github:Atomburstofficial/geiger runs straight from the repo. What the reports look like Before running anything, see exactly what you'd get: a sample HTML report and a sample JSON output live in this repo, generated from the test fixture — synthetic data, generic paths, credentials shown by shape only (as always). The HTML report: Every finding that warrants action carries plain-language remediation — as fix: lines in the terminal and "What to do" blocks in the HTML report. Fleet pattern (MSPs, IT): run with --json per machine on a schedule (an RMM task or login script writing %COMPUTERNAME%.json to a share), keep each machine's baseline, and let --diff report per-machine drift. The schema is versioned and stable. Geiger never phones home — the JSON files travel only where you put them. Limitations Stated up front, because a scanner you overtrust is worse than no scanner: Geiger reads known config locations . Agents installed in nonstandard paths, other user accounts, containers, or WSL (from the Windows side) are not seen. It reads configuration, not runtime behavior . It cannot tell you what a plugin actually did — only what its position allows. It cannot judge whether a package is malicious — only where it came from and what it can reach. Origin ≠ trustworthiness. Partially-parseable formats (TOML configs) are scanned by shape and flagged with reduced confidence rather than skipped. The ecosystem this tool audits changes weekly. Detectors are data-driven and small on purpose — see CONTRIBUTING.md to add one. FAQ Is this a security audit? No. It's an inventory with honest exposure labels — the thing you need before any audit means anything. Why should I trust a security company's free scanner? Read it. It's a few hundred lines of dependency-free JavaScript, and what's published is what runs — releases are published from GitHub Actions with npm provenance , so the npm page carries a signed link to the exact public commit each version was built from. What do I do about what it finds? Individually: remove what you don't recognize, rotate credentials that shouldn't be sitting in configs. At a company: that's policy enforcement, which is a different product — DomainGuard is how organizations put a policy layer in front of this surface. Geiger stays free and standalone either way. License MIT · built by Atomburst · zero runtime dependencies, no build step — the source you read is the code that runs.