Show HN: Geiger – マシン上の全AIエージェントとその影響範囲を確認
Show HN: Geiger – See every AI agent on your machine and what it can touch (github.com)
要約
Geigerは、ローカルマシンにインストールされているAIエージェント、プラグイン、拡張機能などを検出し、それらがアクセスできるファイルやネットワークなどの影響範囲を平易な言葉で説明するツールです。インストール不要で、読み取り専用かつテレメトリなしで動作し、AIエージェントの普及に伴うセキュリティリスクの可視化を目的としています。
全文翻訳
geiger
[画像: CI] [画像: npm] [画像: license: MIT] [画像: node ≥18] [画像: dependencies: 0]
AIエージェントのためのGeigerカウンター。
マシン上のあらゆるAIエージェント、ハーネス、MCPサーバー、プラグイン、AI拡張機能をインベントリ化し、それぞれが何にアクセスできるかを平易な言葉で伝える、読み取り専用のコマンドが1つ。
npx geiger-scan
インストール不要。アカウント不要。テレメトリなし。設定ファイルとディレクトリを読み取るだけで、何も書き込みません(--json yourfile.jsonで明示的に要求しない限り)。
[画像: Geigerスキャン:エコシステム別にグループ化された検出結果、露出ラベル、編集済みの認証情報、および平易な言葉での修正方法]
なぜこれがあるのか
2026年8月、あるオープンソースのエージェントハーネスが3週間でGitHubスター数ゼロから20万以上に急増しました。そのプラグインエコシステムは、同じ期間に13,000以上のリポジトリを通過しました。ワンクリックのデスクトップクライアントは、ローンチされたその日に登場しました。Instagramのカルーセル広告では、オフィスワーカーにそれらをすべてインストールするように教えています。
それらのインストールの1つ1つが、コマンドを実行し、ファイルを読み取り、認証情報を保持できるプログラムです。誰も二度見ないドットファイルに設定されています。このツールが答える質問を自問してみてください:このマシンで実際に何が実行されており、何にアクセスできるのか? ほとんどの人はそれに答えられません。今や、それは1つのコマンドで可能です。
スキャン結果の例
GEIGER · AIエージェントのためのGeigerカウンター
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
...
実際のマシンからの実際の出力(値は編集済み — 以下参照)。
検知するもの
| エコシステム | Geigerが読み取るもの |
|---|---|
| Claude Code | グローバルおよびプロジェクトごとのMCPサーバー、フック、プラグイン、スキル、サブエージェント、apiKeyHelper |
| MCPホスト | Claude Desktop、Cursor、Windsurf、VS Code(ユーザーおよびプロジェクト)、Cline、Roo Code、Continue、Zedに設定されたMCPサーバー |
| AIアプリ&IDE | Cursor、Windsurf、Zed、Claude Desktop、ChatGPT Desktop、Codexデスクトップアプリ — 存在によって報告されるため、MCPサーバーがゼロのインストール済みクライアントでも表示されます |
| その他のエージェント | Codex CLI、Gemini CLI、Kilo CLI、Grok Build、Aider、OpenCode、Qwen Code、DeepSeek Harness、Continue、GitHub Copilot CLI、Goose、JetBrains Junie、Open Interpreter、LM Studio、Ollama |
| フック | Claude Code(設定)、Cursor(hooks.json)、Codex(config.tomlのnotify)、Gemini CLI(設定) — フックはプロンプトなしで実行されるため、コマンドがリストされます |
| Gitフック | .git/hooks内のライブフック(サンプルは無視)、core.hooksPathのリダイレクト、およびマージドライバー — gitはこれらを自身で実行し、エージェントツールはここに自身をインストールします |
| スキル&サブエージェントテキスト | スキルが実際に言っていること:その説明、エージェントを上書きしようとしたり、あなたから作業を隠そうとしたりする命令テキスト、敵対的な形状のコマンド、および認証情報の形状 — ディレクトリリストの名前は何も教えてくれません |
| エディタ拡張機能 | VS Code / Insiders / CursorのAI拡張機能 |
| JetBrains IDE | 製品ごとのAIアシスタント / MCP設定の存在(設定はIDE内にあります — Geigerは正しい画面を指し示します) |
| グローバルCLI | グローバルnpmルートのエージェントパッケージ(直接読み取り — npmは実行されません) |
| AIブラウザ | Comet、Dia、ChatGPT Atlas — ブラウザがエージェントであるため、その存在は検出結果となります |
| ブラウザ拡張機能 | Chrome / Edge / Brave / Vivaldi / Arc / Comet / Dia / Atlas / FirefoxプロファイルのAI拡張機能、およびそれらに付与された権限 |
全ての検出結果には、それが何であるか、どこから来たか(レジストリ、ストア、git、ローカルスクリプト、リモートサーバー — または UNKNOWN-ORIGIN)、何ができるか(EXECUTES、HOLDS-SECRETS、BROAD-FILESYSTEM、BROAD-WEB、NETWORK)、そして手動で検証するための証拠パスが含まれます。
Geigerはまた、ポリシーラッパー(MCPサーバーの前に強制レイヤーを置くエージェント)を認識し、ラッパーの後ろにある実際のサーバーを隠すのではなく、両方のレイヤーを報告します。
3つの約束
- 読み取り専用。 Geigerが実行する唯一の書き込みは、あなたが明示的に名前を付けた
--jsonファイルです。 - テレメトリなし。 何もマシンから離れることはありません。送信先のエンドポイントはありません。(これは、私たちがこのツールの使用状況を把握していないことを意味します — それでも私たちは満足しています。)
- 形状による秘密情報のみ。 設定ファイル内で秘密情報のような値が見つかった場合、Geigerはキー名、ファイル、およびそれがどのような種類の秘密情報であるかを報告します — 値の一部を報告することはありません。防御のためにすべての出力に編集パスが実行され、テストスイートがそれを強制します。
要件
Node.js 18以降。それだけです。 Nodeにはnpmとnpxが付属しており、Geigerは依存関係がゼロなので、他に何もインストールされません。グローバルインストール不要、管理者権限不要、アカウント不要。
まだマシンにNodeがない場合は、お持ちのパッケージマネージャーで1コマンドでインストールできます — その後、npxがパスに含まれるように新しいターミナルを開いてください:
winget install OpenJS.NodeJS.LTS # Windows
brew install node # macOS (Homebrew)
sudo apt install nodejs npm # Debian / Ubuntu
その他のプラットフォームおよびバージョンマネージャー(nvm、fnm):https://nodejs.org/en/download
使用方法
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 コードを実行できるもの、または秘密情報を保持しているものが検出された場合、終了コード2で終了
npx geiger-scan --diff baseline.json 以前の`--json`スナップショットと比較:
何が出現し、消え、またはエスカレートしたか
ドリフトアラーム: マシンを確認したら、ベースラインを保存し(--json baseline.json)、geiger-scan --strict --diff baseline.jsonをcronまたはCIに配置します。これは、新しいコード実行能力または秘密情報保持能力を持つものだけが出現した場合にのみ終了コード2で終了します — 既存の、既にレビュー済みのインベントリは静かなままです。ロックファイルと同じメンタルモデル:存在するものを承認し、変更にアラームを鳴らします。
レジストリがブロックされている、またはリリースされていないmainブランチを使用したい場合:npx github:Atomburstofficial/geigerはリポジトリから直接実行します(Nodeは引き続き必要です — 要件を参照)。
レポートの見た目
何かを実行する前に、具体的に何が得られるかを確認してください:サンプルHTMLレポートとサンプルJSON出力がこのリポジトリにあります。これらはテストフィクスチャ(合成データ、汎用パス、常に形状のみで表示される認証情報)から生成されています。HTMLレポート:
[画像: HTMLレポート:概要タイル、露出チップ、認証情報の形状、および「対処法」ブロック]
アクションが必要な検出結果には、ターミナルのfix:行やHTMLレポートの「対処法」ブロックとして、平易な言葉での修正方法が含まれています。
フリートパターン(MSP、IT):マシンごとに--jsonを実行し、スケジュール(RMMタスクまたはログインスクリプトが%COMPUTERNAME%.jsonを共有フォルダに書き込む)で、各マシンのベースラインを保持し、--diffでマシンごとのドリフトを報告します。スキーマはバージョン管理されており、安定しています。Geigerは決してホームに電話しないため、JSONファイルはあなたが配置した場所にのみ移動します。
制限事項
過度に信頼するスキャナーは、スキャナーがないよりも悪いので、最初に明記します:
- Geigerは既知の設定場所を読み取ります。標準外のパス、他のユーザーアカウント、コンテナ、またはWSL(Windows側から)にインストールされたエージェントは検出されません。
- 設定を読み取りますが、実行時の動作は読み取りません。プラグインが実際に何をしたかは分かりませんが、その位置から何が可能かだけが分かります。
- パッケージが悪意のあるものかどうかを判断することはできません — どこから来て、何にアクセスできるかだけです。出所 ≠ 信頼性。
- 部分的に解析可能な形式(TOML設定)や解析に失敗したJSON設定も報告されます:秘密情報の形状に対してスキャンされ、信頼度が低下した状態でフラグが立てられ、サーバーやフックを宣言しているように見える場合に呼び出されます — サイレントにスキップされることはありません。個々のサーバーとフックは、ファイルが解析されるまでリストされないため、「解析不能な設定」行は手動で開くべきものとして扱ってください。
- フックの本文とスキルのテキストは形状で一致します。フラグが立てられた行は「手動で開く」ことを意味し、「これは悪意がある」という意味ではありません。フラグはヒューリスティックです:注意深く書かれた悪意のあるファイルでもトリガーされない場合があります。Geigerが読み取るものは決して実行されません。
- Gitフックは、マシン上のすべてのリポジトリではなく、スキャンしたディレクトリ(現在のディレクトリ、および
--pathで指定されたもの)に対してのみ読み取られます。 - AIブラウザとデスクトップアプリは、中程度の信頼度で存在によって報告されます。それらの機能は製品に固有のものであり、設定から読み取られるものではありません。DiaおよびChatGPT Atlas(macOS)のプロファイルパスはベストエフォートです — 間違った推測は、誤って何かを見つけるよりも何も見つけない方が良いです。
- このツールが監査するエコシステムは毎週変化します。検出器はデータ駆動型であり、意図的に小さく作られています — CONTRIBUTING.mdを参照して追加してください。
FAQ
これはセキュリティ監査ですか? いいえ。これは、正直な露出ラベル付きのインベントリです — 監査が意味を持つ前に必要なものです。
なぜセキュリティ企業の無料スキャナーを信頼すべきなのですか? 読んでみてください。依存関係のない数百行のJavaScriptで、公開されているものが実行されるものです — リリースはGitHub Actionsでnpmプロビナンスを使用して公開されるため、npmページには各バージョンがビルドされた正確な公開コミットへの署名付きリンクが付いています。
検出されたものについて何をすべきですか? 個別に:認識できないものは削除し、設定に置かれたままになっているべきでない認証情報はローテーションしてください。企業として:それはポリシー施行であり、それは別の製品です — DomainGuardは、組織がこのサーフェスにポリシーレイヤーを配置する方法です。Geigerはどちらの場合も無料かつスタンドアロンのままです。
ライセンス
MIT · Atomburst製 · ランタイム依存関係ゼロ、ビルドステップなし — 読んでいるソースが実行されるコードです。