Claude CodeのdevcontainerでJetBrains連携が効かないとき
JetBrains Gateway経由のdevcontainerで /ideが「No available IDEs detected」になる報告の症状、報告者が突き止めた経路、設定でできる切り分けをまとめます。
JetBrains Gatewayでdevcontainerを開き、コンテナ内のターミナルで claude を起動して /ide を打つと、「No available IDEs detected. Please install the plugin and restart your IDE」と返される報告があります。プラグインは入っていて、Claudeアイコンからターミナルも開くのに、エディタの選択範囲がClaude Codeに届きません。
報告されているのは、プラグインがClaude Code側のポートへ接続を試みていないように見える状態です。この記事では、その症状の見分け方、報告者の調査で分かっていること、設定でできる切り分けを並べます。修正が入ったという記載はなく、確実な直し方も示されていません。
どんな構成で起きているか
報告(anthropics/claude-codeのissue #97755)の環境は次のとおりです。
- IntelliJ IDEA 2026.1.2、プラグインは
com.anthropic.code.pluginの0.1.14-beta - JetBrains Gateway経由のRemote Developmentで、devcontainerを開く
- コンテナのベースイメージは
mcr.microsoft.com/devcontainers/base:ubuntu - Claude Code用のdevcontainer featureとして
ghcr.io/anthropics/devcontainer-features/claude-code:1.0を指定 - コンテナは
--network=hostで動かしている
報告者は devcontainer.json に、featureと、JetBrains用のプラグイン指定の両方を書いています。
{
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {}
},
"customizations": {
"jetbrains": {
"backend": "IntelliJ",
"plugins": ["com.anthropic.code.plugin"]
}
}
}報告のバージョン欄には、CLIが2.1.283と書かれています。環境欄の2.1.165とは食い違っており、どちらの版で確かめた結果かは報告から読み取れません。
見える症状は3つ
報告に書かれた症状は次のとおりです。
/ideが「No available IDEs detected」になる- IntelliJで選択したテキストが、Claude Codeのターミナルに渡らない
- Claudeアイコンはターミナルを正しく開くが、プラグインとClaude Codeの間にSSE接続が張られない
3つ目は、プラグインの中核機能が止まっていることを意味します。JetBrains版のドキュメントは、現在の選択範囲やタブがClaude Codeに自動で共有され、差分もIDEの差分ビューアで開くと説明しています。接続が成立しなければ、これらは動きません。
報告者が確かめた事実
報告者は、どこまで正常でどこから失敗するかを切り分けています。
報告で正常だった点と失敗した点
正常に動いていた
- プラグインはホスト側のIDEで有効(
idea.logで確認) - Claudeアイコンから開いたターミナルに
CLAUDE_CODE_SSE_PORT=40417とENABLE_IDE_INTEGRATION=trueが入る - Claude Codeは割り当てられたポートでlistenする(
ss -tlnpで確認) curl localhost:40417が400 Bad Requestを返す
失敗していた
- プラグインのログに、接続の試行もエラーも残らない
ss -tnpで、そのポートへの確立済み接続がセッション中ずっと0件- 残るプラグインのログはマーケットプレイスの更新確認だけ
ポートは開いていて、ホストとコンテナの間にネットワークの隔離もありません。それでもプラグインは接続を試みないので、ネットワークの設定不足とは考えにくい、というのが報告者の見立てです。
報告者の仮説: IJentの経路に動的ポートが載らない
原因について、報告者は仮説を書いています。確定した事実ではありません。
仮説の骨子はこうです。JetBrains Remote Developmentでは、プラグインのコードはホスト側で動きます。コンテナとのやり取りは、localhost への直接のTCP接続ではなく、IJentというリモート実行エージェントのトンネルを通ります。--network=host でも、この経路は変わらないという見立てです。
根拠として挙がっているのは、別のセッションの idea.log です。コンテナの再構築中に、OpenClaudeInTerminalAction を最後の操作として「Remote Execution Agent」がプラグインの原因と記録され、IjentUnavailableException$CommunicationFailure: Connection to IJent suddenly terminated が出ていました。これを、プラグインがIJentを通信の土台にしている証拠として読んでいます。
IJent経由のポート到達には、ポートを明示的に登録する必要があります。ところがSSEポートはセッションごとに動的に決まるため、devcontainer.json の forwardPorts に書けません。登録されないままトンネルができず、プラグインが黙って接続に失敗する、という筋書きです。
この筋書きが正しいとすると、プラグイン側の修正が要ります。報告者の提案は、devcontainer内で動いていることを検出し(DEVCONTAINER_CONFIG_PATH の有無やIJentの存在)、SSEポートを選んでIJentに登録してから環境変数を端末に渡す、というものです。
報告に書かれたもう一点は、featureの側にJetBrains用の設定がないことです。claude-code:1.0 のfeatureが追加するカスタマイズはVS Code向けだけで、JetBrainsのプラグインは自動では入らないため、利用者が customizations.jetbrains.plugins を自分で書く必要があります。devcontainerのドキュメントにも、VS Codeで開いたときにfeatureが拡張機能を追加し、ほかのエディタはその部分を無視する、とあります。
手元で状態を確かめる
報告者の切り分けは、自分の環境でもそのまま再現できます。コンテナ内のターミナル(Claudeアイコンから開いたもの)で、上から順に確認します。
# 1. プラグインが環境変数を渡しているか
echo "$CLAUDE_CODE_SSE_PORT" "$ENABLE_IDE_INTEGRATION"
# 2. lockファイルがあるか(CLAUDE_CONFIG_DIR 設定時はそちらの ide/)
ls -l ~/.claude/ide/
# 3. ポートをlistenしているか、接続が張られているか
PORT="$CLAUDE_CODE_SSE_PORT"
ss -tlnp | grep "$PORT"
ss -tnp | grep "$PORT"見方は次のとおりです。
- 1で値が空なら、Claudeアイコンではなく別の方法で開いたターミナルです。アイコンから開き直します
- 3の
ss -tlnpに行が出るのに、ss -tnpが無出力なら、報告と同じ状態です。リッスンはあるのに誰も接続していません - 2のlockファイルは、ドキュメントがIDE側の認証トークンの置き場所として説明しているものです。プラグインがlockファイルを作っているかどうかが、プラグインの動作確認の材料になります
lockファイルの中のトークンは、接続の認証に使われます。貼り付けて報告するときは、値を伏せてください。
設定で試せること
JetBrains版のドキュメントには、devcontainerを名指しした対処がありません。次の項目は、IDE接続の一般的な切り分けとして使えるものです。報告された症状が直るという記載はありません。
| 試すこと | ドキュメントでの位置づけ | この症状への期待 |
|---|---|---|
| プラグインをリモートホスト側に入れる | ドキュメントでの位置づけリモート開発ではSettings → Plugin (Host)から入れる | この症状への期待入れ先が違うと機能しない。報告者は有効を確認済み |
| IDEの完全再起動 | ドキュメントでの位置づけ「複数回必要なこともある」 | この症状への期待報告者の状態では効果の記載なし |
CLAUDE_CODE_AUTO_CONNECT_IDE=true | ドキュメントでの位置づけ自動検出が失敗するときに接続試行を強制する | この症状への期待プラグインが接続元なので効かない可能性が高い |
CLAUDE_CODE_IDE_SKIP_VALID_CHECK=1 | ドキュメントでの位置づけlockファイルの検証を飛ばす | この症状への期待lockファイルが無いなら意味がない |
| Accept connections from all network interfaces | ドキュメントでの位置づけループバックで届かないリモートIDE向けの設定 | この症状への期待報告ではループバックの到達性は問題でない |
一つ目の入れ先は、警告として書かれています。Remote Developmentでは、手元のクライアント側ではなくリモートホスト側にプラグインを入れます。報告者が書いた customizations.jetbrains.plugins も、同じ入れ先にプラグインを入れる指定です。
環境変数の CLAUDE_CODE_AUTO_CONNECT_IDE と CLAUDE_CODE_IDE_SKIP_VALID_CHECK は、環境変数の一覧に説明があります。ただし、これらはCLI側が接続を試みる経路の調整です。今回の報告で問題とされているのは、プラグインが接続元として動いていないことなので、効くかどうかは未検証です。試すなら、1つずつ変えて /ide の結果を見ます。
「Accept connections from all network interfaces」は注意が必要です。ドキュメントは、これを有効にするとIDEのMCPポートがローカルネットワークから到達できるようになり、通信もトークンも平文のまま流れると警告しています。WSL2やリモートIDEのようにループバックで届かない場合の設定で、今回のように localhost でポートへ届く環境で有効にする理由はありません。
現実的な使い方の選択肢
接続が成立しない間も、Claude Code自体は動きます。IDE連携で得られるのは、選択範囲の共有、差分のIDE表示、ファイル参照のショートカット、診断情報の共有です。これらを手動で補う形になります。
IDE連携なしで作業を続ける3通り
差分はターミナルで見る
/configのDiff toolは、IDEに接続しているときだけ表示される項目です。接続できない間はターミナル表示のままなので、レビューはgit diffと併用します。ファイルは手で参照する
@src/auth.ts#L1-99の形式は手入力でも使えます。ショートカットで挿入する代わりに、パスと行範囲を自分で書きます。診断はコマンドで返す
getDiagnosticsが使えないので、リンターや型チェックのコマンドをClaudeに実行させ、出力を読ませる運用に寄せます。
ホスト側のターミナルでClaude Codeを動かす選択もあります。この場合、コマンドの実行先がコンテナではなくホストになります。コンテナを使う目的は環境の統一と隔離なので、隔離を保ちたいチームでは選べません。devcontainerでの隔離の設計は、Claude CodeをDevContainerで安全に動かす完全実装にまとめています。
似た症状との見分け
「No available IDEs detected」は、原因が複数ある同じメッセージです。まず自分の環境がどれかを確かめます。
| 状況 | 見るところ | 参照先 |
|---|---|---|
| devcontainerで、環境変数は入るがlockファイルや接続が無い | 見るところss -tnp の確立済み接続 | 参照先この記事 |
| WSL2でWindows側のIDEに繋がらない | 見るところNATネットワーク、Windowsファイアウォール | 参照先JetBrainsプラグインの導入と設定 |
| WSLなしのWindowsで、IDEは見つかるのに除外される | 見るところlockファイルの workspaceFolders が /mnt/c/ 形式 | 参照先RiderがWSLパスを返すとき |
| VS Code側のCodespacesで開発している | 見るところVS Code拡張の経路 | 参照先Claude Code Codespacesの始め方 |
Rider側の不具合は、lockファイルの内容が原因の見分けどころでした。devcontainerの報告は逆で、接続試行そのものがログに現れない点が特徴です。
報告の状況
issue #97755は、2026年9月28日に作成された未解決の報告です。ラベルは bug、has repro、platform:linux、area:ide、platform:intellij が付いています。報告者は、2026年7月13日にクローズされた先行のissue(#65914)と同じ内容を、再度起票したと書いています。クローズ後も症状が続いたという意味です。
コメントは1件で、同じ症状が続いているという別の利用者の確認です。Anthropicからの返信や、修正版の予告は書かれていません。
プラグインの更新は、自動更新の設定を有効にしておくと再起動時に適用されます。設定はSettings → Tools → Claude Code [Beta]のEnable automatic updatesです。更新後に症状が変わったかは、ss -tnp で確立済み接続が現れるかどうかで判断できます。
報告に追記するときの情報
同じ症状に当たったときは、既存のissueへ追記すると、同じ再現手順が分散しません。次の項目を揃えておきます。
- IDEの名前とビルド番号、プラグインの版
claude --versionの出力customizations.jetbrainsとfeaturesを含むdevcontainer.json- 起動に使った方法(JetBrains Gateway、ローカルのdevcontainer、ほか)
echo "$CLAUDE_CODE_SSE_PORT"とss -tnpの出力idea.logの、com.anthropicを含む行
まとめ
JetBrains Gatewayのdevcontainerで /ide が失敗する報告は、環境変数もポートも正常で、プラグインが接続を試みない状態です。原因の仮説はIJent経路に動的ポートが登録されないことで、報告者自身が検証した結論ではありません。修正前の確実な直し方はなく、当面はIDE連携なしで進める形になります。
自分の環境で最初にやることは、ss -tnp で接続の有無を見ることです。接続が無ければ、設定の工夫では動かない可能性が高く、プラグイン側の修正を待つ状態です。IDE内蔵のMCPサーバーがどんな仕組みで認証しているかは、IDE内蔵MCPサーバーのセキュリティモデルに詳しく書いています。