「untrusted source」エラーの対処 — Claude Codeのマーケットプレイス信頼設定
「Marketplace is registered from an untrusted source」の意味と対処。予約名の一覧、似た名前の別エラーの見分け方、v2.1.287での再現出力をまとめます。
Marketplace "<name>" is registered from an untrusted source — Claude Codeでプラグインマーケットプレイスを読み込もうとしてこう出たら、そのマーケットプレイス名がAnthropic専用に予約されているのに、登録元がgithub.com/anthropics/配下のリポジトリではないという意味です。マーケットプレイスと、そこから入れたプラグインの読み込みが止まります。原因は名前の衝突で、中身の改ざんを検知したわけではありません。
「untrusted source」エラーの意味
Claude Codeは、予約名と登録元の組み合わせを、マーケットプレイスを読み込むたび、更新するたびに毎回チェックします。v2.1.205より前は、予約される前に登録された名前はそのまま読み込まれ続けていました。v2.1.205以降は再チェックされるため、何も操作していないのに、ある日から突然このエラーが出ることがあります。
エラー文の実物は次のとおりです。
Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.登録元がGitHubリポジトリでもGit URLでもない場合、たとえばローカルディレクトリの場合は、中ほどの文がcan only be used with GitHub sources from the 'anthropics' organizationに変わります。
予約名まわりの挙動が変わった版
- 2026年7月8日 / v2.1.205登録済みの名前も毎回再チェック
予約される前に登録された名前が読み込まれ続ける抜け道がなくなりました。
- 2026年8月4日 / v2.1.221Desktopの同期で拒否される名前をvalidateが警告
claude plugin validateが、Claude Desktopの管理マーケットプレイス同期で拒否される名前に警告を出すようになりました。 - 2026年9月17日 / v2.1.275`npm`・`pip`・`github`などを予約
パッケージマネージャーやGitHubを指す語は、大文字小文字を問わず予約されます。
- 2026年9月22日 / v2.1.280予約名を装う名前と綴り違いを拒否
予約名を装う名前は、追加時に拒否され、登録済みなら読み込まれなくなります。末尾のドットや、ハイフンの代わりの記号だけが違う綴り違いも対象です。
- 2026年9月24日 / v2.1.282拒否した名前を明示
claude plugin listが、名前が原因であることを示すメッセージを出すようになりました。
似たメッセージを見分ける
予約名に関するエラーは1種類ではありません。マーケットプレイス名まわりのメッセージは、次の5つに分かれます。
| メッセージ | 当たる条件 | 直し方 |
|---|---|---|
registered from an untrusted source | 当たる条件予約名そのものを、anthropics以外の登録元から使っている | 直し方removeしてanthropics配下からadd |
Claude Code refuses the marketplace name | 当たる条件official-claude-pluginsのように公式を装う名前 | 直し方公開者が改名。利用者はremoveするか改名を待つ |
is another spelling of ... a reserved marketplace name | 当たる条件claude.code.pluginsのような綴り違い(v2.1.280以降) | 直し方改名して追加し直す |
Marketplace "<name>" is already added from a different source | 当たる条件/plugin install <plugin> --marketplace <source>で、同名の登録済みマーケットプレイスと衝突した。既存のほうが残り、プラグインは入らない | 直し方既存を使うなら/plugin install <plugin>@<name>、乗り換えるならremoveして再実行 |
is added but ignored | 当たる条件場所や形式が不正な登録(ネットワークドライブ上など)。名前が原因のときは理由が(see the debug log)になる | 直し方メッセージの指示どおりremoveして追加し直す |
予約名の完全一致だけが「untrusted source」で、似た名前は別のメッセージになります。同じremoveで片付く場面が多いものの、公開者側の直し方は変わります。なお、最後から2番目の行は予約名とは無関係で、同名の別ソースとぶつかったときの案内です。
is added but ignoredの文末は、どの検査で落ちたかを示します。場所がネットワークドライブ上か、パスに.や..を含む場合、記録されたGit URLが使えない場合、extraKnownMarketplacesの宣言とソースが食い違う場合の3系統です。理由の代わりに(see the debug log)と出たときだけ、名前の拒否が原因になります。v2.1.286より前は、理由を問わずMarketplace <name> not foundと表示されました。
綴り違いで登録済みのエントリが無視されたときは、claude plugin marketplace remove claude.code.pluginsのように、警告が示すコマンドで消します。~/.claude/plugins/known_marketplaces.jsonから該当エントリを削る方法も、エラーページに載っています。
v2.1.287で再現した出力
v2.1.287の出力は次のとおりです。一時ディレクトリに置いたmarketplace.jsonのnameだけを書き換えたもので、ローカルのパスを追加するだけなのでネットワークには出ません。
claude plugin marketplace add ./m # name は "claude-community"
claude plugin validate ./m # name は "official-claude-plugins"Adding marketplace…✘ Failed to add marketplace: The name 'claude-community' is reserved for official Anthropic marketplaces and can only be used with GitHub sources from the 'anthropics' organization.healthcareでも同じ文面で、終了コードは1でした。claude.code.pluginsは別の文面になります。
Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.公式風の名前は、追加の前にvalidateの段階で止まります。
✘ Found 1 error:
❯ name: Marketplace name impersonates an official Anthropic/Claude marketplace
✘ Validation failedつまり、予約名の判定は追加時点でも走ります。「untrusted source」が出るのは、すでに登録済みのエントリが再チェックで引っかかった場合が中心です。
予約されているマーケットプレイス名
名前は階層ごとに次のとおりです。いずれも、githubまたはgitのソースでgithub.com/anthropics/配下から来る場合に限って使えます。
| 階層 | 予約名 |
|---|---|
| 公式(14個) | 予約名claude-code-marketplace / claude-code-plugins / claude-plugins-official / anthropic-marketplace / anthropic-plugins / agent-skills / anthropic-agent-skills / life-sciences / knowledge-work-plugins / claude-for-legal / claude-for-financial-services / financial-services-plugins / first-party-plugins / claude-tag-plugins |
| コミュニティ(3個) | 予約名claude-community / claude-plugins-community / healthcare |
| プラグインディレクトリ(2個) | 予約名anthropic-plugin-directory / claude-plugin-directory |
一覧にない名前も使えない場合があります。inline・builtin・skills-dir・synced・claude-plugin-testは、マーケットプレイス由来でないプラグインのために使われます。claudeai-で始まる名前は、claude.aiがホストするマーケットプレイス用です。
一覧を見るだけでは判断しにくいのが、公式のように見える名前です。official-claude-pluginsやclaude-plugins-v2のような名前と、ASCII以外の文字を含む名前が該当し、予約名の文字列一致とは別のルールで止まります。
デモ用マーケットプレイスの落とし穴
古いチュートリアルにある/plugin marketplace add anthropics/claude-codeは、claude-plugins-officialではなくデモ用を追加します。名前はclaude-code-pluginsで、予約名ですがanthropics配下の登録元なので、エラーにはなりません。claude-plugins-officialはanthropics/claude-plugins-officialから別に追加します。
登録済みのマーケットプレイスを確認する
どのエントリが該当しているかは、listで見つけます。
claude plugin marketplace list --json一時ディレクトリで追加したteam-toolsを--jsonで出すと、次の形になります。
[
{
"name": "team-tools",
"source": "directory",
"path": "<tmp>/m",
"installLocation": "<tmp>/m"
}
]nameを予約名と照らし、sourceがgithub.com/anthropics/を指しているかを見ます。--jsonなしのlistでは、anthropic-plugin-directoryがSource: Built in (Anthropic Directory)として先頭に出ます。--jsonの出力には含まれません。
スクリプトとプロジェクト設定での見え方
CIや導入スクリプトで失敗を拾うなら、--jsonが使えます。--jsonを付けると、最後の行に結果が1行のJSONで出ます。予約名のhealthcareを追加したときは、次のとおりでした。
{"command":"marketplace-add","outcome":"failed","message":"The name 'healthcare' is reserved for official Anthropic marketplaces and can only be used with GitHub sources from the 'anthropics' organization.","failureCode":"error_unknown"}failureCodeはerror_unknownで、予約名に専用のコードは割り当てられていません。判別するならmessageの文面に頼ることになります。
宣言の置き場所にも注意が要ります。addの既定は--scope userで、成功時は(declared in user settings)と出ます。--scope projectで追加すると、プロジェクトの.claude/settings.jsonにextraKnownMarketplacesとして書かれます。この設定ファイルはリポジトリでチームと共有できるため、予約名のエントリを置く前に名前を確かめておきます。
利用者側の対処
予約名に当たったマーケットプレイスを入れ直す
- 1
登録を消す
claude plugin marketplace remove <name>を実行します。--scope user|project|localで宣言元を絞れ、省くとすべてのスコープから消えます。マーケットプレイスから入れたプラグインはアンインストールされ、保存データも消えます。 - 2
anthropics配下から追加し直す
claude-communityならanthropics/claude-plugins-community、claude-plugins-officialならanthropics/claude-plugins-officialを/plugin marketplace addに渡します。名前とリポジトリの組み合わせを取り違えると、同じエラーが再発します。 - 3
プラグインを入れ直す
removeで消えたプラグインは自動では戻りません。/plugin install <plugin>@<name>で入れ直します。
claude plugin marketplace remove claude-community
claude plugin marketplace add anthropics/claude-plugins-communityclaude plugin marketplace update <name>は、登録元から再取得するだけのコマンドです。エラーページの手順はremoveしてからaddし直す形で、updateは挙げられていません。ただし、公式風の名前のマーケットプレイスについては、公開者が改名したあとにupdateで追随する手順が書かれています。
公開者側の対処
予約名と同じ名前で自作のマーケットプレイスを公開していた場合、自分のリポジトリを変えていなくても、利用者側で読み込めなくなります。marketplace.jsonのnameを予約されていない文字列に変え、利用者に新しい名前での再登録を案内します。
予約名と衝突しない名前を選ぶなら、nameは英数字・.・_・-だけにして、先頭は英数字にします。スペースやパス区切りを含む名前は、claude plugin validateがエラーにします。予約名は登録元がgithub.com/anthropics/配下かどうかで決まり、社内向けでも同じ名前は使えません。
Claude Desktopの予約名チェックとの違い
v2.1.221以降のclaude plugin validateは、名前がorg・org-provisioned・unknownのときに警告を出します。nameをorgにして実行すると、v2.1.287では次のように出ました。
✔ Validation passed with warnings
❯ name: Marketplace name "org" is reserved in Claude Desktop. Claude Code accepts it, but the Claude Desktop managed marketplace sync (allowedPluginMarketplaces) will reject the whole marketplace.Claude Code単体では通り、Desktopの管理マーケットプレイス同期だけがマーケットプレイス全体を拒否します。「untrusted source」は読み込みを止めるエラー、こちらはvalidateの警告です。片方を直しても症状が消えないなら、もう片方の可能性があります。
strictKnownMarketplacesとの違い
組織のポリシーで出るエラーとも混同しやすいので、仕組みを並べます。
| 項目 | untrusted source | strictKnownMarketplaces |
|---|---|---|
| 判定の主体 | untrusted sourceClaude Code本体の予約名ルール | strictKnownMarketplaces組織管理者がmanaged-settings.jsonで設定する許可リスト |
| 見るもの | untrusted sourceマーケットプレイス名と登録元の組み合わせ | strictKnownMarketplaces登録元が許可リストに含まれるか |
| 変えられるか | untrusted source予約名はanthropics配下の登録元でのみ使える | strictKnownMarketplaces管理者が許可リストを編集すれば変わる |
組織のポリシーを疑う前に、名前が予約に当たっていないかを見るほうが早く原因に届きます。組織のマーケットプレイス統制はClaude Code組織管理ガイド、プラグインとマーケットプレイスの全体像はClaude Codeプラグイン完全ガイドで扱っています。
よくある質問
プラグインが改ざんされているということですか
いいえ。このエラーが見るのは名前と登録元の組み合わせだけで、プラグインの中身は判定していません。ファイルの改ざんを検知するのは、Plugin archive integrity check failedのエラーの役割です。
予約名のまま使い続ける方法はありますか
ありません。anthropics配下から登録するか、公開者が改名するかのどちらかです。
まとめ
「untrusted source」は予約名と登録元の不一致で、中身の安全性とは別の話です。メッセージの先頭で、予約名そのものの衝突(removeしてanthropics配下からadd)か、似た名前の別エラー(公開者の改名待ち)かを切り分けます。自分が公開する側なら、marketplace.jsonのnameを予約語から離して、利用者に再登録を案内します。