Claude Codeにmods追加、プロンプトとUI改変

Anthropicは10月1日、Claude Codeにmodsという拡張機構を追加した。公式ブログによると、modとはClaude Codeのイベントにフックする小さなTypeScript関数で、プロンプトを書き換えたり、UI要素を追加したり、内蔵機能を置き換えたり、まったく新しい機能を追加したりできる。CLIとデスクトップ版の両方に対応し、Claude Code 2.1.287以降が必要になる。

配布は既存のプラグイン体系を通じて行われる。Claudeプラグインマーケットプレイスからインストールするか、セッション内で/pluginを実行する。自分で作ったmodを他の人にも使ってもらいたい場合は、プラグインとしてパッケージ化してマーケットプレイスに登録すればよい。

modが触れる範囲

Claude Codeの中でツールを呼び出す、権限を要求する、画面の一部を描画するといった動作はすべてイベントを発生させる。modはそのイベントの前、後、あるいは全体を置き換えて実行できる。公式が挙げる機能には次のようなものがある。

  • モデルに届くプロンプトを書き換える;
  • ツール呼び出しを横取りし、書き換え、再試行する;
  • 権限リクエストを承認または拒否する;
  • Claudeがツールの出力を読む前にその一部を取り除く;
  • 画面にボタンや入力欄を追加する。

開発者ブログの入門チュートリアルはAddy Osmaniが執筆し、モデルに関わる部分をより詳しく説明している。各フックはミドルウェアの連鎖の一つで、書き方は3通りある。next(e)を呼んでそのまま先に進め、結果を後から確認するのが観察、値を書き換えたイベントを次へ渡すのが書き換え、next()を呼ばずに直接{deny: "reason"}を返すのが即答だ。対応するイベントには、ツール呼び出し、プロンプト送信、ターンの開始と終了、スラッシュコマンド、UI描画がある。

チュートリアルの例は、Token Weatherという約80行のmodだ。入力欄の上に「コンテキストの天気予報」を描く。コンテキストウィンドウの使用率によって天気アイコンが変わり、現在のトークン数と使用率を示し、直近12ターンの小さな推移グラフを添えて、前のターンよりどれだけ増えたかも示す。UI部分はAbovePromptコンポーネントを使っている。

フックからmodsへ

Claude Codeにはもともとsettings hooksがあった。イベントごとにシェルコマンドを立ち上げ、stdinとstdoutでJSONをやり取りする方式だ。シンプルだが、毎回新しいプロセスを立ち上げるコストがかかり、前回何が起きたかを覚えていない。

modsはセッション開始時に一度読み込まれ、その後は常駐する。チュートリアルはこの違いを3つ挙げている。状態を保持できること、変化し続けるUIを描画できること、パネルを開く、コマンドを登録するといったClaude Code自身の機能を呼べることだ。Token Weatherが12ターンの推移グラフを描けるのは、この常駐状態があるからで、シェルフックで同じことをするなら自分でディスクに記録を書く必要がある。

この流れをたどると、Claude Codeの拡張性は一段ずつ積み上げられてきた。最初はCLAUDE.mdとsettings hooks、続いて/pluginマーケットプレイス、最近ではAGENTS.mdへの対応も内蔵プラグインとして実装された。modsはフックを「外付けのスクリプト」から「プロセスの中で動くコード」に変え、変更できる範囲を大きく広げた。

セキュリティの境界線

範囲が広がれば、リスクも広がる。公式ブログはそれをはっきりと述べている。

Mods run with the same access to your machine as Claude Code itself. They aren't sandboxed, and you should only install mods from sources you trust.

(modはあなたのマシンに対してClaude Code自体と同じアクセス権限を持つ。サンドボックス化されていないため、信頼できる提供元からのmodだけをインストールすべきだ。)

チュートリアルは別の角度から実行環境を説明している。modのモジュールは自分専用の分離された環境で動き、DOMもNodeもなく、外部への操作はすべて$というインターフェースを通す。両方の説明を合わせて読むと、分離されているのは実行環境であって権限ではない。権限のイベントを手にしたmodは、ユーザーの代わりに「承認」を押すことができてしまう。

TeamプランとEnterpriseプラン、それに管理設定が入ったマシンでは、まずsec-defaultという内蔵modが読み込まれ、権限拒否のルールを上書きするといった、ユーザーが入れたmodの危険な動作を防ぐ。管理者は企業向けコンソールで、利用できるマーケットプレイスを制限することもできる。個人アカウントにはこうした備えが標準では用意されていない。中国本土のチームにとっては、Claude Codeのアカウントとネットワークの壁がもともと高いため、modsは当面、すでに利用しているチーム向けの道具が一つ増える程度の意味合いになりそうだ。サードパーティ製modのエコシステムがどれだけ育つかは、マーケットプレイスの審査がどれだけ緩やかになるかにかかっている。

参考資料:Anthropic公式Claudeブログ、Claude開発者ブログの入門チュートリアル、CocoLoop;公式チュートリアルでバージョン要件、イベントの種類、サンプルコードの行数を確認。