最近、Claude Code に「Mods」という拡張の仕組みが加わりました。これまでの hooks は外から止めたり記録したりするのが中心でしたが、mod は Claude Code の画面や動きそのものに手を入れられるので、何をどちらで作るかの判断が変わってきます。
この記事の要点
- mod は Claude Code の中で動く JavaScript や TypeScript の関数で、プロンプトやツール呼び出しを見る、書き換える、肩代わりするのに加えて、ペインやボタンなどの画面も描けます。settings hook は外で動くスクリプトなどで、画面は描けません。
- 公式ドキュメントの比較では、画面や独自コマンドが欲しいなら mod、既存のスクリプトで止めたり記録したりするなら settings hook、同じ指示を何度も貼っているなら skill、外部のシステムにつなぐなら MCP が向いています。
- mod は自分の権限でサンドボックスの外で動き、確認なしにツール呼び出しを承認することもできます。入れる前に
claude plugin validateで呼ぶ API を確かめ、Desktop アプリの WSL セッションでは動かない点にも気を付けてください。
Claude Mods とは
Claude Mods は、ブラウザの拡張機能のように Claude Code へ後から機能や画面を足せる仕組みです。公式ドキュメントによると正体はプラグインの一種で、出来事が起きたときに呼ばれる関数の集まりを JavaScript か TypeScript で書きます。プロンプトの送信やツール呼び出し、画面の描画が起きるたびに Claude Code が mod の関数を呼び、関数はその出来事に対して 3 通りの動きを選びます。下の図は、その流れを表したものです。
3 つ目の Answer を使うと、通常の動作を走らせずに済むので、危険なコマンドを拒否するといった使い方ができます。mod が描画やファイルの読み取り、ネットワークなど外のことをするときは必ず mods API を通す決まりで、そのおかげでインストールの前に「この mod が何をするか」を一覧にできるんです。
Latent Space の記事の筆者は、この mod を「Attention Interface」の初期の形だと位置づけています。Attention Interface は、作業中の自分に何を取り次ぐかを決める受付係のようなものです。筆者の定義では、エージェントがいつ割り込むか、何を見せるか、どの判断を人に求めるかを決める層のことで、mod を使えばそこを自分と Claude で作れる、というのが記事の主張です。
hooks や skills、MCP との違い
settings hook は、Claude Code の外に立つ守衛のようなものです。中身は settings.json に書いたシェルコマンドや HTTP リクエストで、決まったタイミングで動いてツール呼び出しを通すかどうかを決めたり、記録を取ったりします。公式ドキュメントは mod と settings hook に skill と MCP サーバーを加えた 4 つを比べていて、それを列を絞って並べ直したのが次の表です。
| 仕組み | 正体 | 画面を描ける | 向いている場面 |
|---|---|---|---|
| Mod | 中で動く JS/TS の関数 | できる | ペインや帯、独自コマンド |
| Settings hook | 外で動くスクリプトなど | できない | 既存スクリプトで止める、記録 |
| Skill | Claude が読む SKILL.md | できない | 同じ指示を何度も貼っている |
| MCP サーバー | ツールを渡す外部プロセス | できない | 外部のシステムにつなぐ |
こうして並べると、mod だけが画面を描けるという差がいちばん大きいことがわかります。止める、許可する、記録するだけなら settings hook で足りるので、すでに動いているスクリプトをわざわざ mod に書き直す必要はないと私は考えています。作業の状態を横に出したい、承認をボタンで受けたいといった画面がからむ要望が、mod の出番ですね。
なお、公式ドキュメントでは mod の関数のことも hook と呼び、settings ファイル側を settings hook と書き分けています。日本語の記事を読むときも、どちらの hook の話なのかを見分けると混乱しにくいはずです。
mod でどこまで変えられるか
公式ドキュメントに書かれている範囲では、mod は Claude Code の見た目と動きのほとんどに手を入れられます。主なものを対象ごとに分けると次のとおりです。
| 対象 | mod でできること |
|---|---|
| 画面を足す | 横のペイン、プロンプト上の帯、ボタン |
| 画面を描き換える | ツール呼び出しの行やスピナー |
| ツール呼び出し | 保留して質問、実行せずに答える |
| リクエスト | 1 回だけ別のモデルに送る |
| コマンド | /command を追加、作業中も動く |
| 権限確認ダイアログ | 表示内容は変えられない |
変えられないのは、最後の行にある権限確認ダイアログの表示内容くらいです。追加した /command は Claude のターンを介さずにすぐ動くので、Claude が作業している最中に状態を見たりメモを取ったりする用途に向いています。同じ mod の中ならツール呼び出しを数える関数と画面を描く関数で変数を共有できるため、公式の例ではツール呼び出しの回数をスピナーの横に表示しています。
使える環境と止め方
mod の画面が出るかどうかは、Claude Code をどこで動かすかで変わります。公式ドキュメントの表から主な環境を抜き出しました。
| 環境 | mod の描画 |
|---|---|
| ターミナルの claude | 出る |
| Desktop の Code タブ | 出る(端末専用の要素は除く) |
| Desktop の WSL セッション | 出ない(hook も動かない) |
| VS Code 拡張のチャット | 2.1.299 以降で一部のみ |
| claude -p と Agent SDK | 出ない(hook は動く) |
| クラウドセッション | 出ない |
Windows で Desktop アプリから WSL のセッションを使っている場合は、プラグインそのものが使えないので注意が必要です。VS Code の拡張は、2.1.299 以降でも feature flag を受け取ったセッションに限って描画されます。
公式ドキュメントによると、mod はターミナルなら v2.1.287 以降、Desktop なら v2.1.286 以降で使えて、初期状態で有効になっています。バージョンはターミナルで次のように確かめられ、Desktop では Code タブで /status を打つと表示されます。
claude --version
止めたいときは、1 つだけなら /plugin の Installed タブで無効にし、そのセッションだけなら --safe-mode を付けて起動します。すべてのセッションで止めるなら ~/.claude/settings.json に次の 1 行を足しますが、settings hook やカスタムの status line まで止まる点には気を付けてください。
{
"disableAllHooks": true
}
使えるプランや追加料金、日本での提供については、公式の概要ページ(2026 年 10 月 26 日時点)に記載がありません。mod はプラグインの一種として Claude Code に含まれ、初期状態で有効になっていますが、プランごとの条件は確かめられていないので、手元の環境で /plugin を開いて確認してください。
使いどころと注意点
いちばん気を付けたいのは、mod が自分の権限でサンドボックスの外で動くことです。公式ドキュメントによると、mod はファイルの読み書きやネットワークに加え、API キーを含む設定ファイルも読めて、すべてのプロンプトとツール呼び出しを見たり書き換えたりできます。さらに ask ルールや自分の PreToolUse hook が止めたはずの呼び出しまで確認なしに承認できるので、他人が作った mod を入れるのは、自分のアカウントを預けるのに近いと考えておいたほうがよさそうです。
入れる前には、公式が勧めるように mod を clone してから次のコマンドを実行し、出力の hooks: 行と calls: 行で、扱うイベントと Claude Code に頼む操作を確かめます。
claude plugin validate ./some-mod
ただし、これは呼ぶ API の一覧を見せるもので、コードが安全だと保証してくれるわけではありません。
自作するときの目安としては、Latent Space の筆者の使用実績が参考になります。次の一手をボタンで出す自作の mod は 111 ターン中 99 ターンで動き、その mod の README の見積もりでは、50k トークンのセッションで 1 回あたり約 5〜6k の入力トークン相当を使うそうです。割り込みが多すぎると受付係が逆に邪魔になるので、私はまず標準の mod や公式のサンプルで画面の感触をつかみ、自作するなら動く条件を絞るところから始めたいと考えています。機能は出たばかりで、仕様やバージョンが変わる可能性がある点も頭に置いておいてください。
もっと知りたい人へ
標準で入っている 6 つの mod
/plugin の Installed を開くと、Anthropic が組み込んだ mod が並んでいます。表示名は cc-plugin- で始まり、Latent Space の記事では接頭辞を省いた名前で書かれています。
| 表示名 | 役割 |
|---|---|
| cc-plugin-agents-md | AGENTS.md をプロジェクト指示として読む |
| cc-plugin-diff | /diff を肩代わりしてペインを描く |
| cc-plugin-plugin-authoring | Claude が mod を書くためのスキル |
| cc-plugin-sec-default | 組織の設定を入れた mod から守る |
| cc-plugin-telemetry | 分析の記録を送る |
| cc-plugin-you-should-know | 見落としそうな点をメモ表示する |
標準の mod はアンインストールも更新もできず、--safe-mode や --bare、disableAllHooks でも止まりません。telemetry は /plugin で無効にするか、DISABLE_TELEMETRY などで止めます。sec-default はユーザーがオフにできず、順序は管理者が managed settings で決めます。you-should-know だけは初期状態でオフです。組織の管理者は allowManagedModsOnly などで mod を制限できます。
公式のサンプル mod
Anthropic はサポートなしのサンプルとして、コンテキストの残りを予報のように出す token-weather、rm -rf や force push を保留して続行かキャンセルのボタンを出す blast-radius、直前のターンのファイル編集を再生する replay-theater を公開しています。リポジトリを clone して --plugin-dir で 1 セッションだけ読み込むか、常用するならマーケットプレイスとして追加します。マーケットプレイスからは次のように入れられ、シェルで入れた場合は開いているセッションで /reload-plugins を実行します。
/plugin install <plugin名>@<マーケットプレイス名>
claude plugin install <plugin名>@<マーケットプレイス名>
Latent Space の筆者による 3 つの比較
筆者は、モデルが回答ごとに UI を作る ChatGPT の Intelligent UI(OpenAI の発表は 2026 年 10 月 7 日)、チームのルールで固定のレビューフローを動かす Cursor の PR Routing & Approval、自分と Claude が UI 自体を作る Claude Mods を並べています。自由度が高いぶん、役に立つかどうかは作った人の責任になる、という留保も付いています。
早期アクセスの環境変数
早期アクセスの時期に使われた CLAUDE_CODE_ENABLE_FUNCTION_HOOKS は v2.1.287 以降は無視されるので、0 にしても mod は止まりません。