本文へ移動

Claude Code が自分自身を書き換えられるようになった──v2.1.287の「Mods」が、拡張を“外付け”から“本体の中”へ引き入れた

Claude Code v2.1.287 が「Mods」を導入。JS/TSのハンドラを本体内部で走らせ、ツール呼び出しや画面描画まで差し替え可能に。既定で有効だが権限はClaude Code本体と同じで、信頼できる配布元の見極めが要る。

Claude Code が自分自身を書き換えられるようになった──v2.1.287の「Mods」が、拡張を“外付け”から“本体の中”へ引き入れた

「外付けの拡張」から「中身の書き換え」へ

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 は既存の拡張手段を置き換えるものではなく、担当範囲が違います。公式ドキュメントの整理をもとに要点を再構成します。

手段動く場所変えられるもの記述言語
ModClaude 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