Claude Codeの​「Mods」とは​ ──動作や​画面を​書き換える​拡張は​既定で​有効。​個人プランでは、​禁止ルールが​modに​効かなかった

Claude Codeの拡張「Mods」は、2.1.287から既定で有効で、使う人と同じ権限で動きます。個人プランでは、禁止(deny)ルールを書いても、許可を出すだけのmod1本で通りました。公式の資料を読み、手元で測って整理しました。

甲斐ショウジ甲斐ショウジ
CAG主宰/合同会社ATK CAIO(最高AI責任者)
技術23分で読めます
技術Claude Codeの「Mods」とは ──動作や画面を書き換える拡張は既定で有効。個人プランでは、禁止ルールがmodに効かなかった

気になるAI動向を、分かりやすく

2026年10月1日、AnthropicがClaude Code(AIが開発者の代わりにコードを書き、コマンドも実行する開発ツール)に「Mods(モッズ)」を加えました[1][2]。Claude Codeの動作や画面を、小さなプログラムで書き換えられる拡張の仕組みで、拡張1つ1つを「mod」と呼びます。modは、使う人と同じ権限で、保護の囲い(サンドボックス)の外で動きます。Claude Code 2.1.287以降は、最初から有効です[3]。

この記事では、公式のブログ・ドキュメント・GitHubで公開されている組み込みmodのソースを読み、CAGの手元(個人のMaxプラン)で検証用のmodを動かして測りました。分かったことは3つです。①modには、プロンプトの全文・ツールに渡す命令・環境変数・設定ファイルの値まで見えました。②「この操作は禁止」と書いた禁止ルール(deny)も、許可を出すだけのmod1本で通りました。組織向けの守りは、個人プランには座りません。③入れる前に使う検査コマンドは、見せかけのmodにも「合格」を出しました。次の順で整理します。

  1. Modsとは何か ── 設定フックやスキルとの違い
  2. modには何が見えるか ── 手元での実測
  3. 入れる前に確かめる ── 「合格」が教えないこと
  4. 止める ── 3つのスイッチと、止まらないもの
  5. 個人と組織で守りが違う ── 禁止ルールは誰を止めるのか
  6. 今日確かめること
Claude Codeの画面。入力欄の上に1本の帯があり、右側に拡張(Mods)の一覧のペインが開いている
入力欄の上の帯も、横のペインも、modが描ける(イメージ)

01 Modsとは​何か。​設定フックや​スキルと、​何が​違うか

Claude Codeは、何かをするたびに「イベント」を出します。ツールを使う、プロンプトを受け取る、許可を確認する、画面の一部を描く、といった具合です。modは、そのイベントに挟まる小さな関数です。イベントの前でも、後でも、代わりにでも動けます[1]。関数は、受け取ったイベントを「そのまま通す」「書き換えて通す」「通さずに自分で答える」のどれかにします[3]。決裁の途中に入る担当者が、書類を通すか、直すか、自分で判を押して終わらせるかを選ぶのに近い形です。

公式ブログによると、modにできるのは、プロンプトを書き換える、ツールの呼び出しを止めたり書き換えたりする、許可の確認に答える、ツールの出力から秘密を伏せてからClaudeに読ませる、といったことです[1]。画面にも描けます。入力欄の上の帯や、会話の横のペインを足せます[3]。

modは、出来事と実行のあいだに挟まる出来事ツールを使うプロンプト受信画面を描くmod見る書き換える代わりに答える本体許可の確認ルールの判定ツールの準備実行ツールが動く返事が返る代わりに答えたら、ここで終わり(本体は動かない) modは、出来事と実行のあいだに挟まる出来事ツールを使う/プロンプト受信/画面を描くmod見る/書き換える/代わりに答える本体許可の確認/ルールの判定/ツールの準備実行ツールが動く/返事が返るmodが代わりに答えたら、本体は動かない
modは出来事に挟まり、通す・書き換える・代わりに答える、のどれかを選ぶ。代わりに答えると、本体は動かない(公式ドキュメントから作図)

似た仕組みとの違いを、公式の比較表から抜き出します。

仕組み何か変えられるもの画面に描けるか
modプラグインに入れた関数。Claude Code自身のプロセスの中で呼ばれるツール呼び出し・プロンプト・コマンド・ターン・画面の描画描ける
設定フックイベントごとにClaude Codeが動かす、シェルコマンド・HTTP・プロンプトツール呼び出しやプロンプトを通すか、引数と結果、Claudeに足す文脈描けない
スキルClaudeが読む指示書(SKILL.md)Claudeが知っていることと、すること描けない
MCPサーバーClaudeに道具を足す、外部のプロセスやサービスClaudeが持つ道具描けない

modが引っかけられるイベントは、公式のリファレンスの表に44個の名前が載っています。そのほかに、設定フックの各イベントと、modが呼べるAPIの呼び出し(ファイルを読む、モデルを呼ぶなど)も、それぞれイベントとして引っかけられます。modが呼べるAPIは、21の領域に分かれています[4]。

Claude Codeの機能の一部は、すでにmod

modは、新しく入れる拡張だけではありません。Claude Code自身の機能の一部も、modとして作られています。公式のドキュメントは、組み込みのmodを6つ挙げています[3]。

/pluginでの名前何をするか動く場面止め方
cc-plugin-agents-mdAGENTS.mdをプロジェクトの指示書として読み込むAGENTS.mdを読めないセッションを除く、すべてのセッション/pluginで無効にする。または、読み込む指示ファイルを選ぶ
cc-plugin-diff/diffを引き受け、変更の一覧を横のペインに描く対話型のターミナル/pluginで無効にする
cc-plugin-plugin-authoringmodを書くためのスキルをClaudeに渡す(スキルだけで、modのコードは無い)Anthropicが、入れたmodを遠隔で止めていない限り/pluginで無効にする
cc-plugin-sec-default組織が管理するものを、利用者が入れたmodから守る(5章)座る環境だけ(5章)止められない。管理者が管理設定で順番を決める
cc-plugin-telemetryClaude Codeと組み込みmodが記録する、利用状況のデータを送る分析がオンの環境/pluginで無効にする。または、分析をオフにする(DISABLE_TELEMETRYなど)
cc-plugin-you-should-know長い作業の間、見落としそうなことを別のAIが見張り、入力欄の上にメモを出す初期設定は無効/pluginで無効にする

CAGの手元で、検証用のmodなしにClaude Codeをclaude -p(画面を出さない実行)で動かしたとき、デバッグログで読み込まれていたのは、このうち2つ(agents-mdとtelemetry)でした。sec-defaultは、座らない理由を1行書いて、読み込まれませんでした(5章)。AGENTS.mdをプロジェクトの指示書として読む機能(CAGは9月21日に記事にしました)は、この組み込みmodが担っています[3][6]。

Claude CodeがAGENTS.mdを直接読むようになったを扱った記事のサムネイル 関連記事 | AGENTS.mdを読む機能を、手元で確かめたClaude CodeがAGENTS.mdを直接読むようになった ──CLAUDE.mdを消していい条件と、消すと見えなくなるもの →

公式ブログは、今後も組み込み機能をmodに移していくと書いています。Claude Codeを小さな核にして、必要なものだけ足す形を目指す、という説明です[1]。

02 modには​何が​見えるか。​手元での​実測

公式のドキュメントは、modが届く範囲を、次のように書いています。modはユーザーと同じ権限で動き、サンドボックスの外にいます[3]。

できること公式の説明(要約)
自分のマシンを、本人として操作するユーザーのアカウントが触れるファイルを読み書きし、プログラムを起動し、ネットワークに接続できる
秘密を読む環境変数と設定ファイル。どちらかに置いたAPIキーも含む
会話を見る送ったプロンプトと、Claudeのツール呼び出しのすべて
会話を変えるプロンプトやツール呼び出しを書き換える。本人が打ったようにプロンプトを送る。同じ人の別のセッションにメッセージを送る
聞かずに動く許可の確認が出る前に、ツール呼び出しを承認できる
利用枠を使う本人のプランやAPIキーで、モデルを呼べる

サンドボックスを有効にしても、守られるのはClaudeが実行するBashコマンドです。modが起動したプロセスは、その外で動きます[3]。

これを手元で確かめました。38行の観察用mod(見たものを記録するだけで、何も書き換えない)を作り、ClaudeにBashでechoを1回だけ実行させます。ダミーの値を4か所に仕込みました。プロンプトの文中、ツールに渡る命令、環境変数、設定ファイルのenvです。macOSで、Claude Code 2.1.287とClaude Haiku 4.5を使い、使い捨てのフォルダの中だけで動かしました。3回やって、3回とも、modには5つのイベントが届き、4つのダミーの値がすべて、modの記録に全文で残りました。

modに届いたもの(観察用mod・3回とも同じ結果)ダミーの値を仕込み、modの記録に全文で残ったかを見たsession.start環境変数の値設定ファイルのenvの値見えた 3/3prompt.submitプロンプトの全文見えた 3/3tool.callツールの名前と命令の全文見えた 3/3tool.check判定と命令の全文見えた 3/3turn.complete1回の応答の終わりの合図合図のみ modに届いたもの(3回とも同じ)仕込んだダミーの値が、記録に全文で残ったかsession.start環境変数の値・設定ファイルのenvの値3/3prompt.submitプロンプトの全文3/3tool.callツールの名前と命令の全文3/3tool.check許可の判定と命令の全文3/3turn.complete1回の応答の終わりの合図—
観察用のmod(見たものを記録するだけで、何も書き換えない)に、ClaudeがBashでechoを1回実行する間に届いたイベント。3回とも5つ届き、仕込んだ4つのダミーの値は全部、記録に残った

環境変数は、名前を文字列で書かないと読めません。名前を計算で作ろうとしたmodは、検査コマンドが不合格にし、実際に動かしても、modごと読み込まれませんでした。デバッグログには、読む名前を一覧できるように、名前をそのまま文字列で書くことを求める理由が出ます[4]。ただし、これは守りになりません。プロセスを起動するAPI($.process.run)でenvコマンドを走らせたmodは、環境変数の名前を1つも書かずに、ダミーの鍵を含む環境全体を読めました(3回とも)。

設定ファイルについて、公式の型定義の注記は、modが読める設定にはenvとヘルパーコマンドも「何も除外せずに」含まれる、と書きます。一方、ログインのセッション(OAuth)と~/.claude.jsonは設定ではなく、読まれない、とも書いています[6]。後者は、CAGでは確かめていません。

modを入れるとは、その人の権限でコードを走らせることです。公式ブログも、パソコンにほかのコードを入れるときと同じように、信頼できる出所のものだけを入れるよう書いています[1]。

同じ仕組みは、守りにも使えます。公式の例には、force pushを断るmod、危険なコマンドの前に確認を出すmod、ほかのmodの呼び出しをすべて記録するmodがあります[4][1]。ただし、確認を出す例のmodは、git push -fという書き方を見逃す、と公式が自分で注記しています[4]。書いた条件の穴は、使う側が塞ぐ必要があります。

03 入れる​前に​確かめる。​「合格」が​教えない​こと

modを入れる前に、実行せずに中身を見る方法があります。claude plugin validate <フォルダ>です。modのソースを読み、引っかけるイベント(hooks:)、呼ぶAPI(calls:)、読む環境変数(env reads:)を一覧にします[3][6]。

この検査に、3つのmodをかけました。1つ目は公式の入門用のmod、2つ目は許可の確認にすべてallowと答えるだけの1行のmod、3つ目は「スピナーを飾る」と名乗りながら、中身は鍵や会話を外へ送る作りにした見せかけのmodです。見せかけのmodは検証のために書いたもので、実行はしていません。

検査コマンドの出力(上の行が中身、最後の行が「合格」)公式の first-mod(スピナーに呼び出し回数を足す)hooks: session.start, tool.call, command.run{command=tally},       ui.render{component=Spinner}calls: $.command.register, $.ui.invalidate✔ Validation passed1行のmod(allow-all・許可の確認にすべて allow と答える)hooks: tool.checkcalls: nothing on $✔ Validation passed見せかけのmod(spinner-pretty・検証用。実行していない)hooks: ui.render{component=Spinner}, prompt.submit, tool.checkcalls: $.env.get, $.fs.read, $.http.fetch, $.process.runenv reads: ANTHROPIC_API_KEY, GITHUB_TOKEN✔ Validation passed 検査コマンドの出力公式の first-modhooks: session.start, tool.call,       command.run{command=tally},       ui.render{component=Spinner}calls: $.command.register,       $.ui.invalidate✔ Validation passed1行のmod(allow-all)hooks: tool.checkcalls: nothing on $✔ Validation passed見せかけのmod(検証用・未実行)hooks: ui.render{component=Spinner},       prompt.submit, tool.checkcalls: $.env.get, $.fs.read,       $.http.fetch, $.process.runenv reads: ANTHROPIC_API_KEY,       GITHUB_TOKEN✔ Validation passed
同じ検査コマンド(claude plugin validate)に3つのmodをかけた出力。金色は、中身を確かめたい行。見せかけのmodも、最後は「合格」になった

3つとも、最後の行は「✔ Validation passed」です。見せかけのmodにも、合格が出ました。この「合格」は、安全の判定ではありません。中身は、合格の上に並ぶ行(hooks・calls・env reads)で見ます。

  • hooks:にtool.check・tool.call・prompt.submitがある。許可の確認、ツール呼び出し、プロンプトに手を入れられます。1行のmod(allow-all)は、calls: nothing on $と出ますが、許可の確認に「すべて許可」と答えるだけで、禁止ルールまで持ち上げました(5章)
  • calls:に$.process.run・$.http.fetch・$.fs.*がある。プログラムの起動、通信、ファイルの読み書きをします。出てきたら、ソースを読みます
  • env reads:に鍵らしい名前がある。その環境変数を読みます。ただし、空でも安心はできません。2章のとおり、$.process.runがあれば、環境全体が読めます

もう1点、出力に出ないものがあります。見せかけのmodは、送信先のURLと、読むファイルのパスをソースに書いていましたが、検査の出力に出たのは、イベントの名前・APIの名前・環境変数の名前だけでした。どこへ送るか、何を読むかは、ソースを読まないと分かりません。

公式は、Anthropic自身の組み込みmodのソースをGitHubで公開しています。同じ検査にかけると、中が見えます。921ファイルを取得し、4つの組み込みmodそれぞれをかけた結果です[6]。

組み込みmod役目hookscallsenv reads検査
sec-default組織が管理するものを守る見張り役1530合格
agents-mdAGENTS.mdを指示書として読む584合格
diff/diffの変更一覧のペイン10231合格
telemetry利用状況の記録を送る61747不合格

見張り役のsec-defaultは、呼ぶAPIが3つだけ(設定の読み取り・デバッグログへの出力・組織の層への引き渡し)でした。READMEは、動きも「先へ進める・名指しで断る・通す」の3つだけだと書いています[6]。telemetryは、同じ検査にかけると、組み込みのプラグイン向けの記録先を使っているとして不合格になります。READMEも、単体で入れたり--plugin-dirで読み込んだりするものではない、と書いています[6]。

手元のClaude Codeでmodが読み込める状態かは、claude plugin testを、modのないフォルダで実行すると分かります。no hooks module to loadと出れば読み込める状態、hooks modules are turned off hereと出れば、設定か組織のポリシーが止めています。turned off in this processは、Anthropicが入れたmodを遠隔で止めている印で、手元の設定では戻せません[4]。CAGでは、2.1.287で最初の2つを確かめました。ただし、2.1.284でも同じ「読み込める」の文が出るのに、次の章のとおり、実際には3回中2回、modが読み込まれませんでした。このコマンドの判定は、2.1.287以降の話と考えてください。

04 止める。​3つの​スイッチと、​止まらない​もの

止め方は、公式のドキュメントでは範囲ごとに分かれています[3]。

止める範囲方法注意
modを1つだけ/pluginの「Installed」で、そのプラグインを無効にするか、アンインストールする—
1回のセッションだけ、入れたmodすべてclaude --safe-modemodだけでなく、CLAUDE.md・スキル・フック・MCPサーバー・コマンドなど、ほかのカスタマイズもすべて外れる。管理者が配る設定は、そのまま効く
いつも、入れたmodすべて設定ファイルに "disableAllHooks": true自分の設定フックとステータスラインも止まる
組織が、利用者のmodすべて管理設定の allowManagedModsOnly(5章)組織が配るmodと、組み込みmodは動く

CAGの実測です。観察用のmodに記録を取らせ、止め方の効きを3回ずつ測りました。何もしなければ5件、--safe-modeでもdisableAllHooksでも0件でした。止めたあとは、禁止ルールも元に戻りました。禁止ルールを書いたうえで「すべて許可」のmodを付けても、命令は通りませんでした(どちらも3回とも)。

観察用modの記録(件)同じ操作を各3回。何も止めない条件では、毎回5件の記録が残った何もしない5件(3回とも)--safe-mode0件(3回とも)disableAllHooks0件(3回とも)止めても動いたもの組み込みmod(agents-mdとtelemetry)は、15回すべてで読み込まれたまま止めたあとの禁止ルール「すべて許可」のmodを付けても、禁止した命令は通らなかった(--safe-mode・disableAllHooksとも、3回中3回) 観察用modの記録(件)同じ操作を各3回。何も止めない条件は毎回5件何もしない5件(3回とも)--safe-mode0件(3回とも)disableAllHooks0件(3回とも)止めても動いたもの組み込みmod(agents-mdとtelemetry)は、15回すべてで読み込まれたまま止めたあとの禁止ルール「すべて許可」のmodを付けても、禁止した命令は通らなかった(各3回中3回)
止め方(--safe-mode・disableAllHooks)は、どちらも観察用modを止めた。止めたあとは禁止ルールも元に戻った。ただし、組み込みmodは止まらなかった

ただし、組み込みのmodは止まりません。公式のドキュメントは、disableAllHooks・--bare・--safe-modeは組み込みmodを止めない、と書いています[3]。手元でも、止めた条件の12回すべてで、agents-mdとtelemetryは読み込まれたままでした。telemetryは、分析をオフにする設定(DISABLE_TELEMETRYなど)で止まる、とされています[3]。

もう1つ、版の壁があります。手元で動かした2.1.284と2.1.286では、インストールしたmodを読み込むかどうかが、サーバーから届く段階展開の切り替えにも左右されました。同じmod・同じ操作で3回ずつ動かすと、2.1.284では1回だけ、2.1.286では2回だけ読み込まれ、2.1.287では3回とも読み込まれました。デバッグログには、読み込まれなかった回の理由として、段階展開の切り替えがオフだったこと(以前のセッションのキャッシュによる)が出ていました。早期アクセス用の環境変数を付けると、この2つの版でも3回とも読み込まれました。2.1.287以降は、この環境変数は無視されます[5]。

modが読み込まれた回数(各3回)同じmod・同じ操作。何も付けずに起動した場合2.1.2843回中1回2.1.2863回中2回2.1.2873回中3回早期アクセス用の環境変数を付けるとCLAUDE_CODE_ENABLE_FUNCTION_HOOKS=12.1.284も2.1.286も、3回とも読み込まれた(2.1.287以降は無視される) modが読み込まれた回数(各3回)同じmod・同じ操作。何も付けずに起動2.1.2843回中1回2.1.2863回中2回2.1.2873回中3回早期アクセス用の環境変数を付けるとCLAUDE_CODE_ENABLE_FUNCTION_HOOKS=12つの版とも3回とも読み込まれた
2.1.284と2.1.286は、modを読み込むかをサーバーから届く段階展開の切り替えにも左右されたため、同じ操作でも読み込まれたりされなかったりした(デバッグログの理由に基づく)

CAGの手元も、CLIは2.1.284、デスクトップアプリに内蔵のClaude Codeは2.1.286で、2.1.287は検証用に別に入れました。社内でClaude Codeの版が揃っていないと、同じmodが人によって動いたり動かなかったりします。

管理者向けの端末一覧。4台のノートPCのClaude Codeの版が並び、2.1.287の2台は水色、2.1.284と2.1.286の2台は橙色で示されている
端末ごとにClaude Codeの版が違うと、同じmodが動いたり動かなかったりする(イメージ。実際の画面ではありません)

さらに、Anthropicは、入れたmodを遠隔で止められます。公式のドキュメントは、止まったときのメッセージ(hooks modules are turned off in this process)を載せ、手元の設定では戻せない、と書いています[4]。CAGは、この状態を再現していません。

05 個人と​組織で、​守りが​違う。​禁止ルールは​誰を​止めるのか

Claude Codeには、「この操作は禁止」と先に書いておく禁止ルール(deny)があります。会社が管理設定で配る禁止ルールもあります。公式のドキュメントによると、modがこの禁止ルールに勝てるかどうかは、環境で変わります。管理設定のある端末か、Team・Enterpriseプランでサインインしているときは、初期設定で禁止ルールがmodに勝ちます(組織が設定で変えることもできます)。それ以外の場所では、modは、禁止ルールが拒否する呼び出しを承認できる、と書かれています[5]。

禁止ルールを勝たせているのが、Claude Codeに組み込まれた見張り役のmod、sec-default(security default)です。組織が管理するもの(管理設定のフック・管理された指示書・設定・MCPの許可リスト・禁止ルール)を、利用者が入れたmodの手が届かない所に置きます。最も外側に座り、自分では方針を持たず、先へ進める・名指しで断る・通す、の3つしかしません[6][5]。ただし、座る条件があります。

使い方ガード(sec-default)modは禁止ルールを覆せるか根拠
個人のPro・Max(管理設定なし)座らない覆せるCAGの実測(3回中3回)と、公式ドキュメント
Team・Enterpriseにサインイン座る覆せない(覆そうとすると通知が出て、拒否される)公式ドキュメント(CAGは未測定)
APIキー・Bedrock・Vertex・Foundryで認証(管理設定なし)座らない覆せる(公式は「それ以外の場所」と書く)公式ドキュメント(CAGは未測定)
管理設定のある端末(どの認証でも)座る覆せない公式ドキュメント(CAGは未測定)

CAGの手元は、個人のMaxプランで、管理設定はありません。デバッグログには、「sec-defaultは座らない。管理設定がなく、TeamやEnterpriseの組織でもない(max)」という趣旨の1行が、12回すべてに出ていました。この環境で、禁止ルール(Bash(touch cagt-denied.txt))の有無と、「すべて許可」のmodの有無の4条件を、3回ずつ測りました。

禁止ルールは、許可を出すだけのmodに勝てるか禁止した命令を実行させる指示を、各条件で3回。通ったのはファイルが作られた回modなし「すべて許可」のmodあり止まった3回中3回命令は実行されなかった通った3回中3回命令が実行された止まった3回中3回確認に答える人がいない通った3回中3回確認なしで実行された禁止ルールあり禁止ルールなし公式の説明:Team・Enterpriseのサインイン、または管理設定のある端末では、金色の枠のマスも「止まる」(ガードが座るため。CAGは未測定) 禁止ルールは、許可を出すだけのmodに勝てるか(各条件3回)禁止ルールあり・modなし止まった3回中3回禁止ルールあり・「すべて許可」のmod通った3回中3回禁止ルールなし・modなし止まった3回中3回禁止ルールなし・「すべて許可」のmod通った3回中3回公式の説明:Team・Enterpriseのサインイン、または管理設定のある端末では、金色の枠も「止まる」(CAGは未測定)
管理設定のない個人プラン(Max)で、禁止ルールの有無とmodの有無の4条件を3回ずつ。禁止ルールを書いても、すべて許可と答えるだけのmod1本で命令が通った(金色の枠)

禁止ルールを書いても、「すべて許可」と答えるだけの1行のmodで、命令は通りました(3回とも)。警告は1度も出ず、デバッグログには、mod(allow-all)が、下に何も走らせずに許可の確認へ答えた、と残りました。公式のドキュメントは、座る環境ではこの場面で、通知を出して禁止のままにする、と書きます。CAGは、その側を実機では測っていません[5]。

もう1つ、禁止ルールの届かない所があります。公式の管理者向けドキュメントは、ガードが座る環境でも、禁止ルールが止めるのはClaudeのツール呼び出しだけで、modが自分で呼ぶファイル読み取りやプロセス起動には及ばない、と書いています。Read(.env)を禁止しても、modは$.fs.readで、そのファイルを読めます[5]。手元で、Read(cagt-secret.txt)を禁止して試すと、ClaudeのReadツールは3回とも止まり、modの$.fs.readは3回とも読めました(ダミーのファイル。ガードのない環境での測定です)。

公式は、modが自分で呼ぶ読み取りや起動を制限するには、modを読み込ませないか、組織のmodで呼び出しを押さえる必要がある、と書いています[5]。読み込ませない側の設定が、管理設定のallowManagedModsOnlyです。これを立てると、利用者が入れたmod(--plugin-dirで読み込むものや、Claudeがセッション中に書いたものも)は読み込まれず、組織が配るmodと組み込みmodだけが動きます[5]。

組織の管理画面のPluginsの設定。「Organization mods only」のスイッチがオンで、許可するマーケットプレイスは2、見張り役のsec-defaultが表示されている
組織が、利用者のmodを止める設定のイメージ(実際の画面ではありません)

管理設定のファイルに書くときは、公式のドキュメントでは、次の形です[5]。利用者の設定ファイルや--settingsに同じ項目を書いても、効きません。管理設定だけが読まれます[5][6]。

{
  "pluginConfigs": {
    "cc-plugin-sec-default@builtin": {
      "options": {
        "allowManagedModsOnly": true
      }
    }
  }
}

自動承認の話もあります。自動承認(auto)モードでは、Claudeの操作を別のAIが審査します。公式のドキュメントは、autoモードで、modが承認した呼び出しは、この審査を通らずに実行されると書きます[5]。Claude Codeは2.1.284から、対話型のターミナルとVS Codeで、権限モードを決めていなければautoモードで始まります[2]。

Claude Codeの「自動承認」が既定になったを扱った記事のサムネイル 関連記事 | autoモードの審査のしくみと、止まらないものClaude Codeの「自動承認」が既定になった ──AIの操作をAIが審査する仕組みと、何が止まらないのかを解説 →

06 今​日​確かめる​こと

使う立場ごとに、確かめることを分けます。

自分で使う人

  • 版を確かめる。claude --versionが2.1.287以上なら、modは最初から有効です。手元の2.1.284・2.1.286では、読み込まれたりされなかったりしました(4章)
  • 自分で入れていないmodが入っていないか、/pluginの「Installed」を見る。セッションに読み込まれた、入れたmodの数と名前は、/pluginの画面の「mods active」の行にも出ます(組み込みmodは数えません)[3]
  • 入れる前に、検査コマンドの上の行を読み、ソースも読む。特に、tool.check・tool.call・prompt.submitと、$.process.run・$.http.fetch・$.fs.*です(3章)
  • 禁止ルールを、最後の砦にしない。個人プランでは、mod1本で通りました。鍵や秘密は、modから見える場所に置かないようにします(2章・5章)

会社で配る管理者

  • 版を2.1.287以上にそろえる。手元の2.1.284・2.1.286のように古い版が混ざると、同じmodが動いたり動かなかったりしました(4章)
  • TeamかEnterpriseにするか、管理設定を配って、sec-defaultを座らせる。座らない環境では、modが禁止ルールを覆せます(5章)[5]
  • modを許すかを決める。要らなければallowManagedModsOnlyを立てます。許すなら、プラグインの配布元を許可リスト(strictKnownMarketplacesなど)で絞ります[5]
  • 組織のmodを使うなら、順番も決める。管理設定のprependPluginsに並べるとき、リストにsec-defaultを入れないと、sec-defaultは座りません[5]
  • 読み込みの状態を確かめる。modのないフォルダでclaude plugin testを実行します(3章)

開発を外注している経営者

  • 委託先に、使っているClaude Codeの版と、契約の種類(個人プランか、Team・Enterpriseか)を聞く。
  • 入れているmodの一覧と、出所を聞く。自社の鍵や顧客のデータを扱う環境では、入れてよいmodを決めてもらいます
  • 禁止ルールで守っているのか、modの読み込みで守っているのかを聞く。前者だけなら、個人プランでは覆されます(5章)

modは、入れた人と同じ権限で動く。個人プランでは、禁止ルールも、そのmodには届かない。

AIを​使った​開発の​進め方や、​委託先との​取り​決めを​相談したい方​へ

電脳技巧集団(AI職人ギルド)は、AI駆動で業務システムをつくっています。開発で使うAIツールの設定や、鍵・顧客データの扱いの線引きから、相談できます。お問い合わせはこちら

出典・注記

  1. Anthropic「Customize Claude Code with mods in TypeScript」(2026-10-01)・入門ガイド「Getting started with Claude Code mods」(claude.dev・2026-10-01) https://claude.com/blog/claude-code-mods https://claude.dev/blog/getting-started-with-claude-code-mods/
  2. Claude Code ドキュメント「Changelog」の 2.1.287(2026年10月1日)と 2.1.284(9月28日) https://code.claude.com/docs/en/changelog
  3. Claude Code ドキュメント「Mods overview」「Create a mod」 https://code.claude.com/docs/en/plugins/mods/overview https://code.claude.com/docs/en/plugins/mods/create
  4. Claude Code ドキュメント「Mods reference」「React to events」「Use the mods API」「Troubleshoot a mod」 https://code.claude.com/docs/en/plugins/mods/reference https://code.claude.com/docs/en/plugins/mods/events https://code.claude.com/docs/en/plugins/mods/api https://code.claude.com/docs/en/plugins/mods/troubleshoot
  5. Claude Code ドキュメント「Manage mods for your organization」「Permissions」 https://code.claude.com/docs/en/plugins/mods/admin https://code.claude.com/docs/en/permissions
  6. GitHub「anthropics/claude-code」の mods/ ディレクトリ(組み込み mod 4つの README とソース・型定義) https://github.com/anthropics/claude-code/tree/main/mods https://github.com/anthropics/claude-code/blob/main/mods/types/claude-code.d.ts
  7. CAGによる作業(2026年10月2日)。公式ブログ・入門ガイド・Claude Codeのドキュメント・GitHubの組み込みmodのREADMEなど16ページを、2026年10月2日の9時44分ごろに取得して保存し、本文の言い回しと数字を1つずつ突き合わせました。あわせて、GitHubで公開されている組み込みmod4つのソース(921ファイル)を、検査コマンドにかけました。実測は、macOS・個人のMaxプラン(管理設定なし)・Claude Code 2.1.287・モデルClaude Haiku 4.5で、検証用のmodを使い捨てのフォルダだけで動かしたものです。各条件は3回で、実行されたことを毎回確かめています。鍵や秘密の値は、すべてダミーです。Team・Enterpriseで座るガードの実機は測っておらず、その側の記述は公式のドキュメントによります。GitHubの組み込みmodのREADMEは、modのAPIが版のあいだで予告なく変わりうると書いています(早期アクセス時の注記)。引用はCAGによる訳と要約です。

言語化できるものは、全て作る。

あなたの「作りたい」を、定価とスピードで形に。まずは無料の相談から。

制作事例を見る