Claude Media
Marketplace is already added from a different sourceの原因と対処

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つがそろったときです。

  1. /plugin install <plugin> --marketplace <source>(セッション内)かclaude plugin install <plugin> --marketplace <source>(シェル)を実行した
  2. 指定したソースから取得したカタログのnameが、登録済みのマーケットプレイスと同じだった
  3. 登録済みのマーケットプレイスのソースが、今回指定したソースと一致しなかった

/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択

くらべる

どちらのソースを使うかで手順が変わる

removeしない

既存のものを使う

登録済みのマーケットプレイスを使い続けるなら、--marketplaceを外して名前で指定します。

removeしてから再実行

新しいソースに切り替える

登録済みのものを外してから、同じインストールコマンドをやり直します。

既存のマーケットプレイスから入れる

カッコ内のソースが本来使いたいものなら、<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. 1

    登録内容を一覧する

    /plugin marketplace list(シェルならclaude plugin marketplace list)で、名前とソースを確認します。

  2. 2

    入れてあるプラグインを確かめる

    /pluginのMarketplacesタブで該当のマーケットプレイスを選びます。外したときに消えるプラグインの名前が、確認の前に表示されます。

  3. 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はそのマーケットプレイス経由のプラグインもまとめて外すため、切り替えるなら一覧で中身を確かめてから実行します。

この記事を共有:XはてブLinkedIn