Claude CodeのModsとは どこまでカスタマイズできるか、できないことと注意点

Claude Codeのバージョン2.1.287(日本時間10月2日未明に公開)で、「Mods」という仕組みが入りました。Claude Codeの開発者向けの公式アカウントは「Claude Codeをmodできるようになった。動きを変え、画面をカスタマイズし、自分の機能に差し替えられる」と発表しています。この投稿には1万を超えるいいねが付きました。
どこまで手を入れられるのか。公式ドキュメントを読むと、答えは「公式が用意した入口の範囲で、思っていたより深くまで」です。Claude Codeが描いている画面の一部を描き直せますし、Claudeが読むシステムプロンプトやツールの説明を書き換えることも、ツールを使う直前に割り込んで止めることもできます。一方で、操作の許可を求める確認画面は変えられません。そして何より、modはあなたと同じ権限で動くので、入れる前の確認が欠かせません。
Modsで作るmodは、Claude Codeの中で動くプラグイン
Modsで作る1つ1つの拡張(mod)は、Claude Codeの見た目と動きを変えるプラグインです。中身はJavaScriptかTypeScriptで書いた関数で、Claude Codeは、ツールを使う、プロンプトが送られる、画面の一部を描く、といった出来事(イベント)が起きるたびに、その関数を呼びます。関数は、その出来事を見ているだけでも、中身を書き換えてもかまいません。mod側で答えを返して、Claude Codeのいつもの処理を走らせないこともできます。
これまでの仕組みと並べると、Modsの位置づけが分かります。
| Mods | 設定ファイルのフック | スキル | MCPサーバー | |
|---|---|---|---|---|
| 正体 | Claude Codeの中で動く関数 | 決まったタイミングで動くコマンド、HTTPリクエスト、プロンプトなど | Claudeが読む手順書 | Claudeにツールを渡す外部のサービス |
| 変えられるもの | ツール呼び出し、プロンプト、コマンド、ターン、画面 | ツール呼び出しやプロンプトを通すかどうか、ツールの引数と結果、Claudeに足す情報 | Claudeの知識とやり方 | Claudeが使えるツール |
| 画面に描けるか | 描ける | 描けない | 描けない | 描けない |
(公式ドキュメントの比較表をもとに作成)
いちばんの違いは、ModsだけがClaude Codeの「中」で動き、画面にも描けることです。
使い始め方は2通りあります。人が作ったmodは、ほかのプラグインと同じく /plugin からマーケットプレイス経由で入れます。自分用に作るなら、Claude Codeに「入力欄の上にいまのgitブランチを表示するmodを作って」のように頼めば、Claudeがそのセッション用のフォルダにmodを書きます。読み込むかどうかはこちらが承認し、承認すれば手直しのたびに読み込み直されます。ほかのセッションでも使いたいときは、フォルダを移す手順が別に要ります(modの作り方)。どちらも、Claude Code 2.1.287以降が必要です。
どこまで変えられるかは、4つの層で見ると分かりやすい
公式ドキュメントのリファレンスにある、modが割り込める出来事と使える機能を、4つの層に分けて整理しました。
| 層 | 変えられること | 変えられない、または条件があること |
|---|---|---|
| 画面 | 横のパネルや入力欄の上の帯に、文字、ボタン、入力欄、選択肢、Markdown、コードなどを描く。スピナー、ツールを使った記録の行、メッセージ、Claudeが質問してくる画面、入力欄のヒント、モード表示を描き直す | 許可を求める確認画面は変えられない。描き直せるのは公式が公開した場所だけで、入力欄そのものなどは対象外 |
| Claudeが読むもの・保存される会話 | 送るプロンプト、システムプロンプトの各部分、ツールの説明、スキルの本文、Claude Codeが自動で付ける注意書きを書き換える。会話の各行を、保存される直前に書き換える | Team・Enterpriseや管理設定のある環境では、組織が管理する指示やシステムプロンプトは守られる |
| Claudeの動き | ツールを使う直前に止める、実行せずに結果だけ返す。許可するか、確認を求めるか、拒否するかを決める。1回ごとにモデルや考える量(effort)を替える。サブエージェントの起動や会話の圧縮を止める | 組織の環境では、既定で拒否のルールと組織が管理するフックがmodより優先される(後述) |
| 自分の機能 | 自分のコマンドやClaudeが使うツールを足す。小さなモデルを呼ぶ。時間で動く処理、ほかのセッションへのメッセージ、ファイル・プログラム・Webへのアクセス、自分より後に読み込まれるmodを拒む | 1回の処理時間やファイルの大きさなどに上限がある。新しく接続できるMCPサーバーは、自分のプラグインに書いたものだけ |
システムプロンプトの一部を外したり、ツールの説明を書き換えたりできるということは、Claudeの判断の材料そのものに手を入れられるということでもあります。
具体的には、業務の決まりや見える化を自分で足せる
公式の最初の例は、Claudeがツールを使った回数を数えて、作業中のスピナーの横に「tool calls: 3…」のように出すmodです。Xでは、Claudeの作業内容をSonnet 5.5に読ませて、スピナーをその場で小さな漫画に変えるmodを作った、という開発者も現れています。
業務に寄せると、たとえば次のような使い方が考えられます。
- 社内の決まりに反する操作を止める: 決めたパターンに当てはまるコマンドを、Claudeが実行する直前に理由付きで止める。ただし、止められるのは自分で書いた判定に当てはまるものだけで、別の書き方や別のツール経由の操作まで漏れなく防げるわけではない
- 残りの利用枠や進み具合を常に出す: 入力欄の上の帯に、使った量や作業の状況を表示しておく
- 定型業務を専用のコマンドにする:
/standupのようなコマンドを足し、Claudeを介さずにすぐ動かす。小さなモデルに分類や要約を頼むこともでき、その分は自分のプランやAPIキーから払われる
Claude Codeのもともとの機能のいくつかも、実はmodで作られています。/diff の画面や、AGENTS.md をプロジェクトの指示として読み込む機能がそうです。今回、長めの作業を横で見守り、見落としそうなことがあれば入力欄の上に知らせてくれる「You should know」というmodも同梱されました。初期状態ではオフです。使えるのは、自分の組織で利用できるようになっていて、Anthropicに直接つなぐセッションで利用状況の送信をオンにしている場合です(リリースノート)。
注意点は、modがあなたと同じ権限で動くこと
公式ドキュメントは、Modsについてはっきり警告しています。modはあなたのアカウントの権限で動き、隔離されていません。具体的には、次のことができます。
- あなたのアカウントで読めるファイルの読み書き、プログラムの起動、ネットワークへのアクセス
- 環境変数や設定ファイルに置いたAPIキーなどの秘密情報を読む
- あなたが送るプロンプトと、Claudeが使うツールをすべて見る
- プロンプトやツール呼び出しを書き換え、あなたが打ったかのように送る
- あなたに聞かれる前に、ツールの実行を許可する
- あなたのプランやAPIキーでモデルを呼ぶ
確認画面そのものは変えられませんが、確認画面が出る前に許可してしまうことはできる、ということです。どこまで覆せるかは環境で変わります(権限の説明)。
- 個人の環境(管理設定がなく、Team・Enterpriseのログインでもない場合): 確認を求めるルールだけでなく、拒否のルールで止めている操作まで、modが許可できます
- 組織の環境(管理設定がある、またはTeam・Enterpriseでログインしている場合): 組み込みの見張り役のmodが先に動き、既定では拒否のルールと組織が管理するフックがmodより優先されます(管理者がmodに拒否のルールを覆させる設定にすることもできます)。それでも、確認を求めるルールや、組織の管理外のフックによる拒否は、modが覆せます
- どちらでも、自動で進めるモード(auto mode)では、modが許可した操作は安全確認の判定を通らずに実行されます
ネットワークにも差があります。組織がWebへのアクセスを止めていれば、modが通信用の機能($.http.fetch)で行う通信は止まりますが、modが起動したプログラムの通信はその対象外です。Claudeのコマンドを閉じた環境で動かす設定(サンドボックス)を使っていても、modが起動したプログラムはその外で動きます。
入れる前の確認には、claude plugin validate が使えます。プラグインのファイルを手元に置いて実行すると、そのmodがどの出来事に割り込み、ファイルの読み込みや通信などどの機能を使うかを、動かさずに一覧で出してくれます。ただ、これで分かるのは「何を使うか」までで、どこに何を送るか、作った人の意図まで確かめられるわけではありません。危ない機能を使っていないかの絞り込みに使い、最後はコードと作った人、配っている場所で判断することになります。
止めたいときは、/plugin で1つずつ無効にするか、--safe-mode で起動するか、設定ファイルで自分が入れたmodをまとめて止めます。組み込みのmodや、組織が管理するmodは、この方法では止まりません。会社で使う場合は、管理者が、所定の方法で組織として配ったmod以外を読み込ませない設定にすることもできます(組織での管理)。
画面に描いたものが見えるのは、ターミナル(エディターの中のターミナルを含む)とデスクトップアプリのCodeタブです。VS Codeの拡張機能のチャット欄や claude -p では、入れたmodの処理は動いても表示は出ません。クラウドのセッションでは、そこまで届いたプラグインの処理は動きますが、表示は出ません。デスクトップアプリのWSLのセッションでは、プラグイン自体が使えません(動く場所)。
最後に 小さく作って、人のmodは中身を確かめてから入れる
ここからは筆者の見方です。Modsで、Claude Codeは「使い方を工夫するツール」から「自分の仕事に合わせて作り替えるツール」に変わったと思います。Claude Codeの開発に関わるThariq氏も、あらゆるソフトウェアが柔軟になりつつあるので、それを正面から支えることが大事だった、と書いています。
私たちのこのサイトのリポジトリも、ClaudeとCodexの両方に効かせたい決まりを AGENTS.md に書いて使っています。Claude Codeが AGENTS.md を指示として読む機能も組み込みのmodの1つで、その中身は公開されています。毎日使っている機能が、自分で書けるのと同じ仕組みでできている、というのは面白いところです。
試すなら、まず自分の手元で、小さなものから作ってみるのがよいと思います。入力欄の上にいまのブランチや残りの利用枠を出す、といったものなら、Claudeに頼めば作ってもらえます。一方、人が作ったmodを入れるのは、あなたと同じ権限で動くプログラムを入れるのと同じことです。特に個人のプランでは、拒否のルールさえmodが覆せることを覚えておいてください。会社でClaude Codeを使っているなら、Modsをどこまで許すかを、管理者と一度話しておく価値があると思います。