Claude Code Modsとは?プラグインで作る拡張の使い方と、個人情報を伏せるmodの実測
Claude Code Mods(プラグインで動く拡張)の仕組み・作り方・安全な入れ方を公式資料で整理。顧客台帳のマイナンバーをClaudeに渡す前に伏せるmodを実測し、伏字がすり抜けた実例と法人向けの管理設定まで解説します。

この記事の結論
- Claude Code Modsは、Claude Code内で動くJavaScript・TypeScriptの関数で、ツール呼び出しや画面表示に割り込めます。2026年10月1日発表、v2.1.287以降は既定で有効。
- hooks・skills・MCPとの違いは、入力欄の上の帯や横のパネルを描けることと、イベントを書き換えたり代わりに答えたりできることで、/diffなど既存機能の一部もmodとして実装されています。
- 当研究所の実測(v2.1.291・Sonnet 5.5)では、ツールの結果を伏字にするmodで顧客台帳の集計は正しくできましたが、同じファイルの編集ではターン数が6から8に増えました。
- 同じ検証で、Claudeが編集エラーの原因を調べるために実行したod -cの出力は正規表現に当たらず、ダミーのマイナンバー・メール・電話番号がそのままClaudeに渡りました。
- modはサンドボックス化されず入れた人の権限で動くため、claude plugin validateで使う操作を確認し、組織では管理設定のallowManagedModsOnlyで会社が配ったmodだけに絞れます。
2026年10月1日、AnthropicはClaude Code(クロードコード)にMods(モッド)を追加しました。TypeScriptやJavaScriptの小さな関数で、Claude Codeの画面やツールの動きそのものを変えられる拡張の仕組みです。この記事では公式ドキュメントと開発チームの発言を整理したうえで、税理士事務所の顧客台帳を想定し、マイナンバーやメールアドレスをClaudeに渡す前に伏せるmodを実際に作って試しました。伏字は狙いどおり働いた一方、Claude自身の調査コマンドで生の番号が1回すり抜けたことも記録しています。
目次
Claude Code Modsとは?hooks・skills・MCPとの違い
Claude Code Modsは、Claude Codeの中で動くJavaScript・TypeScriptの関数で、ツールの実行やプロンプトの送信、画面の描画といった「イベント」に割り込み、見る・書き換える・代わりに答えるができる仕組みです。2026年10月1日に発表され、CLIはv2.1.287以降、デスクトップアプリのCodeタブはv2.1.286以降で既定で有効になっています。
Anthropicの発表ブログは、modを「Claude Codeの動き方を変える小さなTypeScriptの関数」と説明しています。modはプラグインの一種として配布され、自分で書くことも、Claude Codeに書かせることもできます。v2.1.287のリリースノートには「Added Claude Mods: plugins may now modify deeper behavior」と1行で記されています。告知した@ClaudeDevsのXポストは2026年10月6日時点で表示430万・ブックマーク1.3万に達し、Claude Code責任者のBoris Cherny氏も「Mods are absolutely insane(modsは本当にすごい)」と投稿しました。
開発チームのThariq Shihipar氏はポッドキャストで、社内では当初この機能を「function hooks」と呼んでいたと明かし、既存のhooksとの違いを次のように説明しています。
「(modsでは)UIを変更できます。これはhooksでは決してできなかったことです」
"and then you can modify the UI which you can never do in in hooks."
Thariq Shihipar(Anthropic・Claude Codeエンジニア)— Latent Space「The Future of Claude Code: Mods, Mutable Software, & Multiplayer Agents」42:21
既存の拡張手段との違いは、公式ドキュメントの比較表を日本語に整理すると次のとおりです。settings hooks(設定ファイルに書く従来のhooks)やskillsが「Claude Codeの外から」スクリプトや指示を差し込むのに対し、modはClaude Codeのプロセスの中で動くため、画面も描けます。
| 仕組み | 正体 | 変えられるもの | 画面を描けるか | 向いている場面 |
|---|---|---|---|---|
| mod | プラグイン内のJS/TSの関数 | ツール呼び出し・プロンプト・コマンド・ターン・画面表示 | できる | 入力欄の上の帯や横のパネルを出したい、イベントを書き換えたい |
| settings hooks | シェルコマンド・HTTP・プロンプト | ツール実行の可否、引数と結果、Claudeへの追加の文脈 | できない | 手持ちのスクリプトで許可・拒否・記録をしたい |
| skills | SKILL.md(Markdownの指示書) | Claudeが知っていること・やり方 | できない | 同じ指示を毎回チャットに貼っている |
| MCPサーバー | 外部のプロセス・サービス | Claudeが使えるツール | できない | Claudeを外部システムにつなぎたい |
※公式ドキュメント「Compare mods, settings hooks, skills, and MCP servers」(2026年10月6日確認)を当研究所で要約。skillsとCLAUDE.mdの使い分けはCLAUDE.mdとskillsの使い分けで解説しています。
なお、settings hooksは廃止されません。組織管理のドキュメントは「Nothing about them is deprecated」と明記しており、modsと並んで動き続けます。
Modsで何ができる?公式サンプルと海外の実例
Modsでできることは、①画面に帯やパネルを足す・既存の表示を描き換える、②ツール呼び出しを止める・書き換える・結果を差し替える、③独自の /コマンドを足す、④ターンやトークン使用量を追う、の4つに大別できます。公式サンプルと海外クリエイターの作例は、いずれもこの組み合わせです。
modの関数は、どのイベントでも同じ3つの値($=Claude Codeを操作するAPI、e=イベントの中身、next=後続の処理へ渡す関数)を受け取ります。公式動画で実演したLydia Hallie氏は、この構造をWebアプリのミドルウェアにたとえています。
「Expressを使ったことがあれば、これはClaude Codeに組み込まれたミドルウェアそのものです」
"If you've ever used Express, that's pretty much just middleware built into Claude Code."
Lydia Hallie(Anthropic・Claude Code DevRel)— Claude公式「Mods in Claude Code: change how Claude Code works」1:05
Anthropic公式チャンネルの紹介動画(3分21秒、2026年10月5日公開)。メールアドレスを画面上で隠すmodを作る実演があります。
Anthropicが公開しているmodと、海外で反響の大きかった作例を表にまとめます。再生数は2026年10月6日の取得値です。
| mod | 作者・出どころ | 何をするか |
|---|---|---|
| token-weather | Anthropic公式サンプル | コンテキストの使用率を「晴れ・曇り・雨・嵐」の天気で入力欄の上に表示 |
| blast-radius | Anthropic公式サンプル | rm -rf や強制pushなど危険なコマンドを止め、何が変わるかを見せてから実行・中止を選ばせる |
| replay-theater | Anthropic公式サンプル | /replay で直前のターンのファイル編集を1差分ずつ再生 |
| /diff・AGENTS.md読み込みなど | Claude Codeの組み込みmod | 既存機能そのものがmodとして実装され、/plugin から無効化できる |
| You should know | 組み込みmod(既定はオフ) | 長い作業の横で別のエージェントが見張り、見落としを入力欄の上に知らせる |
| next-steps | Thariq Shihipar氏(公式コミュニティマーケットプレイス) | 各ターンの後に次の指示の候補を3つ出し、1〜3キーで入力欄に下書きとして入れる |
| Collision Guard ほか4種 | Nate Herk氏(YouTube、16.5万再生) | 編集の前に、そのファイルが直近30分以内に触られていないかを確かめ、触られていれば続行・中止などを選ばせる(別のチャットでの同時編集を想定)。録画中に個人情報を伏せるmodなども紹介 |
| Cache Clock など | Chase AI(YouTube、19.8万再生) | プロンプトキャッシュの状態を表示するmodなど。「過去30セッションを読んで」と頼み、自分の作業から作るべきmodをClaudeに提案させる方法も紹介 |
※公式サンプルは claude-code-playground、next-steps は claude-plugins-community で公開(2026年10月6日確認)。クリエイターの作例は各氏の動画による報告です。
どこでmodが効くかにも注意が必要です。公式ドキュメントによると、ターミナルのCLIとデスクトップアプリでは処理も表示も動きますが、VS Code拡張のチャット欄や非対話モード(claude -p)、Agent SDKでは処理だけが動き、画面には何も描かれません。デスクトップアプリのWSLセッションでは、プラグイン自体が使えないため動きません。
Modsの作り方は?Claudeに頼む方法と自分で書く方法
Modsの作り方は2通りあります。Claude Codeのセッションで「入力欄の上に今のgitブランチを表示するmodを作って」のように頼む方法と、3つのファイルを自分で書く方法です。どちらもNode.jsやビルドの準備は不要で、Claude Codeが .js と .ts を直接読み込みます。
Claudeに頼む場合
頼むと、Claudeは組み込みのplugin-authoringスキルを使ってmodを書きます。保存先は ~/.claude/dev-mods/ の下のセッションIDごとのフォルダで、最初のファイルの保存時に「このセッションでホットリロードを有効にするか」を確認されます。有効にすると、そのターンの終わりに読み込まれ、以後の修正もターンごとに反映されます。
注意点が1つあります。公式ドキュメントによると、Claudeが書いたmodは作ったセッションでしか読み込まれず、そのフォルダは設定 cleanupPeriodDays(既定30日)を過ぎると削除されます。気に入ったmodは自分のフォルダへコピーし、次の方法で読み込みます。
自分で書く場合(3ファイル)
modはプラグインと同じ構成で、hooks/hooks.json に "modules" という項目を1つ足したものがmodになります。
pii-shield/
├── .claude-plugin/
│ └── plugin.json … 名前・バージョン・説明
├── hooks/
│ ├── hooks.json … { "modules": ["./register.js"] }
│ └── register.js … modの本体(イベントごとの関数)
└── tests/
└── pii-shield.test.ts … 任意。claude plugin test で実行
書いたら、次の3つのコマンドで「読み込む・中身を確かめる・テストする」を回します。mod向けの解析とテストはv2.1.287以降で使えます。
# このセッションだけ読み込む(保存すると自動で再読み込み)
claude --plugin-dir ./pii-shield
# どのイベントを受け取り、どんな操作をするかを、実行せずに一覧する
claude plugin validate ./pii-shield
# tests/ の *.test.ts を実行する(セッション・ログイン・通信は不要)
cd pii-shield && claude plugin test
関数の書き方は3パターンだけ覚えれば足ります。next(e) をそのまま返すと「見るだけ」、中身を変えたコピーを next に渡すと「書き換え」、next を呼ばずに自分の答えを返すと「代わりに答える」(例:コマンドを実行させずに拒否する)になります。
【実測】個人情報をClaudeに渡す前に伏せるmodは機能するか?
当研究所で、ファイルの読み取り・コマンド・検索の結果からマイナンバー・メールアドレス・電話番号を伏字にしてからClaudeに渡すmodを作り、架空の顧客台帳で試しました。読み取りと集計では伏字が狙いどおり働きましたが、編集を頼むと作業が遠回りになり、Claude自身の調査コマンドで生の値が1回すり抜けました。
公式ブログは、modでできることの1つに「ツールの出力から秘密情報を、Claudeが読む前に伏せる(Redact secrets from tool output before Claude reads it)」ことを挙げています。士業事務所なら、顧客台帳を読ませて集計や書類作成をさせたいが、マイナンバーまでAIに送りたくない、という場面に当たります。
検証の条件
検証環境(2026年10月6日)
- Claude Code v2.1.291(macOS)、モデルはSonnet 5.5、非対話モード(claude -p)。Claude Maxの定額内で実行し、費用はClaude Codeが出すAPI料金換算の推定値(1ドル=157円で換算)
- データは架空の顧客台帳CSV(3件。氏名・マイナンバー・メール・電話・月額顧問料)。番号やアドレスはすべてダミー
- 各条件1回ずつの実行。時間と費用は回ごとに揺れるため、傾向の参考値として見てください
modの本体は次の約40行です。Read(ファイル読み取り)・Bash(コマンド)・Grep(検索)の結果を受け取ったあと、文字列の中を正規表現で伏字に置き換え、置き換えた結果だけをClaudeに返します。伏字の処理自体が失敗したときに生の出力が素通りしないよう、.catch で「失敗したら出力を渡さない」を指定しています。
// 伏せる対象と置き換える文字(上から順に当てる)
const RULES = [
[/(?<!\d)\d{4}[- ]?\d{4}[- ]?\d{4}(?!\d)/g, '[マイナンバー伏字]'],
[/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/g, '[メール伏字]'],
[/(?<!\d)0\d{1,4}-\d{1,4}-\d{3,4}(?!\d)/g, '[電話番号伏字]'],
]
// 文字列・配列・オブジェクトをたどって伏字にし、置き換えた件数を数える
function mask(value, counter) {
if (typeof value === 'string') {
let s = value
for (const [re, label] of RULES) s = s.replace(re, () => { counter.n += 1; return label })
return s
}
if (Array.isArray(value)) return value.map((v) => mask(v, counter))
if (value && typeof value === 'object') {
return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, mask(v, counter)]))
}
return value
}
// ツールを実行させ、その結果をClaudeが読む前に書き換える
async function shield($, e, next) {
const r = await next(e)
if (r.deny || r.isError) return r
const counter = { n: 0 }
const masked = mask(r.result, counter)
if (counter.n === 0) return r
$.ui.log('pii-shield: ' + counter.n + ' 件を伏せてから Claude に渡しました')
return { result: masked }
}
export function register(on) {
// 伏字の処理が失敗・時間切れになったら、生の出力を渡さずに止める
on('tool.call', { tool: ['Read', 'Bash', 'Grep'] }, shield).catch(async () => {
return { deny: '個人情報の伏字処理に失敗したため、このツールの出力は渡しません。' }
})
}
claude plugin validate にかけると、このmodが受け取るイベントと使う操作が一覧されます。最初は .catch を付けずに書いたところ「gating hook without .catch」(止める役割の関数に失敗時の扱いがない)と表示されたため、上のように直しました。ダミーのツール結果を流す自動テスト2件も通りました(約1秒)。
$ claude plugin validate ./pii-shield
❯ ./register.js hooks: tool.call{tool=Read|Bash|Grep}
❯ ./register.js gating hook with .catch: tool.call{tool=Read|Bash|Grep}
❯ ./register.js calls: $.ui.log
✔ Validation passed
$ claude plugin test
(pass) マイナンバー・メール・電話番号を伏せて渡す
(pass) 該当がなければ結果をそのまま返す
2 pass
0 fail
読み取りと集計:伏字のまま正しく合計できた
「顧客台帳.csv を読み、全行をそのまま書き写してから、顧問料の合計を答えて」と頼み、mod なし・ありで比べました。modありでは、Claudeが書き写した内容の時点でマイナンバー・メール・電話がすべて伏字になっており、Claude自身も「ファイルの時点で伏字になっています」と受け取っていました。顧問料の列は伏せていないので、合計110,000円はどちらも正しく出ました。
| 条件 | Claudeが受け取った内容 | 合計の答え | 所要時間 | ターン数 |
|---|---|---|---|---|
| A:modなし | マイナンバー・メール・電話がそのまま | 110,000円(正) | 6.3秒 | 2 |
| B:pii-shieldあり | 3列とも [マイナンバー伏字] などに置換 | 110,000円(正) | 4.7秒 | 2 |
※推定費用はAが約15円、Bが約3円でしたが、Aが最初の実行でキャッシュを作った分を含むため、modの効果ではありません。
編集:遠回りになり、調査コマンドで生の値がすり抜けた
次に「山田太郎さんの顧問料を35000に変更して」と頼みました。最終的なファイルはどちらも正しく、変わったのは1行の顧問料だけでした。ただしmodありでは、ターン数が6から8に、所要時間が13.9秒から20.3秒に増えました。
| 条件 | 結果 | 所要時間 | ターン数 | 推定費用 |
|---|---|---|---|---|
| D:modなし | 1回で編集成功 | 13.9秒 | 6 | 約21円 |
| C:pii-shieldあり | 最初の編集が失敗し、別の方法で成功 | 20.3秒 | 8 | 約23円 |
記録を追うと理由が分かりました。Claudeは伏字の見えた行をもとに「[電話番号伏字],33000」を置き換えようとしましたが、実際のファイルにその文字列はないため、編集ツールが「String to replace not found」で失敗しました。原因を調べるためにClaudeが次に実行したのが、1文字ずつ空白で区切って表示するコマンド(od -c)です。
$ sed -n 2p 顧客台帳.csv | od -c | head -20
0000000 山 ** ** 田 ** ** 太 ** ** 郎 ** ** , 1 2 3
0000020 4 5 6 7 8 9 0 1 2 , y a m a
0000040 d a . t a r o @ e x a m p l e .
0000060 c o m , 0 9 0 - 1 2 3 4 - 5 6 7
0000100 8 , 3 3 0 0 0 \n
数字や文字の間に空白が入るため、「12桁の数字」「@を含む文字列」という正規表現に当たらず、ダミーのマイナンバー・メールアドレス・電話番号が3つともそのままClaudeに渡りました。Claudeに隠すつもりはなく、編集の失敗を調べる普通の手順です。その後、sedでの一括置換は権限の確認で止まり、Claudeは置き換え範囲を「,33000」だけに絞って編集を成功させました。
検証から分かったこと1:伏字modは「うっかり」を減らす層
正規表現での伏字は、表示形式が変わるだけで外れます。od -c のほか、文字コード変換や1文字ずつの出力、画像化でも同じことが起こりえます。漏えいを確実に防ぐ仕組みではありません。
検証から分かったこと2:伏字のままの編集は遠回りになる
Claudeは伏字の文字列がファイルにあると思って編集しようとするため、失敗と再試行が増えます。集計・要約・書類の下書きのように「読むだけ」の作業に向き、元データの修正には向きません。
検証から分かったこと3:本当に渡したくないデータは置かない
確実なのは、マイナンバーなどの列を削った作業用のコピーを作ってから渡すことと、元のファイルを権限設定の deny で読めなくすることです。modはその上に重ねる補助と考えるのが現実的です。
権限設定の deny ルールの書き方は、Claude Codeの権限設定ガードレールで詳しく解説しています。
画面で隠すこととClaudeに渡さないことは何が違う?
modで個人情報を「隠す」方法は2種類あり、守れる範囲がまったく違います。画面の描画(ui.render)で隠すと、見た目は伏字になりますが、Claudeとモデルには生のデータが渡ります。Claudeに渡さないためには、前の節のようにツールの結果(tool.call)を書き換える必要があります。
公式動画でLydia Hallie氏が作ったのは前者のmodで、録画中に画面へメールアドレスを映さないためのものです。同氏は、隠したあとでもClaudeが本物のアドレスでメールを書けることを示し、その理由をこう説明しています。
「描画のmodは画面に表示されるものしか変えません。だからモデルは、私が変えた版を一度も見ていません」
"a mod on render only changes what shows up on screen. So the model never saw my version."
Lydia Hallie(Anthropic・Claude Code DevRel)— Claude公式「Mods in Claude Code」2:57(字幕の「a model render」は文脈から「a mod on render」と判断)
用途ごとに、どの層を使うべきかを整理します。
| やりたいこと | 使う仕組み | Claude・モデルに渡るか | 士業事務所での例 |
|---|---|---|---|
| 画面共有や録画で映さない | mod(ui.render) | 渡る(見た目だけ変わる) | 顧問先とのオンライン打ち合わせ、所内研修のデモ |
| 読ませた内容の一部をClaudeに渡さない | mod(tool.call の結果を書き換え) | 伏字にした形で渡る。ただし本記事の検証のようにすり抜けがありうる | 顧客台帳から件数・金額だけを集計させる |
| そもそも読ませない | 権限設定の deny、作業用コピーから列を削る | 渡らない | マイナンバー・口座番号の原本、本人確認書類 |
表示系modの例:顧客フォルダの取り違えを防ぐ帯
表示系のmodは、情報を守るより「間違いを防ぐ」用途で力を発揮します。当研究所では、作業中のフォルダ名(=顧客名)とコンテキストの使用率を入力欄の上に常に出すmodを作りました。顧客ごとにフォルダを分けている事務所で、別の顧客のフォルダで指示を出してしまう事故を減らす狙いです。
export function register(on) {
// 入力欄の上の帯に、作業中のフォルダ名(=顧客名)とコンテキストの使用率を出す
on('ui.render', { component: 'AbovePrompt' }, async ($, e, next) => {
// アンケートなど Claude Code 自身が帯を使っているときは譲る
if (e.props.hasSurvey) return next(e)
const cwd = await $.session.cwd()
const folder = cwd.split('/').filter(Boolean).pop()
const { context } = await $.session.usage()
const { Box, Text } = $.ui.resolve(e)
return Box({
paddingX: 1,
gap: 2,
children: [
Text({ color: 'yellow', bold: true, children: '作業中の顧客フォルダ: ' + folder }),
Text({ dimColor: true, children: 'コンテキスト使用率 ' + (context.percent ?? 0) + '%' }),
],
})
})
// 1回答えるたびに帯を描き直して、使用率を更新する
on('turn.complete', async ($, e, next) => {
$.ui.invalidate('ui.render')
return next(e)
})
}
「株式会社サンプル商事」というフォルダで起動し、1回だけ指示を出したときのターミナルの表示が次です(v2.1.291、幅110文字の端末で取り込み)。起動直後は使用率0%、1ターン後は5%に更新されました。
❯ このフォルダに何があるか ls で確認して、一言で教えて
Listed 1 directory
⏺ このフォルダ(株式会社サンプル商事)は空っぽで、ファイルもサブフォルダもありません。
✻ Worked for 8s
作業中の顧客フォルダ: 株式会社サンプル商事 コンテキスト使用率 5%
────────────────────────────────────────────
❯
この程度のmodなら、Claudeに「作業中のフォルダ名を入力欄の上に大きく出すmodを作って」と頼めば数分で作れます。帯の表示はターミナルとデスクトップアプリのみで、VS Code拡張のチャット欄には出ない点に注意してください。
Modsを入れる前に確認すべきことは?事務所・法人の安全設定
modはサンドボックスで隔離されておらず、入れた人と同じ権限でファイルの読み書き・プログラムの起動・通信ができます。他人のmodを入れる前には claude plugin validate で使う操作を確かめ、組織で使うなら管理設定で「会社が配ったmod以外は読み込まない」を選べます。
modが届く範囲
公式ドキュメントは、読み込まれたmodができることとして次を挙げています。
- ユーザーと同じ権限で、ファイルの読み書き・プログラムの起動・ネットワーク通信をする
- 環境変数や設定ファイルに置いたAPIキーなどを読む
- 送ったプロンプトとClaudeのツール呼び出しをすべて見る・書き換える
- 承認の確認が出る前に、ツール呼び出しを許可してしまう
- 契約プランやAPIキーでモデルを呼び、利用枠を使う
公式動画では「modは独自のサンドボックスで動く」という言い方も出てきますが、ドキュメントは「Mods aren't sandboxed」と明記しています。動画の意味は「modが外に触れるのは $ の操作経由だけ」ということで、その $ を通せばユーザーと同じことができます。sandbox設定を有効にしても隔離されるのはClaudeが実行するBashだけで、modが起動したプロセスは対象外です。
入れる前に validate で「何を使うか」を見る
他人が公開しているプラグイン(mod)を入れる前の確認には、claude plugin validate が使えます。modのコードは静的に解析され、claude plugin validate の calls: 行に、使う操作がすべて並びます。公開されている4つのmodを当研究所で調べた結果が次です。
| mod | calls: に出た主な操作 | 読み取れること |
|---|---|---|
| token-weather(公式) | $.session.usage, $.ui.resolve | 使用量を読んで描くだけ。ファイル・通信・プロセスなし |
| blast-radius(公式) | $.process.run, $.ui.open | 危険なコマンドの影響を調べるため、自分でプログラムを起動する |
| replay-theater(公式) | $.fs.read, $.command.register | ファイルを読み、/replay コマンドを足す |
| next-steps(コミュニティ) | $.model.fork, $.prompt.fill | ターンごとにモデルを呼ぶので利用枠を少し使う。入力欄に下書きを入れるが、自動送信はしない |
※2026年10月6日、Claude Code v2.1.291で実行。next-steps のREADMEは、セッションのプロンプトキャッシュを共有するため1回あたり「短い返答1回分程度」の費用だと説明しています。
特に注意して見る操作は、$.fs.write(どこにでも書ける)、$.process.run / spawn(プログラムを起動)、$.http.fetch(外部と通信)、$.env.get と $.settings.read(APIキーを読める)、$.model.complete(利用枠を使う)、$.prompt.submit(ユーザーの発言として送れる)です。hooks: 行に tool.check があれば、承認の確認が出る前に許可・拒否を決めるmodです。
費用面では、プロンプトやシステムプロンプトに文字を足すmodにも注意が要ります。公式ドキュメントは、リクエストごとに変わる文字を足すとプロンプトキャッシュが効かなくなると書いています。先のポッドキャストでも、聞き手が「問い合わせごとにモデルを振り分けるmodを作ったら、プランをすぐ使い切りそうだ」と懸念し、Thariq氏は、キャッシュを壊さない振り分けmodを誰かが作って共有すればよく、Claudeがキャッシュの注意点を理解して警告できるようにしたいと答えています(37:45〜)。
止め方と、組織での管理設定
個人で問題が起きたときは、/plugin の Installed タブで該当のmodを無効にするか、claude --safe-mode で起動すると、入れたmodをすべて止められます(ほかのカスタマイズも止まります)。常に止めたい場合は ~/.claude/settings.json に "disableAllHooks": true を書きます(この場合は自作のsettings hooksやステータスラインも止まります)。
組織では、Team・Enterpriseプランでログインしているか、管理設定(managed settings)が配られたPCで、組み込みのガードmod(sec-default)が最初に読み込まれます。このガードがある環境では、ユーザーが入れたmodは deny ルールで拒否された操作を許可できず、管理設定の PreToolUse フックの拒否も覆せません。ただし $.fs.read のようなmod自身の操作は deny ルールの対象外です。社員が自分で入れたmodを一切読み込ませない場合は、管理設定に次を書きます。
{
"pluginConfigs": {
"cc-plugin-sec-default@builtin": {
"options": {
"allowManagedModsOnly": true
}
}
},
"disableSideloadFlags": true
}
allowManagedModsOnly を true にすると、ユーザーが入れたmod、--plugin-dir で読み込んだmod、セッション中にClaudeが書いたmodは読み込まれず、会社が配ったmodと組み込みmodだけが動きます。settings hooksやステータスラインはそのまま使えます。disableSideloadFlags は --plugin-dir などの起動オプションを拒否する設定です。いずれもユーザー側の設定ファイルでは上書きできません(公式ドキュメント「Manage mods for your organization」)。
当研究所の見解:士業事務所・中小企業での始め方
- 最初は自分で書いた(またはClaudeに書かせた)表示系のmodだけを使う。顧客フォルダの帯やコンテキスト量の表示など、ファイル・通信・プロセスを使わないもの
- 他人のmodは、validate の calls: 行を見てから入れる。$.process.run・$.http.fetch・$.fs.write があるものは、コードを読める人に確認してもらう
- 複数人で使う事務所は、管理設定で allowManagedModsOnly を有効にし、所内で確認したmodだけを配る
- 伏字のmodは補助に留め、マイナンバーなどの原本は作業フォルダに置かない
Claude Code全体のセキュリティ設定はClaude Codeの必須セキュリティ設定8選、Claude Codeそのものの基本はClaude Codeとは(入門ガイド)にまとめています。
まとめ
この記事のまとめ
- Claude Code Modsは、Claude Codeの中で動くJS/TSの関数で、ツール呼び出し・プロンプト・画面表示に割り込める拡張です。2026年10月1日発表、CLIはv2.1.287以降で既定で有効です。
- hooks・skills・MCPとの最大の違いは画面を描けることと、イベントを書き換えたり代わりに答えたりできることです。/diff など一部の既存機能もmodで作られています。
- 作り方は「Claudeに頼む」か「3ファイルを書く」の2通りで、claude plugin validate と claude plugin test で中身の確認とテストができます。
- 当研究所の実測では、ツールの結果を伏字にするmodで集計は正しくできましたが、編集ではターンが6から8に増え、Claudeの調査コマンド(od -c)で生の値が1回すり抜けました。
- 画面の描画で隠すmodは見た目だけで、モデルには生データが渡ります。本当に渡したくないデータは、作業用コピーから削るか deny ルールで読めなくします。
- modはサンドボックス化されていません。入れる前に validate の calls: 行を確認し、組織では allowManagedModsOnly で会社が配ったmodだけに絞れます。
記事で紹介した設定を、自社の業務に合わせて組み上げる。
CLAUDE.mdによるプロジェクト規約の設定から、業務に合わせたオリジナルskillsの作成まで、一社ごとにヒアリングした業務を題材に対面で進めます。受講者限定のオリジナルskillsとプロンプトテンプレート集もお渡しします。
- 一社ごとに業務をヒアリングして設計
- 実際の業務データでハンズオン
- スパルタ以上は全額返金保証
- 受講法人数100社超
オンライン30分・無料。フォームは入力1分で、2営業日以内にご連絡します。
よくある質問
Claude Codeのプラグインとmodsは何が違いますか?
modはプラグインの一種です。プラグインはskills・コマンド・サブエージェント・MCPサーバー・settings hooksなどをまとめて配布する仕組みで、そのうち hooks/hooks.json に modules を書き、JavaScript・TypeScriptの関数を読み込ませたものがmodです。インストール・更新・マーケットプレイスでの配布は通常のプラグインと同じで、CLIはv2.1.287以降で既定で有効です。
Claude Code Modsと従来のhooks(settings hooks)はどう使い分けますか?
手持ちのシェルスクリプトでツールの実行を許可・拒否・記録するだけなら、settings hooksで十分です。画面に帯やパネルを出したい、ツールの結果を書き換えたい、独自の /コマンドを足したい、セッションのトークン使用量を読みたい場合はmodを選びます。settings hooksは廃止されず、modsと同じセッションで併用できます。
プログラミングができなくてもClaude Codeのmodは作れますか?
作れます。セッションで「作業中のフォルダ名を入力欄の上に表示するmodを作って」のように頼むと、組み込みのplugin-authoringスキルを使ってClaudeが書き、承認するとそのセッションで読み込まれます。ただしClaudeが書いたmodは作ったセッション専用で、cleanupPeriodDays(既定30日)を過ぎると削除されるため、残すなら別のフォルダにコピーして claude --plugin-dir で読み込みます。
modが原因でClaude Codeの動きがおかしいときは、どう止めればよいですか?
/plugin の Installed タブで該当のプラグインを無効にするか、claude --safe-mode で起動すると、自分で入れたmodをまとめて止められます。常に止めたい場合は ~/.claude/settings.json に "disableAllHooks": true を書きます(自作のsettings hooksやステータスラインも止まります)。/diff などの組み込みmodはこれらでは止まらないため、/plugin から個別に無効にします。
会社で社員が勝手にClaude Codeのmodを入れないようにできますか?
できます。管理設定(managed settings)の pluginConfigs で cc-plugin-sec-default@builtin の allowManagedModsOnly を true にすると、社員が入れたmod、--plugin-dir で読み込んだmod、セッション中にClaudeが書いたmodは読み込まれず、会社が配ったmodと組み込みmodだけが動きます。この設定はユーザー側の設定ファイルでは解除できません。
Claude CodeのmodはVS Code拡張でも使えますか?
処理は動きますが、画面には何も描かれません。公式ドキュメントでは、modの帯やパネルが表示されるのはターミナルのCLIとデスクトップアプリのCodeタブで、VS Code拡張のチャット欄・claude -p・Agent SDKでは、ツール呼び出しの書き換えなどの処理だけが動きます。デスクトップアプリのWSLセッションでは、プラグイン自体が使えません。
参考資料・出典
- 公式ブログ・記事Customize Claude Code with Mods in TypeScript
Modsの発表。定義、できること(ツール出力の秘密情報を伏せる等)、組み込み機能のmod化、組織向けのsec-default
- スレッドYou can now mod Claude Code
Modsの告知ポスト。表示430万・いいね2万・ブックマーク1.3万(2026年10月6日時点)
- スレッドMods are absolutely insane
Claude Code責任者の反応。表示86.7万(2026年10月6日時点)
- 公式ドキュメントMods overview
hooks・skills・MCPとの比較表、modが届く範囲とサンドボックスなし、動作環境、組み込みmod、対応バージョン(確認日)
- 公式ドキュメントCreate a mod
Claudeに頼む手順と保存先・削除時期、3ファイルの構成、claude plugin validate / test(確認日)
- 公式ドキュメントReact to events with a mod
見る・書き換える・代わりに答えるの3パターン、.catchによる失敗時の扱い、プロンプトキャッシュへの影響(確認日)
- 公式ドキュメントManage mods for your organization
sec-defaultの既定動作、allowManagedModsOnly・disableSideloadFlags、validateのcalls行で見るべき操作(確認日)
- 公式ブログ・記事Getting started with Claude Code mods
公式サンプルtoken-weatherの作り方と天気による使用率の表示
- GitHubClaude Code v2.1.287 release notes
「Added Claude Mods」と組み込みmod「You should know」の追加
- 動画Mods in Claude Code: change how Claude Code works
ミドルウェアのたとえ(1:05)、描画のmodは画面だけを変えモデルは元の値を見る(2:57)、サンドボックスに関する発言(3:02)
- ポッドキャストThe Future of Claude Code: Mods, Mutable Software, & Multiplayer Agents — Thariq Shihipar, Anthropic
社内での旧称function hooks(41:35)、hooksではUIを変えられなかった(42:21)、振り分けmodとプロンプトキャッシュ(37:45〜)
- GitHubclaude-code-playground: claude-code/mods
公式サンプルtoken-weather・blast-radius・replay-theater。validateの結果を当研究所で取得(確認日)
- GitHubclaude-plugins-community: next-steps
次の指示の候補を出すmod。自動送信しないこと、forkでキャッシュを共有する費用の説明(確認日)
- 動画Claude Code Mods Are Game Changers. Set Up These 5 NOW.
Collision Guard(直近30分に触られたファイルの編集前確認)などの作例。再生数は2026年10月6日時点
- 動画Claude Mods Is The Biggest Claude Code Upgrade Since Skills
過去30セッションを読ませて作るべきmodを提案させる方法、キャッシュを表示するmod。再生数は2026年10月6日時点
Claude Codeを実務で活用したい方へ
一社ごとにカスタマイズする対面のClaude Code研修は「スパルタClaude Code塾」。経営者・士業・エンジニア・マーケター・営業職まで、業務をヒアリングしてカリキュラムを設計します。まずは30分の無料相談で、自動化プランと費用対効果をご確認ください。

