Marketplace is already added from a different sourceの原因と対処
plugin installに--marketplaceを付けると出るエラーの原因と復旧手順です。既存のマーケットプレイスは残る仕様で、removeすると同じ元から入れたプラグインも外れます。
Marketplace "acme-tools" is already added from a different sourceは、--marketplace <source>付きでプラグインを入れたときに出るエラーです。指定したソースから取れたカタログの名前が、すでに別のソースで追加済みのマーケットプレイスと同じだったことを示します。Claude Codeは既存の登録を残し、プラグインは入りません。直し方は2通りで、既存のマーケットプレイスから名前指定で入れるか、/plugin marketplace remove <name>で外してからやり直します。
エラーが出る条件は3つそろったとき
出るのは次の3つがそろったときです。
/plugin install <plugin> --marketplace <source>(セッション内)かclaude plugin install <plugin> --marketplace <source>(シェル)を実行した- 指定したソースから取得したカタログの
nameが、登録済みのマーケットプレイスと同じだった - 登録済みのマーケットプレイスのソースが、今回指定したソースと一致しなかった
/plugin marketplace add単体の失敗とは別の経路です。add側の失敗はmarketplace addが失敗する原因の解説で扱っています。--marketplaceと@形式の使い分けそのものは、claude plugin installの導入経路の記事が中心です。この記事は、同名の衝突で止まったあとの復旧に絞ります。
「別のソース」の判定は、リポジトリの中身ではなく登録時のソース情報で決まります。たとえば同じacme-toolsという名前のカタログを、以前はacme/pluginsから、今回は別の組織のフォークから取り込もうとしたケースです。フォークの作者がカタログ名を書き換えずに配布していると、名前だけが衝突します。ソースの書式違い(owner/repoとフルURLなど)がどう比較されるかは、このエラーの節には記載がありません。
メッセージの読み方
エラー全文は次の形です。
Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.| 部分 | 意味 |
|---|---|
"acme-tools" | 意味衝突したマーケットプレイスの名前。新しいソースのカタログが名乗っていた名前でもある |
(github:acme/plugins) | 意味すでに登録されている側のソース |
remove acme-tools | 意味新しいソースに切り替えたいときに実行するコマンド |
カッコ内のソースが、あなたが意図して登録したものかどうかが分かれ目です。意図したものなら、新しく指定したソースのほうが想定外だったことになります。
復旧は既存を使うか、切り替えるかの2択
どちらのソースを使うかで手順が変わる
既存のものを使う
登録済みのマーケットプレイスを使い続けるなら、--marketplaceを外して名前で指定します。
新しいソースに切り替える
登録済みのものを外してから、同じインストールコマンドをやり直します。
既存のマーケットプレイスから入れる
カッコ内のソースが本来使いたいものなら、<plugin>@<name>の形で入れます。
/plugin install deploy-helper@acme-toolsシェルからならclaude plugin install deploy-helper@acme-toolsです。名前に使う<name>は、エラー文に出ていたマーケットプレイス名です。
新しいソースに切り替える
新しいソースを使いたいときは、既存の登録を外してからやり直します。
/plugin marketplace remove acme-tools
/plugin install deploy-helper --marketplace your-org/pluginsシェルで行うなら次のとおりです。
claude plugin marketplace remove acme-tools
claude plugin install deploy-helper --marketplace your-org/pluginsやり直したあとは、/plugin marketplace listで名前の横のソースが新しいものに変わったかを確かめます。セッション内で入れた場合は、removeの時点で外れたプラグインを、新しいソースから入れ直す必要があります。シェルで入れた場合は、宣言がユーザー設定側に残る点を前提に、プロジェクトの設定と食い違わないかも見ておくと安心です。
/plugin install ... --marketplaceをセッション内で使うにはv2.1.275以降、シェルのclaude plugin install ... --marketplaceにはv2.1.292以降が必要です。セッション内ではソースに空白を含められません。
removeの前に確かめたいこと
removeは登録を消すだけの操作ではありません。マーケットプレイスを外すと、そこから入れたプラグインはすべてアンインストールされ、設定ファイルのenabledPluginsの該当エントリも消えます。
保存データも消えます。claude plugin marketplace remove <name>は、そのマーケットプレイスから入れたプラグインと、プラグインの保存データを削除します。
そのため、切り替える前に何が入っているかを見ておくと安全です。
remove前の確認順
- 1
登録内容を一覧する
/plugin marketplace list(シェルならclaude plugin marketplace list)で、名前とソースを確認します。 - 2
入れてあるプラグインを確かめる
/pluginのMarketplacesタブで該当のマーケットプレイスを選びます。外したときに消えるプラグインの名前が、確認の前に表示されます。 - 3
消えても困るかを判断する
同じカタログから新しいソースでも入れ直せるなら、removeしてから同じプラグインを入れ直せば元に戻ります。
プロジェクトの.claude/settings.jsonでenabledPluginsをチームに配っている場合は、removeで自分の設定から消えたエントリを、あとで確認すると安心です。チームへの配布の仕組みはextraKnownMarketplacesでの自動配布にあります。
設定で宣言された名前との衝突は別のエラー
名前の衝突に見えて、別のエラーになる場合があります。
| メッセージの出だし | 原因 | 対処の方向 |
|---|---|---|
Marketplace "<name>" is already added from a different source | 原因--marketplaceで指定したソースのカタログ名が、登録済みの別ソースと同名 | 対処の方向既存を使うか、removeして切り替える |
Cannot add marketplace "<name>": its source doesn't match its extraKnownMarketplaces entry ... | 原因addしたカタログ名に、ユーザー設定か管理設定のextraKnownMarketplacesの宣言があり、ソースが違う | 対処の方向宣言どおりのソースでaddするか、宣言側を直す |
Marketplace "<name>" not found | 原因名前で指定したマーケットプレイスが未登録。/plugin install <source>にソースを直接渡した場合にも出る | 対処の方向先に追加するか--marketplaceを使う |
Invalid marketplace source format | 原因ソースの書式が不正 | 対処の方向owner/repo、https://...、./pathのいずれかで書く |
2行目は、名前の一致が起点になる点で今回のエラーと似ています。ただし、宣言と食い違うaddは何も登録されません。今回のエラーは別ソースで登録済みのものがあるのが前提で、そちらは残ります。管理設定で許可するソースを絞っているときの書式は、strictKnownMarketplacesのソース種別に整理しています。
3行目のnot foundは、/plugin install <source>の形に--marketplaceが付いていないときにも出ます。ソースを渡すなら--marketplaceを必ず付けてください。
GitLabなどのURLを渡すときは、https://を付けるかgit@host:pathの形にします。gitlab.example.com/your-group/your-marketplace.gitのように頭を省くと、GitHubのowner/repoの略記として読まれ、'<source>' is not a valid GitHub owner/repo shorthandで拒否されます。owner/repoの略記はGitHub専用で、ホスト名や余分なパス区切りが付くと通りません。名前の衝突とは無関係で、書式を直すだけで解消します。
一方、スラッシュを含まない裸の名前(claude-plugins-official)やホスト名だけの指定(marketplace.anthropic.com)は、表の4行目のInvalid marketplace source format. Try: owner/repo, https://..., or ./pathになります。受け付けるのは、GitHubのowner/repo、https://かhttp://のURL、user@host:pathのSSH形式、./・../・/・~で始まるローカルパスの4種類です。
同じソースなら再利用されるので再発しにくい
すでに追加済みのソースを--marketplaceに渡した場合は、次のように扱われます。
- セッション内: 確認を省き、そのマーケットプレイスのプラグイン詳細が開く
- シェル: 追加済みのマーケットプレイスが再利用される
同じ入力を繰り返すだけなら、このエラーは出ません。出るのは、ソースが変わったとき、つまり別の人が別の経路で配った手順を実行したとき、または自分で使うソースを乗り換えたときです。
フォークと元のリポジトリで、どちらを残すかは次の問いで決められます。
- 登録済みのソース(エラーのカッコ内)は、自分で意図して追加したものか。意図したものなら、新しいソースのほうを疑う
- 新しいソースは、元のカタログを写しただけのフォークか、手を加えた別物か。写しただけなら、既存を残して名前で入れれば足りる
- フォーク側にだけ必要な修正があるか。あるなら、removeして切り替える。ただし外すと入れてあるプラグインも消えるので、前節の確認順を先に済ませる
チームの手順書に--marketplace付きのコマンドを載せるなら、使うソースを1つに固定しておくのが確実です。フォークやミラーを併用する場合は、登録時の名前が衝突しない運用を決めておきます。名前の付け替えは、マーケットプレイス側がmarketplace.jsonで決める事項です。プラグイン名を移行するときの手順はrenamesでプラグイン名を移行する方法にあります。
入れた経路で、再発の条件と復旧後の状態が変わる
同じ--marketplaceでも、セッション内とシェルでは新しいマーケットプレイスの追加時の挙動が違います。どちらで入れたかを覚えておくと、あとで衝突の出どころをたどりやすくなります。
| 観点 | セッション内(/plugin install) | シェル(claude plugin install) |
|---|---|---|
| 必要なバージョン | セッション内(/plugin install)v2.1.275以降 | シェル(claude plugin install)v2.1.292以降 |
| 未登録のソースを渡したとき | セッション内(/plugin install)解決したソースを表示し、確認してから追加 | シェル(claude plugin install)確認なしで追加 |
| 登録済みのソースを渡したとき | セッション内(/plugin install)確認を省き、プラグイン詳細が開く | シェル(claude plugin install)登録済みのものを再利用 |
| 新規追加時のポリシー検査 | セッション内(/plugin install)インストールのページに記載がありません | シェル(claude plugin install)claude plugin marketplace addと同じ組織ポリシーの検査を通る |
シェル版には、もう1つ見落としやすい点があります。新しく追加されたマーケットプレイスは、--scope projectを付けても、ユーザー設定側に宣言されます。プロジェクトに限定したつもりでも、登録の宣言は自分のユーザー設定に残ります。衝突の相手を探すときは、プロジェクトの設定だけでなくユーザー設定側の登録も見てください。プラグインの有効化範囲と、マーケットプレイスの登録範囲は別物です。
組織のポリシーでソースを絞っている環境では、シェル版の追加が組織ポリシーの検査に引っかかることもあります。その場合のメッセージは本記事のエラーとは別なので、出だしの文言で見分けられます。
登録ファイルを手で直すのは最後の手段
登録されたマーケットプレイスの情報は、~/.claude/plugins/known_marketplaces.jsonに保存されています。エラー一覧のページには、このファイルを開いてJSONを直す手順が、ファイルが壊れているときの対処として載っています。今回のエラーに対して、このファイルを直接編集する手順は載っていません。まずは/plugin marketplace removeを使い、ファイルの手編集はコマンドで直せなかったときだけにします。
まとめ
エラーは、同名のマーケットプレイスが別ソースですでに登録されていることを知らせるもので、既存の登録は壊れていません。カッコ内のソースを見て、残すか切り替えるかを決めれば、あとは名前で入れるか、removeして入れ直すかの二択です。removeはそのマーケットプレイス経由のプラグインもまとめて外すため、切り替えるなら一覧で中身を確かめてから実行します。