この記事のポイント
UI描画や組み込み機能差し替えまで踏み込みたいならmods、ログ・停止・ツール入出力の書き換えやコンテキスト追加だけならsettings hookで十分
modは1ファイルのregister.jsにon('イベント名', hook)を並べる構造で、Node.jsもバンドラも不要
hookは1イベント10秒まで、$.model.completeのmaxTokensは既定1024など、Claude Codeが課す制限を押さえておく必要がある
料金はClaude Codeサブスク(Pro $20/Max $100/$200)に標準同梱、mod自体の追加課金はなし
modは利用者権限で動くため、企業はallowManagedModsOnlyで持ち込みを塞いだ上で社内マーケットプレイス経由に絞るのが安全

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。
Claude Code mods(クロードコードモッズ)は、Anthropicが2026年10月1日にリリースした、Claude Codeの動作とUIをTypeScript関数で書き換える拡張システムです。
設定hooksでもツール入出力の書き換えやコンテキスト追加までは可能でしたが、UI描画と組み込み機能の差し替えまで踏み込めるのがmods固有の特徴です。
本記事では、hooks・Skills・MCPとの違い、ファイル構成とregister関数の作り方、主要イベントと$ API、インストールから配布までの使い方、料金、組織管理を含む導入前の注意点を、2026年10月時点の情報で体系的に解説します。
目次
Claude Code modsとは?Claude Codeを中から書き換えるTypeScript拡張
Claude Code modsの作り方(ファイル構成とregister関数)
Claude Code modsの公式ビルトインmodと注目のコミュニティmod
Claude Code modsとは?Claude Codeを中から書き換えるTypeScript拡張

Claude Code modsとは、Claude Codeのプロセス内で動くTypeScript/JavaScript関数で、プラグインの中にhooks moduleを同梱して配布される拡張の仕組みです。
Anthropicが2026年10月1日に正式リリースしたもので、Claude Code v2.1.287以降で利用できます(Create a mod - Claude Code Docs)。
最大の特徴は、設定ベースのClaude Code Hooksでは手が届かなかった、画面要素の描画と組み込み機能の差し替えまで踏み込める点にあります。
Claude Code modsとhooksの違い

Claude Code modsは、設定ベースのhooksにはできなかったUI描画・組み込み機能差し替え・応答返しによるhookチェーン停止を可能にする点が最大の違いです。
本セクションでは、実行形態・できることの差分・設定hooks/Skills/MCPとの使い分けを順に整理します。
実行形態の違い

設定ベースのhooksはsettings.jsonに書かれたシェルコマンドやHTTPリクエストで、イベントが発生するたびに外部プロセスとして呼び出されます。
一方でmodsは、Claude Codeプロセスの内側でTypeScript関数として動き、セッション中ずっと常駐してイベントを受け取ります。
以下の表で、設定hooksとmodsの違いを整理しました。
| 比較軸 | 設定hooks | mods |
|---|---|---|
| 実行形態 | 外部プロセスのシェルコマンド | Claude Codeプロセス内のTS/JS関数 |
| 実行寿命 | 1イベントごとに起動して終了 | セッション中常駐、ホットリロード可能 |
| 書く言語 | シェル・各種スクリプト | TypeScript / JavaScript |
| できる操作 | ツール入出力の書き換え・コンテキスト追加・停止・記録 | 左記に加えUI描画・組み込み機能差し替え・応答返しによるチェーン停止 |
| 配布経路 | settings.jsonに書く | pluginの中に同梱、/pluginで配布 |
この違いが示すのは、hooksは「イベントの前後に差し込む」ための仕組み、modsは「イベントそのものを書き換える/UI要素を描画する」ための仕組み、という設計意図の差です。
ログ記録や単純な停止で足りるなら設定hooksで十分ですが、UI表示を変えたり組み込み機能を差し替えたりしたい場合はmodsが前提になります。
modの3つの振る舞い

modのhookは、受け取ったイベントに対して次の3つの振る舞いのいずれかを取ります。
-
Observe(記録して通す)
イベントを観察して記録しつつ、next(e)で次のhookやClaude Codeの標準処理に渡す。ツール呼び出しのカウント・ログ出力・テレメトリ送信などに使う
-
Rewrite(書き換えて通す)
イベントの中身を変更したコピーを next({ ...e, text }) のように次に渡す。プロンプトのサニタイズ・秘密情報の削除・モデル切り替えなどに使う
-
Answer(応答して止める)
nextを呼ばず、hook自身が結果を返してチェインを止める。ツール呼び出しの拒否・コマンドの自前実装・組み込み機能の差し替えに使う
設定hooksもPreToolUseのupdatedInputでツール入力、PostToolUseのupdatedToolOutputでツール結果を書き換えられますが、UI描画・組み込み機能の差し替え・hookチェーンを止めて自前応答を返す動きはmodsの固有機能です。UIを変えたい・組み込み機能を置き換えたいならmodsが前提になります。
設定hooks・Skills・MCPとの使い分け

Claude Codeには設定hooks・Skills・MCPといった他の拡張点もあり、modsとは役割が重なる部分と分かれる部分があります。4つを対立する選択肢として並べるのではなく、目的に応じて組み合わせるのが実務上の設計方針です。
-
設定hooks
settings.jsonで定義する軽量な差し込み点。シェルコマンドでログを取る・特定ツールを止める・PostToolUseで整形を走らせる、といった用途向け
-
Claude Code Skills
特定業務のナレッジと手順をMarkdownでまとめ、必要時にClaudeへ渡す仕組み。業務知識のパッケージ化が目的で、UIや振る舞いの書き換えは扱わない
-
MCP(Model Context Protocol)
外部データソースやツールをClaudeから使えるようにする通信規格。社内DBや外部APIへの接続はMCPに寄せる
-
mods
Claude Code本体の動作とUIを書き換える拡張点。プロンプト書き換え・ツールガード・画面描画・組み込み機能差し替えを担当する
整理すると、業務知識のパッケージ化はSkills、外部接続はMCP、ログ取得と単純な停止は設定hooks、Claude Code固有の画面と振る舞いの書き換えはmodsという役割分担になります。
公式も同様の比較をMods overviewで提示しており、4つを並列に捉える前提で設計を進めるのが安全です。
Claude Code modsの作り方(ファイル構成とregister関数)

modは3つのファイルで動かすことができ、Node.jsのビルド環境もバンドラも不要です。本セクションでは、ファイル構成・register関数のパターン・公式tutorialのコード例を見ていきます。
3ファイル構成

最小構成のmodは次の3ファイルで成立します。
first-mod/
├── .claude-plugin/
│ └── plugin.json
└── hooks/
├── hooks.json
└── register.js
それぞれの役割は以下のとおりです。
-
.claude-plugin/plugin.json
pluginのマニフェスト。name / version / description / author などの基本情報を書く。modsのために追加の必須フィールドはない
-
hooks/hooks.json
modulesキーで実装ファイルへのパスを指定する(例: "modules": ["./register.js"])。このキーがあることが、pluginを「mod」として成立させる条件になる
-
hooks/register.js
エントリポイント。export function register(on, options) の形で書き、on(event, matcher?, hook) でhookを登録する。.js / .mjs / .cjs / .jsx / .ts / .mts / .cts / .tsx に対応
Claude Codeは.ts/.tsxを直接ロードできるため、TypeScriptで書く場合もNode.jsやバンドラのビルドステップは不要です。ES Modules(import / export)で書くのが必須で、requireは使えません。
register関数の呼ばれ方

modがロードされると、Claude Codeはregister関数を1回呼び出し、第1引数にon、第2引数にoptionsを渡します。optionsには、マニフェストで宣言したuserConfigフィールドの値がデフォルト値込みで入ります。
onは複数のhookを登録するための関数で、次のシグネチャで呼び出します。
on(eventName, matcher?, hook)
-
eventName
文字列リテラルで指定する必要がある('tool.call' 等)。変数経由やループでの登録はclaude plugin validateに失敗する
-
matcher(任意)
イベントフィールドでフィルタをかける(例: { tool: 'Bash' } でBashツール呼び出しのみに反応)
-
hook
async ($, e, next) => ... のasync関数(turn.stepとprocess.spawnのhookはasync generator)。戻り値は後述の3通り
onは**.catch**(handler)メソッドを返し、hookが失敗したときのエラーハンドラを別途登録できます。
($, e, next)の3引数

公式tutorialのサンプルmodを例に、全体像を見ておきます。このmodはツール呼び出し数をカウントしてスピナーの横に表示し、/tallyコマンドで現在のカウントを答えます。
let calls = 0
export function register(on) {
on('session.start', async ($, e, next) => {
await $.command.register({
name: 'tally',
description: 'Show how many tool calls Claude has made',
})
return next(e)
})
on('tool.call', async ($, e, next) => {
calls += 1
$.ui.invalidate('ui.render')
return next(e)
})
on('command.run', { command: 'tally' }, async () => {
return { text: 'Claude has made ' + calls + ' tool calls since this mod loaded' }
})
on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })
})
}
このコード例のポイントは複数あります。
まず、ファイル先頭のlet calls = 0はhook間で共有される状態で、同一セッション内でカウンタとして機能します。session.startで**/tallyコマンドを登録し、tool.callでカウントとUI再描画要求を発行、command.runでカウントを答え、ui.renderのSpinner**マッチでスピナー表示を書き換える、という構成です。
4つのhookが、Observe(session.start / tool.call)・Answer(command.run)・Rewrite(ui.render)の3振る舞いを使い分けている点に実装の勘所があります。
開発中はclaude --plugin-dir ./first-modで起動すればホットリロードされます。自分が保存した変更は即反映されますが、Claudeに編集を依頼した場合はターン終了時に反映される点だけ注意が必要です。詳しい手順はCreate a modにすべて載っています。
Claude Code modsの主要イベントと$ API

modsを設計するうえで最初に押さえておきたいのが、hookできるイベントと、hookから呼び出せるAPIの全体像です。本セクションでは、公式Mods reference(v2.1.290時点)をもとに主要なイベント・API・制限値を整理します。
主要イベント一覧

modがhookできるイベントは9カテゴリに分かれています。以下の表で、カテゴリと代表的なイベントを整理しました。
| カテゴリ | 代表イベント | 発火タイミング |
|---|---|---|
| Tools | tool.call / tool.check / tool.describe | ツール呼び出し前後、ツール説明文の送信時 |
| Prompts | prompt.submit / prompt.compose / prompt.section / prompt.context / prompt.attachment / prompt.mention / skill.prompt | プロンプト提出時、システムプロンプト構築時、スキル展開時 |
| Commands | command.run / command.describe | コマンド実行時、コマンド一覧生成時 |
| Config | config.set / config.describe | /config行の変更時・表示時 |
| Turns | turn.start / turn.step / turn.complete | ターン開始・各モデル呼び出し前・ターン終了 |
| Session | session.start / session.end / session.compact / session.send / session.receive / session.append | セッション開始・終了・圧縮・セッション間通信 |
| Subagents | agent.offer / agent.spawn | サブエージェント提案時・起動時 |
| Interface | ui.render / ui.press / ui.input / ui.select / ui.message / ui.fault | 画面描画時、ユーザー操作時、Client要素のメッセージ送信時 |
| Other mods / Telemetry | plugin.register / engine.create / telemetry.log / telemetry.mark | 他modのロード時、mods API構築時、テレメトリ発火時 |
この表から読み取れるのは、Claude Codeの各段階(セッション → プロンプト → モデル呼び出し → ツール → UI描画)のすべてにhookポイントが用意されている点です。特にtool.callとprompt.submitは、ガードや書き換えを入れる際の中心イベントになります。
さらに classic.<Event> という形式で、既存の設定hooksイベント(classic.Stop / classic.PostToolUse 等)もmodから捕捉できます。
$ API名前空間一覧

modから呼び出せる**$** APIは、以下の名前空間にグループ分けされています。
| 名前空間 | 代表メソッド | 用途 |
|---|---|---|
| $.ui | open / close / resolve / invalidate / toast / notice / ask | ペインを開く・画面再描画・トースト通知 |
| $.command | register / run / list | スラッシュコマンドの追加・実行 |
| $.tool | register / call / check / list | ツール登録・呼び出し |
| $.agent | register / spawn / list | サブエージェント登録・起動 |
| $.model | complete / fork / classify | モデル呼び出し(別モデルを指定可能) |
| $.prompt | submit / read / fill / suggest | プロンプト操作 |
| $.session | messages / cwd / usage / send / append | セッション情報取得・メッセージ送信 |
| $.fs | read / write / list / exists / stat | ローカルファイル操作 |
| $.http | fetch | HTTPリクエスト(4MiB上限・5リダイレクトまで) |
| $.process | run / spawn | 外部プロセス起動 |
| $.mcp | call / connect | MCPサーバー呼び出し・接続 |
| $.store | get / set / delete / keys | セッション間で共有するキーバリュー保存 |
| $.state | get / set(atom / read / update / derive はclaude-codeからインポートするヘルパー) | セッション内のリアクティブな状態管理 |
| $.clock | now / sleep / after / every | タイマー・遅延実行 |
| $.telemetry | log / mark | テレメトリイベント発火 |
特にmodsの表現力を広げるのは
レンダサイトと要素
ui.renderイベントのhookは、Claude Codeが描画する画面要素を書き換えたり、新しい要素を追加したりできます。描画対象の「レンダサイト」は、公式docsの「Draw in the interface」ページで以下の俯瞰図として示されています。

Claude Codeの画面要素のうち、modが追加・再描画できる場所の俯瞰図(出典:Draw in the interface - Claude Code Docs)

この俯瞰図のうち、modが追加できる場所(実線枠)とmodが再描画できる場所(点線枠)、Claude Code自身が描画する場所(グレー)の3層に分かれています。modが扱えるレンダサイトは以下のとおりです。
-
Pane / AbovePrompt
mod独自のペイン・プロンプト上部の帯
-
UserMessage / AssistantMessage / CommandOutput
会話ログの各メッセージ
-
ToolUse / ToolResult / ToolGroup / ToolProgress
ツール呼び出し表示
-
Spinner / TurnDuration / InfoNotice / PromptHint / SessionMode / AskUserQuestion
動作中インジケータ・ステータス表示
Paneや AbovePrompt の中では、Box・Text・Button・Link・Code・Markdown・Input・Select・Svg・Client・Raster・Imageといった要素で画面を組み立てます。Reactに近い宣言的なツリー構造で、$.ui.resolve(e)から取得した要素を組み合わせて返す形式です。
Claude Codeが課す主な制限

modは軽量・安全に動作するよう、いくつかの実行制限が設けられています。
| 制限項目 | 値 |
|---|---|
| 1イベント内のhook自身の実行時間(nextや**$.clock.sleep**以外のmods API呼び出しの待機時間は含まない) | 10秒(prompt.editは50ms) |
| .catchハンドラの実行時間 | 1秒 |
| $.process.runタイムアウト | 既定30秒・最大10分 |
| $.model.completeのmaxTokens | 既定1024・最大64,000 |
| 1ファイル4MiB | |
| $.http.fetchリクエスト・レスポンス | 各4MiB・リダイレクト5回まで |
| $.store | JSON合計4MiB |
| $.ui.invalidate('ui.render') | 10回/秒にスロットリング |
| 1ツリー内のテキスト | 先頭100,000文字まで描画 |
この制限表が示すのは、modが「本格的なアプリケーションを置き換えるもの」ではなく、「軽量な拡張点」として設計されている点です。重い処理や長時間ジョブは**
実行時間を超えたhookはClaude Codeによってスキップされ、以降の動作に影響しないよう設計されています。
Claude Code modsの使い方

modの流通ルートは、個人開発時のホットリロード・他ユーザーからのインストール・組織内マーケットプレイス公開の3つに分かれます。本セクションでは、それぞれの標準的な手順を押さえていきます。
/pluginからのインストール

公開されたmodをインストールする場合は、Claude Code内で**/plugin**コマンドを実行します。マーケットプレイスから名前を選ぶと、Claude Codeがコードを取得してロードします。
-
前提条件
Claude Code v2.1.287以降、Pro / Max / Team / Enterprise いずれかの有料プラン、またはAPI従量契約
-
インストール
/plugin → マーケットプレイスを選択 → 対象modを選ぶ
-
確認
/plugin → Installed タブで一覧表示。各modは**/plugin**からオン/オフを切り替え可能
Anthropic公式のディレクトリに登録されているmodに加え、**claude plugin install <plugin-id> --marketplace <id>**で特定マーケットプレイスを指定することもできます(v2.1.292以降)。
--plugin-dirでホットリロード

自分でmodを書く場合、Claude Codeを**--plugin-dir**フラグ付きで起動すれば、該当ディレクトリのファイルを保存するたびに自動的にリロードされます。
claude --plugin-dir ./first-mod
このフラグは「plugin登録せずに1セッションだけ有効化する」用途で、Claudeに「このmodを編集して」と頼むと、ターン終了時にエディットが反映されて動作確認できます(自分で保存した変更は即反映)。
すでにインストール済みのmodを編集するのではなく、--plugin-dir付きのディレクトリをそのまま編集するのが推奨される運用です。インストール済みpluginはバージョン単位でキャッシュされるため、ソース修正だけでは反映されません。
validateとtestで検証する

modを公開する前に、2つのコマンドで静的解析とテストを走らせることができます。
-
claude plugin validate ./first-mod
マニフェストと hooks moduleを静的解析し、使っているイベント・API呼び出し・環境変数・stateアクセスを列挙する。typoされたイベント名や、onに文字列リテラル以外を渡すコードはここで検出される
-
claude plugin test
ディレクトリ内の**.test.ts** / .test.tsxファイルを実行する。セッションを起動せず、サインインもネットワークも不要でmodのロジックを単体テストできる
validateの出力例は次のようになります。
❯ ./register.js hooks: session.start, tool.call, command.run{command=tally}, ui.render{component=Spinner}
❯ ./register.js calls: $.command.register, $.ui.invalidate
✔ Validation passed
テスト側はclaude-code/testingからインポートしたtest()関数を使って、ツール呼び出しを人工的に発火させて挙動を検証します。
modの配布ルート

書き上げたmodを他人に使ってもらう方法は複数通りあります。
-
数人に渡す
pluginディレクトリをzipで配布。受け取り側は**--plugin-dir**で読み込む
-
チーム・社内に配布
GitHubリポジトリに**.claude-plugin/marketplace.json**(マーケットプレイスのマニフェスト)を置き、配下に各pluginを並べて「自前marketplace」を作る。チームメンバーはそのリポジトリを**/plugin marketplace add**で登録してからインストール
-
組織全体に強制配布
IT管理者がManaged settingsでextraKnownMarketplacesにマーケットプレイスのディレクトリを絶対パスで登録し、enabledPluginsで該当pluginを有効化、prependPluginsに[plugin ID, "sec-default@builtin"]のように自組織のmodと組み込みガードを並べることで、全ユーザーのセッション開始時に自動ロードされる(sec-default@builtinを併記しないと組み込みガードが外れる)
-
公開ディレクトリに登録
Anthropicのディレクトリに申請して公開。審査が通ると**/plugin**から誰でも入れられる
個人開発者がまず試すなら「自前marketplaceを公開リポジトリで作る」のが現実的で、組織での業務利用では managed settings による強制配布が標準になります。マニフェストのnameに**claude-**で始まる名前を使うと公式扱いになるため validate に失敗する、という注意点も押さえておきたいところです。
Claude Code modsの公式ビルトインmodと注目のコミュニティmod

Anthropic自身がビルトインmodを4本公開しており、Claude Codeの一部機能はすでにmodとして実装されています。コミュニティmodの流通も急速に広がっており、本セクションではその中身を確認します。
Anthropic公式のビルトインmod 4本

anthropics/claude-codeリポジトリにソース公開されている公式modは、2026年10月時点で4本です。
-
diff
/diffコマンドの実体。Claudeが編集したファイルの未コミット差分を、トランスクリプト横のペインにファイル単位で表示する。ClaudeがEditやBashを実行するたびに自動更新される
-
agents-md
AGENTS.mdをプロジェクト指示として読み込むmod。既存のCLAUDE.mdがない場所でAGENTS.mdを読む、両方を併読する、CLAUDE.mdだけ使う、など4つのモード切替に対応
-
sec-default
組織の classic hooks ・プロンプト内容・管理設定・ツールポリシー・権限ルール・環境変数を、ユーザーが入れたpluginから遮断する境界ガード。追加ポリシーは持たず、「組織の設定を守る壁」として機能する
-
telemetry
.telemetry.markのイベントを拾い、Claude Code標準の利用計測行として送信する。ユーザー導入pluginからの発火は拒否し、Claude Codeの計測がオフ環境では何も送信しない.telemetry.log** / **
この4本をソースコード付きで公開している意図は、「modでこの程度のことができる」というリファレンス実装を示すためです。自作modを書く際には、まずこれらのソースを読んでパターンを掴むのが近道になります。
内蔵の You should know mod

Claude Code v2.1.287で導入された内蔵mod「You should know」も、modsの表現力を示す代表例です。
セッション中に別のエージェントが並走し、ユーザーやClaudeが見落としていそうな論点をフラグ立てする仕組みで、本体エージェントの実行を止めずに「あなたまたはClaudeが見落としている可能性があること」を傍から伝えてきます。
side agent方式のmodは、
公開サンプルmodとコミュニティmod
Anthropicはclaude-code-playgroundリポジトリで、modの実装パターンを示すサンプルmodを3つ公開しています。コミュニティ側でも公開から3日で1,740個のmodが登録される勢いで、awesome-claude-code-mods等のカタログが整備されつつあります。
Anthropic公開のサンプルmod 3つ
公式が「modでこの程度のことができる」というリファレンス実装として公開しているのが、以下の3つです。
- Token Weather
AbovePromptに現在のコンテキスト使用率を「Clear(晴れ)/ Showers(にわか雨)/ Storm(嵐)」で表示するmod。長時間セッションでいつ**/compact**すべきか判断しやすくなる

Token Weatherがコンテキスト使用率18%を「Clear」として表示(出典:claude-code-playground / token-weather)
- Blast Radius
rm -rfやgit reset --hardのような破壊的コマンドを検出し、実行前に差分プレビューを出して「Proceed / Cancel」の確認を取るmod

Blast Radiusが rm -rf build を保持し、削除予定ファイル9件(1.1 MB)と承認ボタンを表示(出典:claude-code-playground / blast-radius)
- Replay Theater
/replayコマンドで、Claudeが直前のターンで行った編集を1diffずつステップ再生するmod。コードレビューや作業ログ化に使える

Replay TheaterがClaudeの5編集を1diffずつステップ再生(出典:claude-code-playground / replay-theater)
代表的なコミュニティmodのユースケース

カタログに登録されたコミュニティmodは、以下のようなパターンに広がっています。
-
プロンプト直前のGitブランチ表示
現在作業中のGitブランチをプロンプト上部に常時表示するmod。複数ブランチを行き来する開発者向け
-
トーン・テーマのカスタマイズ
テーブル・コードブロック・ツール行を独自色で描画し、15種類のテーマから選べるmod。見た目のパーソナライズ用
-
Markdownプレビューペイン
Claudeが生成したMarkdownを横のペインでレンダリングして表示するmod。長文回答を目視確認しやすい
-
トークン単価メーター
現在のセッションで消費したモデル費用を推定表示するmod。従量API契約者向け
-
音楽・ステータス系の装飾mod
Spotifyの再生中トラックを表示するなど、作業体験のパーソナライズ系
こうしたコミュニティmodは、awesome-claude-code-modsやkaranb192/awesome-claude-code-modsなどのカタログから探せます。カタログ側では「このmodが何を読む/書く/ネットワークに送るか」を一覧化しており、インストール前の権限確認に使うのが実務的です。
Claude Code modsの料金

Claude Code modsは、Claude Codeの有料サブスクリプションに標準同梱されており、mod自体の追加課金はありません。本セクションでは、Claude Codeのプラン別料金と、modを使う際に気をつけたいモデル呼び出しコストを整理します。
Claude Codeプラン別の料金

Claude CodeはAnthropicの各有料プランに同梱される形で提供されます。以下の表に、プラン別の料金とClaude Code利用可否を整理しました。
| プラン | 月額 | 年額換算 | Claude Code | 想定ユーザー |
|---|---|---|---|---|
| Free | $0 | — | 利用不可 | 一般利用(Claude Codeなし) |
| Pro | $20 | $17/月(年払い) | 利用可 | 個人開発者 |
| Max 5x | $100 | — | 利用可 | ヘビーユーザー個人 |
| Max 20x | $200 | — | 利用可 | 大量利用個人 |
| Team Standard | $25/席(月払)/$20/席(年払) | — | 利用可 | 小規模チーム |
| Team Premium | $125/席(月払)/$100/席(年払) | — | 利用可 | 中規模チーム |
| Enterprise | $20/席(年払・最低20席)+ API従量 | — | 利用可 | 大企業 |
この表が示すのは、Free プランではClaude Codeそのものが使えないため、modsも当然利用できない、という点です。個人開発者で軽く試す場合はPro($20/月)、負荷が高い場合はMax 5x / 20xを選ぶのが実務的です。
Claude Codeのプラン詳細はClaude Codeの料金プラン完全ガイドで解説しています。
APIから使う場合のmods
Claude.comのサブスクリプションではなく、Anthropic APIから直接Claude Codeを使う場合も、modsは追加課金なしで動作します。
ただしmodの中で**$.model.complete**を使って別モデル(例: Haiku)を呼び出すと、その呼び出し分はセッションの認証経路に応じてサブスク利用枠・API従量課金・クラウドプロバイダー(Bedrock / Vertex / Foundry)の利用料として計上されます。
modを使う際に気をつけたいモデル呼び出しコスト

mod自体の課金はありませんが、$.model.completeでモデルを呼ぶmodを使う場合はトークン消費を意識する必要があります。
たとえばside agent方式のmodが毎ターンClaude Sonnet 5.5(API単価:入力$2 / 100万トークン・出力$10 / 100万トークン、2026年10月時点)を呼び、1ターンあたり1万トークンを消費するとします。1日200ターンの開発利用で、月間稼働日を20日とすると概算の消費は以下のようになります。
-
月間トークン
1万トークン × 200ターン × 20日 = 4,000万トークン
-
月間コスト
入力2,000万 × $2/100万 + 出力2,000万 × $10/100万 = 約$240
-
軽量モデル指定時
$.model.complete({ model: 'claude-haiku-4-5-20251001' })でClaude Haiku 4.5(入力$1 / 出力$5 想定)に変更 → 約$120
-
さらに監視頻度を半減
200ターン → 100ターンへ減らすと → 約$60
モデル呼び出し系modを使うなら、$.model.completeで明示的に軽量モデルを指定する運用が実務的です。側方エージェントの監視頻度やmaxTokens(既定1024)の抑制で、2〜5倍のコスト差が出てきます。
重い処理をmodに詰め込む設計は、Claude Code本体のレスポンスも遅くするため、本体側の処理と並行して行う監視・補助用途に絞るのが推奨されます。
Claude Code mods導入前の注意点

Claude Code modsはユーザーと同じ権限でローカル実行されるため、便利な反面リスクも伴います。本セクションでは、modの到達範囲・承認フロー・組織管理設定を順に整理します。
modの到達範囲

modの$ APIは、以下のような強力な到達範囲を持ちます。
-
$.fs.read / write
1ファイル4MiBまでのローカルファイル読み書き
-
$.process.run / spawn
任意のシェルコマンド実行(既定30秒・最大10分)
-
$.http.fetch
任意のHTTPエンドポイントへのリクエスト(4MiB / 5リダイレクトまで)
-
$.mcp.call / connect
pluginのマニフェストに記載されたMCPサーバーへの接続・呼び出し
-
$.store / $.state
.stateは同一セッション内でリアクティブに共有される状態管理.store**はマシン上の全セッション間で共有されるキーバリュー保存(JSON合計4MiB)、**
これらの能力は、悪意あるmodがインストールされた場合、ホームディレクトリの機密ファイルを読み取ったり、外部サーバーにアップロードしたりすることが技術的には可能であることも意味します。
Anthropicも「modのコードはローカルで実行され、Claude Codeを通じて開発者のマシンにアクセスできる」ことを明示し、信頼できる発行元のpluginだけをインストールするよう推奨しています。カタログ側の権限メタデータ(何を読む/書く/ネットワーク送信するか)を事前確認するのが基本動作です。
承認フローと権限モード

Claude Codeは、modの読み込みに関していくつかの安全策を用意しています。
-
ワークスペースの信頼プロンプト
対話セッションで初回のディレクトリ利用時に信頼確認を求められる。信頼確認を済ませていないディレクトリで対話セッションを開くと mod は動作しない(claude -p等の非対話モードは信頼確認ダイアログがなく、別経路の制約で動作が決まる)
-
保護されたパスの承認
~/.claude/配下への書き込みはdefault / acceptEditsモードでユーザー承認が必要
-
--safe-mode / --bare
installed modの読み込みを無効化してClaude Codeを起動するフラグ。--safe-modeは利用者mod・組織管理mod含めてすべてのinstalled modを無効化、--bareは管理対象外のinstalled modのみ無効化(組織管理のmodは残る)。いずれも組み込みmodと管理設定ポリシー自体は残る。トラブル時の切り分けや、信頼できないリポジトリでの作業時に使う
-
非対話モードでは自動承認なし
claude -pのような非対話モードでは、Claudeが書いたmodは自動ロードされない。ユーザーの明示承認がないmodは動作しない設計
個人利用で気をつけたいのは、組み込みガード(sec-default)が適用される環境で管理設定のallowModsToOverrideDenyRulesが有効になっている場合、mod がdenyルール付きツール呼び出しを承認できてしまう点です。claude plugin validateで事前にmodが何をするか把握し、信頼できないソースからのインストールは避ける運用が前提になります。
組織管理の主要設定

企業で Claude Code を導入する場合、Managed settings で mod の挙動を細かく制御できます。
-
allowManagedModsOnly
組織が指定したmodとClaude Codeビルトインmodだけが動作する。ユーザー個人が入れたpluginはhookを実行しない(設定hooksは引き続き動作)
-
allowManagedHooksOnly
組織管理外のhooks・installed modsをブロック。allowManagedModsOnlyよりさらに厳しい
-
allowModsToOverrideDenyRules
ユーザー導入のmodがdenyルール付きツール呼び出しを承認できるようにする(既定は不許可)
-
disableAllHooks
Managed settingsでは、installed pluginからのmod・hookすべてを停止。ユーザーのsettings側では、組織が管理するhookだけが動作
-
prependPlugins / appendPlugins
組織が指定するpluginをユーザーmodより前/後で強制実行。社内マーケットプレイスの mod を全員に自動配布するために使う
-
disableSideloadFlags
--plugin-dir / --plugin-url フラグを起動時に拒否。社員が独自のmodをホットリロードで持ち込めないようにする
企業導入の実務では、allowManagedModsOnlyで持ち込みmodを塞いだ上で、業務用modはextraKnownMarketplacesで絶対パスのmarketplaceディレクトリを登録し、enabledPluginsで有効化、prependPluginsに自組織のmodとsec-default@builtinを並べる構成で配布する、という設計が安全です。
Claude Codeの設定(settings.json)側で管理する設定hooksと組み合わせることで、監査要件を満たしやすくなります。
Claude Codeの外で動く業務のAIエージェントまで統制するなら
Claude Code modsは、allowManagedModsOnlyで持ち込みmodを塞ぎ、社内マーケットプレイス経由の配布に絞れば、開発チームの中では統制が効きます。ただ、経理や営業など開発者以外の部門で使われるAIエージェントには、Claude Codeの管理設定は届きません。部門をまたいでエージェントを管理する仕組みが、別に必要になります。
この管理を受け持つのが、業務部門向けのAIエージェント基盤です。AI総合研究所のAI Agent Hubは、業務エージェントの登録から利用状況の確認までを、管理者が1つの画面で扱えるようにします。
- 登録時にAgentの中身を点検
modをvalidateで確かめるのと同じく、Agentは登録した時点でセキュリティスキャンが走ります。
- 部署ごとのAI乱立を1か所で管理
どこで作ったAgentも1つのダッシュボードに集まり、Agentごとのアクセス権限と実行ログで、誰が何を使ったかを追えます。
- 開発者以外はTeamsから使う
経理や営業の担当者は、CLIではなく普段のTeamsのチャットから業務エージェントを呼び出せます。
- 自社のAzureテナント内で動作
Azure Managed Applicationsとして自社テナント内に構築するため、業務データを外部のSaaSに預けずに運用できます。
AI総合研究所の専任チームが、開発チームのClaude Code運用とは別に、業務部門のAIエージェントをどう統制するかの設計から伴走します。業務領域ごとのユースケースとデモは、AI Agent Hubのサービスページでご確認いただけます。
業務のAIエージェントも権限と監査で統制
開発者以外が使うAIまで管理する
Claude Code modsは開発ワークフローの中に閉じた拡張ですが、経費精算・請求書処理・問い合わせ対応のような業務プロセスのAIエージェントは別のレイヤーで統制する必要があります。AI Agent Hubは自社テナント内で動くAgentに権限と実行ログを紐付け、業務部門が安全にAgentを使い続ける基盤として機能します。
まとめ
本記事では、Claude Code modsを「Claude Codeの動作と画面をプロセスの内側から書き換えるTypeScript拡張」として整理し、hooks・Skills・MCPとの違い、作り方、主要イベントと$ API、使い方、公式とコミュニティのmod、料金、導入前の注意点を解説しました。
2026年10月時点で押さえておくべきポイントは次の3つです。
- 設定hooksでは届かないUI描画と組み込み機能の差し替えまで踏み込めるのがmodsの強みで、ログ取得や単純な停止だけなら設定hooksで足りる
- 追加課金もビルド環境もなく、3ファイルとregister関数だけで最初の1本が書け、--plugin-dirで起動すれば保存のたびに反映される
- modは利用者と同じ権限でローカル実行されるため、企業ではallowManagedModsOnlyで持ち込みを塞ぎ、社内マーケットプレイス経由に絞るのが安全
modsをこれから試す場合、個人の検証から組織での配布までの進め方は次のとおりです。
まずは公式ビルトインmod 4本のソースを読んで実装パターンを掴み、そのうえで--plugin-dirで1本書いて動きを確かめます。
続いて、claude plugin validateとtestで検証してから、チームなら自前marketplace、組織ならManaged settingsでの配布に進むのが着実です。
Anthropic自身が/diffなどの機能をmodで実装しているとおり、Claude Codeは中から書き換える前提の道具になりつつあります。
Claude Code modsは、2026年10月時点でまだコミュニティ主導の広がりが続くフェーズにあります。













