Claude Media
Failed to load marketplace configurationの直し方 — Claude Code

Failed to load marketplace configurationの直し方 — Claude Code

known_marketplaces.jsonが壊れたときの2種類のエラーを見分け、JSONの修復か作り直しで復旧する手順です。空ファイルや途中切れの再現出力も載せます。

claude plugin install が Failed to load marketplace configuration で止まるのは、~/.claude/plugins/known_marketplaces.json をClaude Codeが使えないときです。ファイルがJSONとして読めない場合と、JSONは正しいのに中身が合わない場合の2通りがあり、どちらもこのファイルを消すか作り直せば復旧します。

まずメッセージで2系統を見分ける

Claude Codeは、追加したプラグインマーケットプレイスの一覧を ~/.claude/plugins/known_marketplaces.json に記録します。プラグイン関連のコマンドのうち、この一覧が要るもの(claude plugin install など)は、ファイルを使えないと次の2つのどちらかで失敗します。

メッセージファイルの状態典型例
Failed to load marketplace configurationファイルの状態存在するが、JSONとして不正、または読み取れない典型例空ファイル、書き込み途中で切れたファイル
Marketplace configuration file is corruptedファイルの状態JSONとしては正しいが、レジストリのスキーマに合わない典型例値の型が違う、エントリの形が違う

空ファイルも前者に入ります。メッセージの後ろに続く文字列が、原因を絞る手がかりです。

手元で再現した出力

空の CLAUDE_CONFIG_DIR を用意し、その plugins/ に壊れたファイルを置いて claude plugin install my-plugin を実行した結果です(Claude Code v2.1.296、ログインやモデル呼び出しは発生しません。パスは ~ に置き換えています)。

d=$(mktemp -d) && mkdir -p "$d/plugins"
: > "$d/plugins/known_marketplaces.json"           # 空ファイル
CLAUDE_CONFIG_DIR="$d" claude plugin install my-plugin
✘ Failed to install plugin "my-plugin": Failed to load marketplace configuration: JSON Parse error: Unexpected EOF

{"a": のように途中で終わるJSONを置いても、同じ Unexpected EOF が出ました。一方、{"x":"bad"} のようにJSONとしては正しいが形が違うファイルでは、メッセージが切り替わります。

✘ Failed to install plugin "my-plugin": Marketplace configuration file is corrupted: x: Invalid input: expected object, received string

コロンの後ろの x: Invalid input: ... は、どのキーがどう合っていないかを示しています。「エントリが登録スキーマに合わない」というエラーは、この形で表れます。{} のファイルはエラーにならず、Plugin "my-plugin" not found in any configured marketplace と、マーケットプレイスが1つも無い通常の結果になりました。

同じファイルは claude plugin marketplace list でも読まれます。インストールを試さなくても、このコマンドだけで2系統の見分けがつきます(同じくv2.1.296、空の設定ディレクトリでの出力です)。

ファイルの中身claude plugin marketplace list の結果
空ファイルclaude plugin marketplace list の結果✘ Failed to list marketplaces: Failed to load marketplace configuration: JSON Parse error: Unexpected EOF
{"x":"bad"}claude plugin marketplace list の結果✘ Failed to list marketplaces: Marketplace configuration file is corrupted: x: Invalid input: expected object, received string
{}claude plugin marketplace list の結果Configured marketplaces: に続けて、組み込みの anthropic-plugin-directory(Source: Built in (Anthropic Directory))だけが並ぶ

一方、同じ状態で claude plugin list を実行しても、エラーにはならず No plugins installed. と表示されました。インストール済みプラグインの一覧では、ファイルの破損に気づけません。

ここまでの出力はv2.1.296での観察です。バージョンが変わると文言が変わることもあります。

復旧の手順

直し方は次の順です。

手順

known_marketplaces.jsonの復旧順

  1. 1

    ファイルを開いて直す

    ~/.claude/plugins/known_marketplaces.json を開き、JSONの構文を直します。corrupted のときは、メッセージが名指しするエントリを直します。

  2. 2

    直せなければ空にする

    ファイルを削除するか、中身を {} に置き換えます。

  3. 3

    マーケットプレイスを入れ直す

    claude plugin marketplace add <source> で1つずつ再登録します。

作り直す前に、元のファイルを退避しておくと、どのマーケットプレイスを入れていたかを後から見返せます。

cd ~/.claude/plugins
mv known_marketplaces.json known_marketplaces.json.bak
echo '{}' > known_marketplaces.json
claude plugin marketplace add <source>

<source> には、元のマーケットプレイスのGitHubリポジトリやgit URLなどを入れます。何を入れていたか分からなくなったときは、退避した .bak を開けば、各エントリの source が残っていることがあります。壊れ方によっては、中身が空で何も読めません。

ファイルを消すと何が消えて、何が残るか

known_marketplaces.json は、~/.claude/plugins の下にある複数の記録の1つです。置き場所は CLAUDE_CODE_PLUGIN_CACHE_DIR を設定していればそのパスが基準になり、既定の ~/.claude/plugins ではなくなります。私の再現でも、CLAUDE_CONFIG_DIR を変えると読まれる場所が変わりました。

パス(plugins配下)持っているもの
known_marketplaces.json持っているもの取得したマーケットプレイスの記録。各エントリに source、installLocation、lastUpdated、autoUpdate がある
installed_plugins.json持っているものインストールの記録。scope、installPath、version がある
cache/<marketplace>/<plugin>/<version>/持っているものプラグインのファイル本体
marketplaces/<name>/持っているものGitHubやgit、URLから追加したマーケットプレイスのclone
known_marketplaces_claudeai.json持っているものclaude.ai側で管理されるマーケットプレイスの記録(別ファイル)

この表から言えるのは、壊れているのは「マーケットプレイスの記録」だけで、プラグイン本体と導入記録は別の場所にあるということです。ファイルを退避して {} にしても、installed_plugins.json と cache/ には手が入りません。プラグインはセッション開始時に、この2つからネットワークなしで読み込まれます。

逆に、直し方として claude plugin marketplace remove を使うのは勧められません。最後に宣言しているスコープから外すと、そのマーケットプレイスのキャッシュを消し、そこから入れたプラグインもすべてアンインストールします。保存済みのオプションやデータも、消せる範囲で消えます。記録ファイルが読めないだけの段階で試すと、動いているプラグインまで巻き込みます。

directory や file の形で追加したローカルのマーケットプレイスは、marketplaces/<name>/ に複製を持たず、installLocation が指定したパスそのものです。.bak を見て再登録するときは、installLocation が実在するパスかどうかも確かめます。

手でエントリを直すときは、autoUpdate が /plugin のMarketplacesにある自動更新のトグルで書き換わる値だと知っておくと、消してよいフィールドと触らないフィールドを分けやすくなります。source と installLocation が、再登録の手がかりになる中心のフィールドです。

設定ファイルで宣言している分は自動で戻る

作り直しても、全部を手で入れ直すとは限りません。ユーザー設定またはmanaged settingsの extraKnownMarketplaces で宣言しているマーケットプレイスは、信頼したフォルダーでClaude Codeを次に起動したときに再登録されます。

{
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": { "source": "github", "repo": "acme-corp/claude-plugins" }
    }
  }
}

これは公式の設定例に沿った形です。known_marketplaces.json は「取得済みの記録」で、設定側の宣言は「あるべき一覧」という役割の違いがあります。設定に宣言があるのに記録に無いマーケットプレイスは、セッション開始後にバックグラウンドでcloneされます。claude plugin marketplace add で追加したものも、ユーザー設定の extraKnownMarketplaces に書き込まれます。つまり、コマンドで入れた分も設定側に残っていて、再登録の対象になります。

リポジトリの .claude/settings.json に書いた宣言は、そのフォルダーの信頼ダイアログを承認した後でないと効きません。信頼していないフォルダーでは、メッセージなしに無視されます。復旧後にマーケットプレイスが戻らないときは、まず起動した場所を確かめます。

なお extraKnownMarketplaces 自体の書き方や配布の組み方は、extraKnownMarketplacesでチームにマーケットプレイスを自動配布するにまとめています。

v2.1.246より前は、エラーが出なかった

このエラー自体は、v2.1.246で claude plugin install が報告するようになったものです。それ以前は、ファイルが空または壊れていると claude plugin install <name> がエラーを出さずに終了し、ターミナルでは止まったまま動かなくなることがありました。古いバージョンで「installが何も言わずに終わる」「固まる」ときは、同じ原因を疑えます。

Claude Codeを更新できない環境なら、先にファイルの中身を確認します。

cat ~/.claude/plugins/known_marketplaces.json
python3 -m json.tool ~/.claude/plugins/known_marketplaces.json

json.tool が構文エラーを出せば前者の系統、何も言わずに整形して表示すれば、JSONは正しいので corrupted 側(スキーマ不一致)を疑います。

似て見える別のエラーとの区別

known_marketplaces.json が関わるエラーは、これだけではありません。

状況見るべき場所
Marketplace "<name>" is added but ignored見るべき場所ファイルは読めているが、特定のエントリが検査に落ちている。claude plugin marketplace remove <name> で外して入れ直す
予約名の別綴り(known_marketplaces.json has an entry named ...)見るべき場所警告が示す claude plugin marketplace remove を実行する
already added from a different source見るべき場所追加時の衝突。Marketplace is already added from a different sourceの原因と対処を参照

is added but ignored は、ファイル全体ではなくエントリ単位の不合格です。ファイルごと作り直す前に、claude plugin marketplace list でどのマーケットプレイスが対象かを確かめます。該当の1つだけなら claude plugin marketplace remove <name> で外して再追加すれば足ります。ただしremoveはそこから入れたプラグインも消すので、再インストールが前提です。ファイル全体を消すのは、Failed to load か corrupted が出ているときに限ります。

並行する書き込みでマーケットプレイスの登録が静かに消える起動時の競合は、v2.1.232で別途修正されています。複数のセッションを同時に立ち上げる環境では、更新後に消える症状が止まるかどうかを確かめられます。

隣の記録ファイルが原因のときは、直し方が違う

プラグインの記録は installed_plugins.json にもあり、こちらの異常は別のメッセージで出ます。known_marketplaces.json を消しても直りません。

  • Plugin "<name>" not cached at <path>: 導入記録はあるのに、記録が指す cache/ 側のディレクトリが無い状態です。キャッシュを消した後などに起きます。シェルで claude plugin install <name>@<marketplace> を実行して取り直し、セッションで /reload-plugins を実行します
  • installed_plugins.json holds a record under "<id>" that this version of Claude Code cannot read: 記録がJSONとしては正しくても、手元のバージョンが読めない形のときに出ます。新しいバージョンが書いた記録であることが多いので、まず claude update を試します。更新できなければ、記録を書いたバージョンで該当プラグインをアンインストールするか、記録を手で消して再起動します

どちらも Failed to load marketplace configuration とは別系統です。メッセージにファイル名が入っているので、known_marketplaces.json と installed_plugins.json のどちらを指しているかを先に読みます。

壊れる前に、入れているマーケットプレイスの控えを取る

ファイルが読めなくなってからでは、何を入れていたかを .bak から手で拾うしかありません。正常なうちに一覧をJSONで書き出しておくと、再登録の材料になります。

claude plugin marketplace list --json > marketplaces-backup.json

出力は配列で、1件ごとに name、source(github、git、url、directory、file、claudeai のいずれか)、repo、url、path、ref、installLocation を持ちます。github なら repo、git と url なら url、ローカルなら path が、claude plugin marketplace add <source> に渡す値の元になります。ref があるのは、ブランチやタグを固定して追加した場合だけです。

claude.ai側のマーケットプレイスはこのJSONに含まれません。テキスト表示の末尾にある From claude.ai: の節に出る分は、claude.aiのアカウントから見えるもので、追加し直すときの名前もそこで確かめます。

作り直した後の確認

直したあとは、次の2点で確認します。

  • claude plugin install <plugin> を再実行し、Failed to load marketplace configuration が出ないこと
  • 再登録したマーケットプレイスが、claude plugin marketplace list に出ること

{} のファイルでは、marketplace list に組み込みの anthropic-plugin-directory だけが並び、自分で追加した分は1つも出ません。install はマーケットプレイスが無いことを示す通常のエラーになります。ここまで来ていれば、ファイル自体は直っています。not found in any configured marketplace が出たら、ファイルの破損は解けていて、次は登録のし直しの段階です。登録後もプラグインが見えないときは、claude plugin installの導入経路を選ぶで、--marketplace を使った追加と導入の同時実行も選べます。プラグインとマーケットプレイスの基本はClaude Codeプラグイン(Plugins)完全ガイドが扱っています。

まとめ

メッセージの頭が Failed to load ならJSONの構文、corrupted ならスキーマ不一致です。どちらも復旧は同じで、直せなければ退避して {} から再登録します。設定ファイルで宣言したマーケットプレイスは、信頼したフォルダーでの次回起動時に戻ります。

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