Claude Code が自分自身を書き換えられるようになった──v2.1.287の「Mods」が、拡張を“外付け”から“本体の中”へ引き入れた
Claude Code v2.1.287 が「Mods」を導入。JS/TSのハンドラを本体内部で走らせ、ツール呼び出しや画面描画まで差し替え可能に。既定で有効だが権限はClaude Code本体と同じで、信頼できる配布元の見極めが要る。
「外付けの拡張」から「中身の書き換え」へ
Anthropic は10月1日、Claude Code v2.1.287 で「Mods(モッズ)」を導入しました。これまで Claude Code の拡張は、スキルで指示を足す・MCP サーバーで道具を増やす・設定フックで外部スクリプトを挟む——いずれも「Claude Code の外側」から振る舞いを足すものでした。Mods は、JavaScript/TypeScript で書いたハンドラを Claude Code 本体のプロセス内で走らせます。ツール呼び出し・プロンプト送信・ターンの進行・コマンド・画面の描画といった内部イベントが起きるたびに、あなたの関数が呼ばれる仕組みです。
この機能は v2.1.287 以降で、既定で有効になっています。早期アクセス期に使っていた環境変数 CLAUDE_CODE_ENABLE_FUNCTION_HOOKS は無視されるようになったため、これで Mods を止めることはできません。
イベントを「見る・書き換える・肩代わりする」
Mods のハンドラ(公式ドキュメントではこれを hook と呼びます)は、イベントが実際に処理される前に呼ばれ、次の3通りから振る舞いを選べます。
- 観察(observe):何が起きたかを記録し、そのまま通す。例:ツール呼び出しの回数を数える。
- 書き換え(rewrite):イベントを変えてから通す。例:スピナー表示にツール呼び出し回数を書き足す。
- 肩代わり(answer):本来の処理を走らせず、hook 自身が応える。例:危険なコマンドを握って差し止める、1回のリクエストだけ別モデルに振る。
さらに Mods は画面にも手を入れられます。会話の横にペインを出す、プロンプトの上に帯を出す、ステータス行やトーストを描く——加えて、スピナーやツール呼び出しの行、Claude が質問するダイアログなど、Claude Code 自身が描く部分を差し替え・再スタイルすることもできます。ただし許可プロンプト(permission prompt)だけは書き換えられません。ユーザーに見せる確認画面は改変できない設計です。
既存の「拡張4点セット」との違い
Mods は既存の拡張手段を置き換えるものではなく、担当範囲が違います。公式ドキュメントの整理をもとに要点を再構成します。
| 手段 | 動く場所 | 変えられるもの | 記述言語 |
|---|---|---|---|
| Mod | Claude Code 本体のプロセス内 | ツール呼び出し・プロンプト・コマンド・ターン・画面描画 | JavaScript / TypeScript |
| 設定フック | 本体の外(シェル/HTTP/プロンプト) | 実行の可否、ツールの引数・結果、追加する文脈 | スクリプト+settings.json |
| スキル | Claude が読む指示ファイル | Claude の知識と振る舞い | Markdown |
| MCP サーバー | 外部プロセス/サービス | Claude が持つ道具(ツール) | 任意の言語 |
画面に描けるのは Mod だけで、他の3つはいずれも描画はできません。1つのプラグインに Mod・スキル・MCP サーバーを同梱することもできます。
一部の標準機能は、すでに Mods で動いている
Claude Code 自身の機能のいくつかは、すでに Mods として実装し直されています。/plugin の Installed タブの「Built-in」で確認できます。
cc-plugin-diff:/diffのペイン描画を担う。無効化しても/diff自体は残り、組み込みの旧版が応える。cc-plugin-agents-md:AGENTS.mdをプロジェクト指示として読み込む。cc-plugin-you-should-know:長めの作業中に脇で見張る副エージェント。見落としそうな点をプロンプトの上に知らせる(既定は無効)。cc-plugin-telemetry/cc-plugin-sec-default:分析記録の送信と、組織が管理する設定をユーザー導入の Mod から守る“関所”。
Anthropic は token-weather(コンテキスト残量の予報をプロンプト上に表示)、blast-radius(rm -rf や force push を握って影響範囲を見せる)、replay-theater(直前ターンの編集を /replay で振り返る)といったサンプルも公開しています。自分でコードを書かずとも、やりたいことを会話で伝えれば Claude が Mod を書いてくれます。
利便性の裏に置かれた「同じ鍵」
Mods は あなたの権限でそのまま動くコードであり、サンドボックス化されません。公式ドキュメントは、Mod が次のことをできると明記しています。
- ファイルの読み書き・プロセス起動・ネットワーク通信を「あなたとして」行う
- 環境変数や設定ファイル——そこに置いた API キーを含む——を読む
- 送ったプロンプトと Claude のツール呼び出しをすべて見る/書き換える
- ツール呼び出しを、あなたに尋ねる前に承認する(
askルールや自前のPreToolUseフックが止めるはずの呼び出しさえ通し得る) - あなたのプランや API キーで課金を発生させる
つまり、拡張の自由度が上がった分だけ、信頼できない Mod を入れたときの被害も「Claude Code 本体と同じ」まで広がり得ます。こうしたリスクは実際に指摘されており、Anthropic も「信頼できる作者・マーケットプレイスからのみ導入せよ」と警告しています。導入前には claude plugin validate で、その Mod が扱うイベントと要求する操作(ファイル読み取り・通信など)を一覧できます。組織運用では管理者が allowManagedModsOnly などで読み込める Mod を制限でき、--safe-mode や disableAllHooks で一時的に止めることもできます。
開発現場にとって何が変わるか
これまで「不満があっても我慢する」か「本体の更新を待つ」しかなかった UI や挙動を、チームが自分で差し替えられるようになります。コンテキスト残量の可視化、危険コマンドの確認ゲート、レビュー用の差分ビューなど、現場の作法を道具側に埋め込めるのは実運用で効きます。一方で Mod は、スキルや設定フックと違って本体の内部に食い込むため、導入は「拡張を入れる」というより「エージェントに自分の権限を預ける」判断として扱うのが安全です。まずは公式サンプルと plugin validate での事前確認から始め、組織では管理設定で既定の線引きを決めておくとよいでしょう。
参照: Claude Code Docs — Mods overview / Releasebot — Claude Code 2.1.287 / Crypto Briefing — Anthropic opens Claude Code to mods / GIGAZINE — A modding feature has been added to customize Claude Code


