Claude CodeのLSPプラグイン推奨ダイアログを止める・戻す方法
Claude Codeが編集中に出すLSP plugin recommendationダイアログの4つの選択肢と、5回無視で止まる仕様、~/.claude.jsonの3つのキーを消して復活させる手順を解説します。
Claude CodeのLSPプラグイン推奨ダイアログを止める・戻す方法
Claudeにファイルを編集させたら、突然「LSP plugin recommendation」というダイアログが出た。そんな経験があるなら、原因は自分のマシンに言語サーバーのバイナリがあることです。逆に、最近ダイアログが一切出なくなったなら、どこかで止める選択をしたか、気づかないうちに無視を重ねた可能性があります。
このダイアログは4つの選択肢で挙動が変わり、止まった状態は~/.claude.jsonに残ります。この記事では、出る条件、各選択肢の効果、止める方法、そして止めた状態から戻す手順をまとめます。
LSPプラグイン推奨ダイアログとは何か
LSP plugin recommendationは、言語サーバーのバイナリがすでにPATHにあり、そのバイナリを使うプラグインが未インストールのときに、Claude Codeがプラグインの導入を提案するダイアログです。コードインテリジェンスプラグインの仕組み自体はコードインテリジェンス(LSP)活用ガイドで扱っています。
推奨は、Claudeがファイルを編集したタイミングで出ることがあります。表示されるかどうかと、どのプラグインが提案されるかは、次の条件で決まります。
| 条件 | 内容 |
|---|---|
| プラグインが一致する | 内容追加済みのマーケットプレイス、またはClaude Codeが登録した公式マーケットプレイスに、そのファイル拡張子向けのコードインテリジェンスプラグインがあり、プラグインのバイナリが入っている |
| 公式が優先される | 内容複数のマーケットプレイスが同じ拡張子向けのプラグインを出していると、公式マーケットプレイスのものが提案される |
| セッションにつき1回 | 内容1つのセッションで最大1回。最初に一致したファイルの編集時に出る |
| クラウドセッションでは出ない | 内容claude --cloudで始めたセッションなど、ターミナルがクラウドセッションにつながっているときは出ない |
言い換えると、バイナリがなければ出ません。プラグインを入れ済みでも出ません。「TypeScriptのバイナリはあるのにプラグインがない」という状態が、いちばん出やすい組み合わせです。
4つの選択肢は何が違うか
ダイアログは、プラグイン名を示したうえで次の4択を出します。
- Yes, install: ユーザーアカウントにプラグインをインストールし、
<plugin> installed · restart to applyと表示する。言語サーバーは新しいセッションから読み込まれる - No, not now: ダイアログを閉じるだけ。後のセッションで同じプラグインがまた提案される。Escキーも同じ扱い
- Never for this plugin: そのプラグインの推奨だけを止める。別のプラグインの推奨は出続ける
- Disable all LSP recommendations: 全言語の推奨を止める
どれも選ばずに放置した場合、30秒でダイアログは閉じ、「無視された」として数えられます。この回数はセッションをまたいで保持されます。無視が5回たまると、Disable all LSP recommendationsを選んだのと同じ状態になり、推奨は止まります。
つまり、止める操作をしていなくても止まります。ダイアログが出た瞬間に別の作業へ気を取られ、30秒放置する。これを5セッション繰り返すと、以後は二度と出ません。
ダイアログを止める方法
止めたい理由で、選ぶ操作が変わります。
| やりたいこと | 操作 | 影響範囲 |
|---|---|---|
| そのプラグインだけ二度と提案されたくない | 操作Never for this plugin | 影響範囲該当プラグインのみ |
| 言語を問わず提案を全部止めたい | 操作Disable all LSP recommendations | 影響範囲全言語 |
| 今回は見送るだけ | 操作No, not now(またはEsc) | 影響範囲次のセッションでまた出る |
| ダイアログの原因ごと消したい | 操作プラグインをインストールする | 影響範囲該当プラグインの提案が出なくなる |
最後の行は、出る条件の裏返しです。ダイアログは「バイナリがあり、プラグインが未導入」のときに出るので、Yes, installでプラグインを入れれば、そのプラグインについては条件が成立しなくなります。コードインテリジェンスが欲しくてバイナリを入れた人にとっては、これが自然な収まり方です。
一方、プラグインは要らないがバイナリは別の用途で入れている場合は、Never for this pluginか、全体を止める選択になります。無視を5回重ねる方法もありますが、意図が記録に残らず、あとで「なぜ出ないのか」が分かりにくくなります。止めたいなら明示的に選ぶ方が後から追えます。
止まったダイアログを復活させる手順
止まる原因は2系統あり、戻し方の対象が違います。設定は~/.claude.jsonにあります。これはClaude Code自身が書き込むファイルで、通常は手で編集する必要はありません。ここに残るキーが今回の対象です。
| 止まった理由 | 消すキー |
|---|---|
| Disable all LSP recommendationsを選んだ | 消すキーlspRecommendationDisabled と lspRecommendationIgnoredCount |
| 5回無視した | 消すキーlspRecommendationDisabled と lspRecommendationIgnoredCount |
| Never for this pluginを選んだ | 消すキーlspRecommendationNeverPluginsの一覧から、そのプラグインのname@marketplaceを消す |
公式の手順では、全体停止も5回無視も、この2つのキーを~/.claude.jsonから取り除けば元に戻ります。Neverを選んだプラグインは、同じファイルのlspRecommendationNeverPluginsリストからname@marketplace形式のIDを消します。
jqで安全に消す
手で編集してもよいのですが、JSONの括弧やカンマを壊しやすいので、jqで削除する例を示します。先にバックアップを取ってから実行します。
cp ~/.claude.json ~/.claude.json.bak
jq 'del(.lspRecommendationDisabled,
.lspRecommendationIgnoredCount)' \
~/.claude.json > /tmp/claude.json.new \
&& mv /tmp/claude.json.new ~/.claude.jsonNeverを選んだプラグインを戻したいときは、まず現在の一覧を確認します。
jq '.lspRecommendationNeverPlugins' ~/.claude.json一覧に出たtypescript-lsp@claude-plugins-officialのようなIDのうち、再び提案してほしいものだけを外します。次のコマンドは、指定したIDを一覧から除く例です(IDは自分の環境の表示に置き換えます)。
jq '.lspRecommendationNeverPlugins -=
["typescript-lsp@claude-plugins-official"]' \
~/.claude.json > /tmp/claude.json.new \
&& mv /tmp/claude.json.new ~/.claude.json~/.claude.jsonを壊してしまった場合の逃げ道も用意されています。Claude Codeはこのファイルが解析できないと、壊れたファイルを~/.claude/backups/.claude.json.corrupted.<timestamp>へ退避し、手で直して終了するか、既定の設定に戻すかを尋ねます。書き込みの前には直近のバックアップも~/.claude/backups/に残るので、直近5つの.claude.json.backup.<timestamp>から戻せます。ただし、この~/.claude.jsonには認証状態やMCPサーバーの設定も入っています。編集前に自分でコピーを取っておく方が安心です。
復活したかを確かめる
キーを消したら、次の流れで確認します。
- 言語サーバーのバイナリが
PATHにあり、対応するプラグインが未インストールであることを確認する(which typescript-language-serverなど) - 新しいセッションを始めて、そのバイナリに対応する拡張子のファイルをClaudeに編集させる
- LSP plugin recommendationが出れば復活している
ダイアログは1セッションにつき1回なので、出なかったときにすぐキーの消し忘れを疑わず、条件を順に見直します。プラグインが入っていないか、バイナリがPATHにあるかが先です。
Yes, installを選んだあとに確認すること
Yes, installは、プラグインをユーザーアカウント向けにインストールします。プロジェクト単位ではなく自分のアカウント全体に入るので、別のリポジトリでも同じ言語のファイルを編集すればプラグインが使われます。チームで揃えたい場合は、各自がこのダイアログで入れるのを待つより、プラグインのインストールと言語サーバーの導入をオンボーディング手順に書いておく方が確実です。
インストール直後は<plugin> installed · restart to applyと表示されるだけで、言語サーバーはまだ動いていません。動作確認は次の順で進めます。
- 新しいセッションを始める
- プラグインの拡張子に合うファイルを、Claudeに編集させる(型エラーをわざと入れさせて直させると分かりやすい)
- 編集の下に
Found N new diagnostic issues in M files (ctrl+o to expand)と出れば、サーバーは起動している - 出ないときは
/pluginのErrorsタブで、Executable not found in $PATHの行がないか見る
ダイアログの選択肢を決めるときは、30秒で閉じる点にも注意が要ります。判断を保留したいだけなら、放置ではなくNo, not nowかEscを押す方が、無視の回数を増やさずに済みます。放置を5回重ねると、望まないまま推奨が止まります。
出ないときの切り分け
ダイアログが出ない理由は、止まっている以外にもあります。
- プラグインをすでに入れている: 条件の前提が「プラグイン未インストール」なので、そもそも出ない
- バイナリが
PATHにない: 推奨はバイナリが入っていることが条件。claudeを起動したシェルのPATHで見つかる必要がある - クラウドセッションにつないでいる:
claude --cloudなどのクラウドセッションでは、ダイアログは出ない - 同じセッションで一度出ている: 1セッション1回。2回目を待っても出ない
- 対応する拡張子のプラグインがマーケットプレイスにない: 追加済みのマーケットプレイスのどれにも、その拡張子向けのプラグインがなければ提案対象がない
プラグインを入れたのに言語サーバーが動かないときは、ダイアログではなく別の問題です。/pluginのErrorsタブにExecutable not found in $PATH: "<binary>"が出ていれば、バイナリの導入から見直します。具体的な原因の切り分けは「No LSP server available」の原因と直し方にまとめています。
推奨を自分で仕込みたいとき
このダイアログは、PATHにあるバイナリを手がかりにClaude Code側が提案するしくみです。チームで「入れてほしいプラグインを最初から案内したい」場合は、別の手段になります。SessionStartフックでプラグインの推奨を出す方法はSessionStartフックによるプラグイン推奨で扱っています。
また、表にない言語のために自分でLSPサーバーを組み込むなら、.lsp.jsonを書くプラグインを作る経路があります。その手順はプラグインに独自のLSPサーバーを組み込むが詳しいです。
まとめ
LSP plugin recommendationダイアログは、言語サーバーのバイナリがあり、プラグインが未導入のときにセッションごと1回まで出ます。止まる経路は2つ。Disable all LSP recommendationsを選ぶか、30秒放置して無視を5回重ねるかです。どちらも~/.claude.jsonのlspRecommendationDisabledとlspRecommendationIgnoredCountを消せば戻ります。プラグイン単位で止めたNeverは、lspRecommendationNeverPluginsから該当IDを外します。
止める前に、コードインテリジェンスが要るかどうかを一度考える価値があります。要るならYes, installで入れるのが最も手数の少ない解決で、要らないならNeverか全体停止を明示的に選べば、あとから理由を追えます。