Claude CodeがWSLで重い・権限プロンプトが消えない——症状別に公式ドキュメントとGitHub Issueで原因を特定した

Claude CodeがWSLで重い・権限プロンプトが消えない——症状別に公式ドキュメントとGitHub Issueで原因を特定した

Claude CodeをWSL2で使うと応答開始まで1〜6分かかる、起動直後にフリーズする、settings.jsonの許可設定が効かない——症状別にGitHub Issueと公式ドキュメントの一次情報で原因を切り分け、対処法とネイティブWindows/WSLの選び方をまとめた。

エンジニアのゆとです。

Claude CodeをWSL2にインストールして、いざ使い始めたら「hello」と打つだけで応答が始まるまで数分かかる——という報告が、2026年に入ってからGitHub Issueにずっと積み上がっている。インストール自体は成功しているし、エラーメッセージも出ない。ただ、遅い。それも「気のせい」で片付けられるレベルではなく、1〜6分待たされるレベルで。

「claude code wsl どっち(ネイティブかWSLか)」で検索した人に向けて、今回はインストール手順の話ではなく、セットアップが終わった後に実際に踏む詰まりポイントを症状別に整理した。応答の異常な遅さ、起動直後のフリーズ、settings.jsonの許可設定が効かない問題——それぞれ別のGitHub Issueとして報告されていて、原因も対処の方向性もまったく違う。公式ドキュメントとGitHub Issueの一次情報をもとに、何が原因で、今どこまで直せて、どこは回避策しかないのかをまとめる。

インストール手順そのものは別記事で扱っているので、まだWSL2にClaude Codeを入れていない場合はそちらを先に読んでほしい。

Claude Code Windows完全ガイド 2026 — WSL・Git Bash・PowerShell徹底比較
Claude Code Windows完全ガイド 2026 — WSL・Git Bash・PowerShell徹底比較Claude CodeをWindowsで使う3つの方法(WSL/Git Bash/PowerShell)を徹底解説。インストール手順・パフォーマンス比較・トラブルシュート・各環境の使い分けを2026年最新情報で網羅。読む →

まず整理する — 「WSLで動かす」には2つの意味がある

本題に入る前に、混同しやすい前提を1つ潰しておく。「Claude CodeをWSLで使う」という言い方には、実は2つの別物が含まれている。

1つ目は、WSLのターミナルを開いて、そこで直接 claude コマンドを実行するやり方。CLIそのものがWSLディストリビューション内にインストールされていて、Linuxのプロセスとして動く。今回扱うトラブルの大半はこちらに関するものだ。

2つ目は、Claude Code Desktopアプリの「Code」タブが、WSL 2ディストリビューション内でセッションを実行する機能。Desktopアプリ自体はWindows上で動きつつ、セッションの中身(プロセス・ツール・git)はWSL側のLinux環境で処理される。

公式ドキュメントには、この2つ目のDesktopアプリ経由のWSLセッションについて、まだ使えない機能がはっきり明記されている。

code.claude.com
Claude Code Desktop in WSL - Claude Code Docs Desktopアプリの「Code」タブでWSL 2セッションを使う場合の要件と制限。統合ターミナル・コネクタ/プラグイン・セッションのフォーク・ファイルブラウザペイン・@でのファイルサジェストがまだ使えないと明記されている。

要件としては「WSL 2であること(WSL 1は非対応)」「ディストリビューション内に git が入っていること」の2点。組織管理下のデバイスでは、WSLセッション自体が管理者の判断で無効化されている場合もある。「WSLセッションが選べない・起動できない」という場合、まずここを疑うといい。

以降で扱う症状1〜4は、基本的に1つ目のCLI直接実行のケースを対象にしている。Desktopアプリ側の話は都度明記する。


症状1: プロンプトを送っても応答が始まるまで1〜6分かかる

これが今回いちばん厄介な症状だ。「hello」のような一言でも、思考フェーズ(応答が出力され始める前の待ち時間)だけで1〜6分かかる。トークンのストリーミング自体は始まってしまえば普通の速度で、遅いのは「始まるまで」の部分だけ、という特徴がある。

GitHub Issueを追うと、2026年1月末ごろから同種の報告が積み上がっていて、バージョンが進むごとに悪化していったことがわかる。

github.com
Extremely slow thinking/response time on WSL2 - works fine on native Linux · Issue #22855 2026年1月23日ごろから発生。安定版2.1.17は正常、最新チャネル2.1.29以降で思考フェーズだけが1〜6分に遅延。ネイティブLinuxでは同じアカウント・同じモデルで即座に応答する。
github.com
[BUG] Critical: WSL2 delay regression now unbearable · Issue #41649 2026年3月末時点での続報。2.1.17→2.1.29(1〜6分)→2.1.71(さらに悪化)→2.1.87(ほぼ使用不可)と、バージョンが進むごとに遅延が悪化した推移が記録されている。試行済みの対策(再インストール・Node.jsバージョン変更・キャッシュクリア等)はすべて失敗し、唯一有効だったのは2.1.17へのダウングレードのみ。

もう1つ興味深いのが、この遅延は「プロジェクトを /mnt/c/ ではなくWSLネイティブの /home/ 配下に置く」という、よくある高速化の定石を守っていても発生するという点だ。

github.com
Severe response delay (3–4 minutes) in WSL2 with VS Code Claude Code >= 2.0.74 · Issue #16429 プロジェクトを/home/配下(Linuxネイティブファイルシステム)に置いた状態でも、2.0.73以降で3〜4分の遅延が発生。2.0.72にダウングレードすると数秒の応答時間に戻ることが確認されている。

つまりこの遅延は、ファイルI/Oの話ではなく、WSL2環境そのものとClaude Codeの特定バージョンの組み合わせで起きる回帰(リグレッション)バグだ。3件ともAnthropic側からの直接の返信はなく「not planned」でクローズされている。2026年8月時点で、公式からの恒久的な修正は確認できていない。

対処法 — 現状は「ダウングレードして様子を見る」が唯一の実践的な手段

原因側の修正がまだない以上、できることは限られる。

  1. まず自分の症状が本当にこれに該当するか確認する。ネイティブLinux環境や、Windows側で claude doctor を実行して、同じアカウント・同じモデルで速度差があるかを見る
  2. 該当するなら、いったん安定していたバージョンにダウングレードする
# 特定バージョンを指定してインストール(WSL内で実行)
curl -fsSL https://claude.ai/install.sh | bash -s 2.1.17

# 現在のバージョンを確認
claude --version
  1. minimumVersion を設定していると意図せず新しいバージョンに戻されることがあるので、settings.jsonで自動更新のチャンネルも合わせて確認しておく
{
  "autoUpdatesChannel": "stable",
  "minimumVersion": "2.1.17"
}

"stable" チャンネルは、大きな回帰があったリリースをスキップする代わりに最新版より1週間ほど遅れる。最新機能を追いかけるより「動くこと」を優先するなら、WSL2ではこちらに寄せておいたほうが精神衛生上いい。


症状2: 起動直後にフリーズする・入力がガクつく

こちらは症状1とは別の話で、コマンド実行前のハングや、文字を打つたびにワンテンポ遅れる「スタッター」として報告されている。

原因として有力なのが、WSL側からWindowsの環境変数を都度取得する処理でPowerShellの呼び出しが挟まり、そのたびに待ち時間が発生しているというもの。Claude Codeコミュニティの検証記事に、具体的な回避策が載っている。

alessio.franceschelli.me
Fixing Claude Code slowness in WSL · Alessio Franceschelli WSL環境でClaude Codeの起動時フリーズ・コマンド実行前のハング・入力時のスタッターを、~/.bashrcにUSERPROFILE環境変数をあらかじめ解決してキャッシュしておく1行で緩和する方法を紹介している。

対処法として紹介されているのが、~/.bashrc(または ~/.zshrc)に1行追加して、WindowsのUSERPROFILEパスを起動時に一度だけ解決しておくというものだ。

# ~/.bashrc または ~/.zshrc に追記
export USERPROFILE=$(wslpath -u $(pwsh.exe -NoLogo -NoProfile -Command 'Write-Output ${env:USERPROFILE}'))

追記後は設定を読み込み直す。

source ~/.bashrc

念のため書いておくと、これはAnthropic公式の対処法ではなく、コミュニティが検証した回避策だ。効くかどうかは環境によって差があるので、まず自分の .bashrc のバックアップを取ってから試すのが安全。動作が変わらない・むしろ悪化した場合はすぐに戻せるようにしておく。


症状3: WSLのターミナルで実行しているのに、Windows側のバイナリが動いている

これは気づきにくい割に影響が大きい症状だ。WSLのネイティブターミナル(Ubuntu等)から claude を実行しているつもりが、実際にはGit Bash(MINGW64)経由でWindows側のバイナリが呼ばれてしまうケースが報告されている。

github.com
[BUG] WSL binary executes Bash commands through Windows instead of the environment it was started in · Issue #19653 WSLターミナルから claude を起動しても、uname -a がMINGW64_NT-10.0-19045を返すなどWindows側の環境として動いてしまう不具合。PATHにWSL内のツール(php, docker, composer等)が反映されず、ファイルウォッチャーもWindowsのUNCパス形式でエラーを起こす。Anthropicにより「not planned」でクローズ。

症状としては、作業ディレクトリが \\wsl.localhost\Ubuntu\home\... のようなUNCパス形式で表示される、git コマンドが「dubious ownership」エラーを出す、WSL内でインストールしたツール(php・docker・composerなど)にPATHが通っていない、といった形で現れる。ファイル監視まわりでは、こんなエラーも報告されている。

Error: EISDIR: illegal operation on a directory,
watch '//wsl.localhost/Ubuntu/home/<user>/repo/.claude'

確認方法

自分の環境がこれに該当するか、まず簡単なコマンドで切り分けられる。

# WSLのターミナルで実行して確認する
uname -a
# Linux ... と出ればWSLネイティブ、MINGW64_NT... と出ればWindows側が動いている

which claude
# パスがWSL内(/home/... や /usr/local/bin/claude)を指しているか確認

uname -a の結果がLinuxカーネルではなくMINGW64を返す場合、原因はClaude Code側のインストールの問題というより、WindowsとWSL両方にGit BashとWSL版のClaude Codeが混在していて、PATHの解決順序でWindows側が先に見つかっているケースが多い。この手のPATH競合・複数インストールの切り分け方は、別記事でOS横断で整理しているので、詳しく潰したい場合はそちらを参照してほしい。

Claude Codeで「command not found: claude」——インストールは成功してるのに動かない理由
Claude Codeで「command not found: claude」——インストールは成功してるのに動かない理由Claude Codeをインストールしたのに「command not found: claude」「is not recognized」と出る原因をPATH・複数インストールの競合・VS Code拡張機能の落とし穴に分けて解説。macOS/Linux/Windows別のコマンド付き。読む →

このIssueはAnthropic側で「not planned」としてクローズされているため、根本修正を待つより、WSL内で改めて公式インストーラーを実行し直し、.bashrc.profile でWindows側のパスをWSLのPATHより先に読み込んでいないか確認するのが現実的な対処になる。


症状4: settings.jsonの許可設定(allowlist)が効かず、毎回プロンプトが出る

.claude/settings.local.json にglobパターンで許可を書いても、WSL環境だと無視されて毎回「Yes, allow」を選び直す羽目になる、という報告もある。

github.com
Permission patterns not working on Windows/WSL - session-level allow ignored · Issue #18187 settings.local.jsonのEdit(**/*.md)・Write(**/*.ps1)等のglobパターンがWSL環境で無視され、毎回権限プロンプトが表示される。セッション中に「Yes, allow all edits during this session」を選んでも次のツール呼び出しでまた聞かれる。Bash()やSkill()のパターンは正常に動き、Edit()とWrite()のみ壊れているように見えると報告されている。

Desktopアプリ経由でWSLプロジェクトを開いた場合も、別の切り口で同様の問題が報告されている。

github.com
[BUG] Claude Code desktop ignores permission configurations for WSL projects · Issue #37192 Desktopアプリの設定ファイル(claudecode-settings.json)がUIの表示設定しか保持しておらず、簡易・詳細どちらの権限設定もWSLプロジェクトに対して反映されない不具合。ファイル操作のたびに承認を求められる状態になる。

この2件も「not planned」でクローズ済みで、globパターンのマッチャーがWSL/Windowsのパス形式との組み合わせでうまく動いていない可能性が高いと推測されている(Issue内のコメントでの推測であり、Anthropicによる原因の確定情報ではない)。

対処法と注意点

Issue内で紹介されている回避策は --dangerously-skip-permissions フラグだが、これは名前の通り「危険」なオプションだ。

claude --model sonnet --dangerously-skip-permissions

このフラグを使うと、破壊的なコマンドも含めてすべての確認プロンプトがスキップされる。Issue報告者自身も「Git管理下にあるコード、かつ単一開発者の環境限定で推奨」と注釈をつけている。チーム開発や、機密情報を扱うプロジェクトでは避けたほうがいい。

許可設定そのものの基本的な考え方(allowlistの設計・スコープの使い分け)は別記事でまとめている。WSL特有の不具合を踏まえた上で、それでも安全に運用したい場合の設計の参考にしてほしい。

Claude Codeのパーミッションプロンプトを設計する——allowlistとsettings.jsonで確認頻度を最適化する
Claude Codeのパーミッションプロンプトを設計する——allowlistとsettings.jsonで確認頻度を最適化するClaude Codeのパーミッションプロンプトが頻繁に出て作業が止まる問題を解決する。settings.jsonのallowlist設定、プロジェクト別権限とグローバル権限の使い分け、危険コマンドは残しつつ安全なコマンドを通す設計パターンを実装例付きで解説。読む →

現実的な落としどころとしては、--dangerously-skip-permissions を常用するのではなく、作業内容を絞った短いセッション単位でだけ使う、あるいは信頼できるコマンドだけを Bash() パターンで許可する(こちらは動作報告があるパターン)に寄せる、といった運用でリスクを下げるのが現実的だ。


症状5: /mnt/c/ 配下のプロジェクトを開くと重い・ファイル監視が壊れる

これは他の症状と違って、Anthropic公式ドキュメントに明記されている「仕様」だ。

code.claude.com
Claude Code Desktop in WSL - Claude Code Docs 「リポジトリがディストリビューションのファイルシステム内にある場合にWSLセッションを使うこと。Windows側からそれらのファイルを操作するとネットワークファイルシステムを経由するため遅く、ファイル監視も壊れる」と明記されている。

つまり C:\Users\...\project/mnt/c/Users/.../project としてWSLからマウントして開く構成そのものが、遅さとファイル監視の不安定さの原因になる。これは症状1(バージョン起因の回帰)とは別問題で、こちらはプロジェクトの置き場所を変えるだけで解決する

対処は明確で、プロジェクトをWSLのネイティブファイルシステム(~/projects/ など)に置き直すこと。この構成でのセットアップ手順・Windows側からのアクセス方法は別記事に詳しく書いてあるので、まだ /mnt/c/ 配下で運用している場合はそちらを参照して移行してほしい。

Claude Code Windows完全ガイド 2026 — WSL・Git Bash・PowerShell徹底比較
Claude Code Windows完全ガイド 2026 — WSL・Git Bash・PowerShell徹底比較Claude CodeをWindowsで使う3つの方法(WSL/Git Bash/PowerShell)を徹底解説。インストール手順・パフォーマンス比較・トラブルシュート・各環境の使い分けを2026年最新情報で網羅。読む →

Native Windows・WSL2・WSL1、結局どれを選ぶべきか

ここまで読んで「じゃあWSLはやめてネイティブWindowsにすべきでは」と思った人もいるはずだ。公式ドキュメントの比較表を見ると、判断材料はシンプルに整理されている。

選択肢必要な準備サンドボックス向いている用途
Native Windows不要(Git for Windowsは任意)非対応Windowsネイティブなプロジェクト・ツール
WSL 2WSL 2の有効化対応Linuxツールチェーン、サンドボックス実行が必要な場合
WSL 1WSL 1の有効化非対応WSL 2が使えない環境の代替

サンドボックス機能(コマンド実行を隔離環境で行う機能)が必要かどうかが、実質的な分岐点だ。今回扱ったような遅延・フリーズ・許可設定の不具合は、現状すべてWSL2側で報告されているものであり、ネイティブWindowsであればそもそも遭遇しない症状も含まれる。

とはいえ、Linuxツールチェーンに依存するプロジェクト(Dockerを多用する、本番がLinuxサーバー、等)では、ネイティブWindowsに逃げると別の非互換性に直面する。「WSLのバグを避けるためにネイティブに戻す」と「本番環境に近いLinux環境で開発する」のどちらを優先するかは、プロジェクトの性質次第で答えが変わる。


恒久対策・チェックリスト

その場しのぎだけでなく、詰まった時に順番に確認できるチェックリストとしてまとめておく。

  1. まず claude doctor でインストール状態と設定ファイルの妥当性を確認する
  2. 応答が異常に遅い場合、ネイティブLinuxや別環境と速度を比較し、症状1に該当するか切り分ける。該当するなら autoUpdatesChannel: "stable" への切り替えとダウングレードを検討する
  3. 起動時のフリーズ・入力のスタッターがあれば、USERPROFILE解決の回避策を試す前に、まず .bashrc のバックアップを取っておく
  4. uname -a でWSLネイティブとして動いているか確認する。MINGW64が返る場合はPATHの競合を疑う
  5. 許可プロンプトが毎回出る場合、--dangerously-skip-permissions は用途を限定してから使う
  6. プロジェクトが /mnt/c/ 配下にある場合は、WSLネイティブファイルシステムへの移行を検討する
# 診断コマンドをまとめて実行する
claude --version
claude doctor
uname -a
which claude

FAQ

WSL1でも動く?

動くが、公式には非推奨で、サンドボックス機能も使えない。過去には Exec format error が出て起動できないケースも報告されていた。WSL1を使っている場合は、可能な限りWSL2への移行を検討したほうがいい。

wsl --set-version Ubuntu 2

結局、WSL2でClaude Codeを使うのはやめたほうがいい?

そこまでは言えない。今回扱った遅延・フリーズ系のバグは深刻だが、症状1・症状2に該当しない環境では快適に動いている報告も多い。まず自分の症状がどのパターンに当てはまるかを切り分けてから判断するのが遠回りに見えて早い。Linux依存のプロジェクトであれば、多少の不具合を抱えてでもWSL2を使う価値はある。

Desktopアプリ経由のWSLセッションでできないことは?

公式ドキュメントには、統合ターミナル・コネクタとプラグイン・セッションのフォーク・ファイルブラウザペイン・コンポーザーでの @ によるファイルサジェストの5つが、まだWSLセッションでは使えないと明記されている。これらの機能が必要な場合は、WSLのターミナルから直接CLIを起動する構成のほうが今のところ機能が揃っている。

claude doctor の結果はどう読めばいい?

インストール状態・設定ファイルの妥当性・直近の自動更新結果を、セッションを開始せずに確認できる診断コマンドだ。読み取り専用なので、症状の原因を疑うたびにとりあえず実行して損はない。警告が出た場合は、そこに書かれている修正案から順に試すのが最短ルートになる。


まとめ

Claude CodeのWSL関連トラブルは、1つの原因にまとめられるものではなく、バージョン起因の応答遅延・環境変数解決によるフリーズ・PATH競合によるWindows側バイナリの誤実行・許可設定のバグ・ファイルシステム配置の問題と、性質の異なる複数の不具合が別々に報告されている状態だ。

「WSLで重い」と感じたら、まず claude doctoruname -a で状態を確認し、症状1〜5のどれに近いかを切り分ける。バージョン起因のものはダウングレードと stable チャンネルへの切り替えが現状の最善策で、ファイル配置起因のものは /home/ 配下への移動で確実に直る。この2つを混同したまま対処すると、直る問題も直らなくなる。

github.com
anthropics/claude-code Issues 「wsl」で検索すると、今回扱った以外の関連報告や、その後の状況更新が見つかることがある。同じ症状に心当たりがあれば、既存Issueにコメントで環境情報を追加すると優先度が上がりやすい。
← 記事一覧に戻る