🍣

「Shell Integration Unavailable」によりVS Code 1.99でClineが動かない問題の解決法

に公開

株式会社ジェイテックジャパンの高丘です。日頃からVS CodeとClineというAIアシスタントを活用して開発をしています。

TL;DR (結論から)

VS Code 1.99以降でClineのターミナル統合が動かなくなった場合、~/.zshrc に以下の1行を追加することで解決できます:

[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)"

これによりシェル統合が手動でインストールされ、Clineがターミナルコマンドを正しく読み取れるようになります。

問題の発生

今日、作業中に突然"Shell Integration Unavailable"というメッセージが出て、Clineでターミナルのコマンドを読み取れなくなりました。

Shell Integration Unavailable

動作としては、Clineがコンソールが実行される前にコマンドの読み取りを終了してしまい、コンソールの結果を読んでいない状態でした。

原因の調査

問題解決のために以下の手順で調査しました:

  1. VS Codeのバージョンを1つ戻す試み → 解決せず
  2. Clineのバージョンを変更する試み → 解決せず
  3. ClineのDiscordコミュニティで調査 → 同じ問題を報告している人が複数いることを確認
  4. 開発者とのチャット → 直接の解決策は見つからず
  5. Clineのソースコード確認

コードレベルでの原因特定

Clineのソースコードを調査したところ、以下の実装を発見しました:

https://github.com/cline/cline/blob/30857e969ef26fdd43df6a893dd4dd5d261abd47/src/integrations/terminal/TerminalProcess.ts#L31-L32

Clineはterminal.shellIntegration.executeCommandというVS Code拡張機能のAPIを使用していることがわかりました。

VS Codeの最新アップデート情報を確認したところ、バージョン1.99で以下の変更がありました:
https://code.visualstudio.com/updates/v1_99#_terminalshellintegration-tweaks

GitHub Copilot Agentの動作のためにterminal.shellIntegration.executeCommandに修正が加えられており、これがClineの動作に影響していたのです。

解決策

一時的な解決策

VS Codeのバージョンを1.98.2に戻すことで問題が解消することを確認しました。

恒久的な解決策

最新のVS Codeを使いながらClineを動作させるために、VS Codeの公式ドキュメントを参照しました:
https://code.visualstudio.com/docs/terminal/shell-integration#_manual-installation

ここで紹介されている「シェル統合の手動インストール」を実行することで問題を解決できます。

手順は非常に簡単です:

  1. ~/.zshrcファイルを開きます
  2. 以下の行を追加します:
[[ "$TERM_PROGRAM" == "vscode" ]] && . "$(code --locate-shell-integration-path zsh)"
  1. VS Codeを再起動します

この設定により、VS Codeの統合ターミナルでzshを使用する際に、シェル統合機能が正しく動作するようになります。特に、ターミナルコマンド実行時の結果がClineに正しく取得される問題が解消されます。

まとめ

今回の問題を通じて、Clineのようなターミナル統合型AIアシスタントが開発ワークフローにとって重要なツールであることを実感しました。

解決策の要点:

  1. 最新のVS Code更新によりシェル統合の仕組みが変更された
  2. Clineのような拡張機能が影響を受けた
  3. シェル統合の手動設定で問題を解決できた

Discord上のサポートも親切でしたが、最終的には自分で調査して解決策を見つけることができました。同様の問題に直面している開発者にとって、この記事が役立つことを願っています。

ジェイテックジャパンブログ

Discussion