Modは実際に何に触れるのか
基準: コミュニティカタログの2026-10-04スキャン、Claude Code 2.1.289
検証を警告なしで通過したMod 1,488個が、どのAPIを呼び出し、どのイベントを受け取るかを数えました。データは awesome-claude-code-mods カタログです。各APIの意味は、Claude Code 2.1.290が配布する型ファイル claude-code.d.ts で確認しました。
数字を読む前に
Section titled “数字を読む前に”カタログはModを実行しません。claude plugin validate がソースを読んで出力する calls: 行と hooks: 行を集め、ルール表でランク付けしています。そのため、次のことはわかりません。
$.http.fetchがどのアドレスに何を送るのか$.process.runがどのプログラムを実行するのか。型ファイルには “what a command of its own reaches is its own” と書かれています。実行したcurlやghがネットワークに出ても、カタログはネットワークとして数えません。- フックが実際に何回動くのか、デフォルトで有効になっているのか
ランクは「できること」の上限です。実際にやっていることの証拠ではありません。
4段階のアクセス範囲
Section titled “4段階のアクセス範囲”カタログは、Modが呼び出す $ の呼び出しのうち最も広いものでランクを決めます。
| ランク | 基準となる呼び出し | Mod | 割合 |
|---|---|---|---|
| 0 画面・記憶 | $.ui.*, $.store.*, $.audio.* |
173 | 11.6% |
| 1 読み取り | $.fs.read, $.env.get, $.settings.read, $.session.messages |
338 | 22.7% |
| 2 書き込み・実行 | $.process.run, $.fs.write, $.config.set, $.prompt.submit, $.model.* |
782 | 52.6% |
| 3 ネットワーク | $.http.fetch, $.mcp.call |
195 | 13.1% |
半数以上がランク2です。ランク2だけではModを選り分けられないということです。
ランク1には水増しがあります。カタログのルール表に $.state がないため、未知の呼び出しとみなしてランク1に引き上げています。$.state はセッションの間ホストが保持する値で、ファイルやシークレットには触れません。ランク1の338個のうち178個は、$.state のせいで引き上げられたものです。これを除くと、ランク0は351個(23.6%)になります。
どの機能を何個が使うか
Section titled “どの機能を何個が使うか”| 表示 | Mod | 割合 | 対応する呼び出し |
|---|---|---|---|
| 状態の保存 | 611 | 41.1% | $.store.* |
| プロセスの実行 | 594 | 39.9% | $.process.run |
| ファイルの読み取り | 563 | 37.8% | $.fs.read・list・stat・exists |
| 環境変数の読み取り | 522 | 35.1% | $.env.get |
| Claudeの操作 | 494 | 33.2% | $.prompt.submit, $.model.*, $.tool.register, $.command.run, $.session.compact, $.turn.abort, $.agent.spawn |
| ファイルの書き込み | 252 | 16.9% | $.fs.write |
| ネットワーク | 170 | 11.4% | $.http.fetch |
| 会話履歴の読み取り | 159 | 10.7% | $.session.messages |
| 入力欄への書き込み | 123 | 8.3% | $.prompt.fill・suggest |
| 設定の読み取り | 88 | 5.9% | $.settings.read |
| 音 | 70 | 4.7% | $.audio.* |
| 設定の変更 | 37 | 2.5% | $.config.set |
| MCPサーバーの呼び出し | 30 | 2.0% | $.mcp.call |
| 環境変数の書き込み | 21 | 1.4% | $.env.set |
名前空間別に見る
Section titled “名前空間別に見る”型ファイルの CoreEngineInterface が $ の標準の名前空間です。各行の説明は、型ファイルのコメントを訳したものです。
$ の名前 |
Mod | よく使われるメソッド | 型ファイルが示す範囲 |
|---|---|---|---|
ui |
1,401 | resolve 1,090, toast 712, open 654 |
画面、ウィンドウ、トースト、クリップボード |
command |
1,092 | register 1,068 |
スラッシュコマンドの一覧と実行 |
clock |
1,045 | now 785, every 617 |
時刻とタイマー |
session |
863 | usage 327, cwd 300, messages 144 |
実行中のセッションをデータとして読む、圧縮、他のセッションへのメッセージ送信 |
state |
828 | get 827, set 823 |
セッションの間ホストが保持する値 |
store |
611 | get 609, set 607 |
ユーザー設定フォルダの下にある、このMod専用のJSONファイル |
process |
608 | run 594, spawn 49 |
セッションと同じユーザー権限でホストのコマンドを実行 |
fs |
595 | read 474, exists 299, write 252 |
エンジンプロセスが触れるファイルシステム。絶対パスはそのまま使えます |
env |
526 | get 522, set 21 |
このプロセスの環境変数。Bash・MCPサーバー・実行したコマンドが引き継ぎます |
prompt |
276 | submit 179, fill 111 |
ユーザーのターンとしてプロンプトを送る、入力欄の読み書き |
model |
206 | complete 159, fork 71 |
セッションのクライアントと認証情報でモデルを呼び出す |
tool |
172 | register 126, call 29 |
モデルが使うツールの一覧と実行 |
http |
170 | fetch 170 |
ホストを経由したネットワークリクエスト |
agent |
102 | list 97, spawn 16 |
サブエージェント |
settings |
88 | read 88 |
設定ファイルと管理ポリシー。env までフィルタせずそのまま渡します |
config |
75 | list 54, set 37 |
/config メニューのすべての行 |
mcp |
30 | call 30 |
接続済みMCPサーバーのツール呼び出し |
特に見ておきたいのが次の3行です。
$.settings.readは、設定ファイルのenvブロックとヘルパーコマンドをフィルタせずに渡します。設定にAPIキーを入れていると、その値もまとめて読み取られます。$.env.getは、変数名を文字列リテラルでしか受け取りません。そのため、claude plugin validateの出力のenv reads:行に、Modが読む変数名がすべて表示されます。インストール前にこの行を見れば、どのキーを読むかがわかります。$.model.*は、セッションの認証情報をそのまま使います。206個のModが、あなたのプランやAPIキーでモデルを呼び出します。そのうち152個はturn.completeもフックしていて、ターンが終わるたびに呼び出せる構造です。
標準の名前空間にない名前も見つかります。13個のModが engine.create イベントで $ に新しい名前を追加しています。KilimcininKorOglu/claude-code-mods の sidebar が追加する $.sidebar を同じリポジトリのMod 36個が呼び出し、lemomo-ai/lemo-mod の $.lemo を16個が呼び出しています。こうしたModは、名前を追加してくれるModが一緒にインストールされていないと正しく動きません。
ツール呼び出しを見るMod
Section titled “ツール呼び出しを見るMod”tool.call は、エンジンがツールを実行する直前に呼ばれます。型ファイルによると、フックは { deny } で拒否したり、{ result } で実行せずに応答したり、入力を書き換えて next に渡したりできます。786個のMod(52.8%)がこのイベントをフックしています。
| マッチャー | Mod |
|---|---|
| ツール名なし(すべてのツール呼び出し) | 464 |
Bash を含むマッチャー |
168 |
Write |
111 |
Edit |
109 |
NotebookEdit |
54 |
Read |
34 |
PowerShell |
30 |
AskUserQuestion |
23 |
Agent |
19 |
ExitPlanMode |
15 |
Edit|Write|NotebookEdit のようにまとめたマッチャーは、名前ごとに数えました。マッチャーが変数で、スキャナーが読み取れなかったものも17個あります。464個はマッチャーなしでフックしているため、すべてのツール呼び出しの入力と結果を見ています。Bashコマンド、編集するファイルの内容、Webリクエストのアドレスが、すべてそこを通ります。ツールを実行するかどうかを決める tool.check をフックするModも64個あります。
プロンプトを見るMod
Section titled “プロンプトを見るMod”prompt.submit は、プロンプトを送信した直後、ターンが始まる前に呼ばれます。フックは、テキストを書き換えて渡したり、{ drop } で止めたりできます。このイベントをフックするModは474個(31.9%)で、そのうち472個はマッチャーがないため、すべてのプロンプトを見ます。逆方向もあります。$.prompt.submit で、人が入力したかのようにプロンプトを送るModが179個あります。
すべてのプロンプトまたはすべてのツール呼び出しを見るModは729個です。そのうち95個はネットワークのランクです。
ネットワークMod 195個はどこへ送るのか
Section titled “ネットワークMod 195個はどこへ送るのか”ランク3の195個のうち、170個は $.http.fetch を、25個は $.mcp.call だけを使います。アドレスは静的スキャンではわからないため、カタログの説明文をキーワードでまとめて、おおまかに分けてみました。
| グループ | Mod | 例 |
|---|---|---|
| 判定モデルサービス(Jev・TypeSafe・Layaなど) | 52 | 編集ごとのセキュリティチェック、圧縮タイミングの判断、モデル選び |
| 業務サービス | 27 | GitHub PR、Linear、Jira、Slack、Gmail、カレンダー、Home Assistant |
| レジャー | 29 | 音楽、歌詞、ゲーム、試合のスコア、株価 |
| 使用量・上限の表示 | 19 | 5時間・週間の上限バー |
| 他のモデル・エージェント | 18 | Gemini、Codex、OpenAI音声 |
| パッケージ・セキュリティ検査 | 6 | レジストリ・OSV.devの照会 |
| その他 | 44 | ローカルデーモン、ブラウザ、メモリストアなど |
キーワードによる分類なので境界は重なっており、その他には localhost のローカルサーバーとだけ通信するModも混ざっています。それでも、はっきりしていることが2つあります。
1つ目は、ネットワークModの4分の1以上が、判定モデルに内容を送っていることです。大半はホスティングサービスですが、Layaやollamaのように、自分のコンピューター上のローカルモデルを使うものも少数あります。たとえば jev-seclint は、Edit|Write|NotebookEdit の呼び出しのたびに、ファイルパスと編集前後のコード断片を api.typesafe.ai に送ります。ソースの register.tsx で直接確認しました。コードが外部サービスに出ていくということです。
2つ目は、別のモデルプロバイダーに会話を渡すModがあることです。gemini-review は、説明に “from the staged diff and the conversation” と書かれていて、モデルが実行する git commit のたびにGeminiにレビューを依頼します。
ネットワークMod 195個のうち115個は、環境変数も読み取ります。大半はサービスのAPIキーを読むためです。46個は会話履歴まで読みます。
インストール前に見る順番
Section titled “インストール前に見る順番”- ディレクトリでランクと表示を確認します。ランク2はよくあるので、表示もあわせて見てください。
- 「すべてのプロンプト」や「すべてのツール呼び出し」を見ていて、ネットワークのランクでもあるModは、ソースで
$.http.fetchが何を送るのかを探します。 claude plugin validateを実行して、env reads:行でどのキーを読むかを確認します。$.model.*を呼び出している場合は、どのイベントで呼び出すかを確認します。ターンごとに呼び出すと、使用量がその分増えます。- 判断のルールはインストール前の安全チェックに従ってください。
同じデータで見たエコシステム全体の姿は、Modエコシステムの現状にあります。
非公式のコミュニティガイドです。Anthropic との提携や承認はありません。Claude および Claude Code は Anthropic の商標です。