VSCodeのwsl$警告がAllowしても毎回出る原因と正しい解決方法
VSCodeのwsl$警告がAllowしても毎回出る原因と正しい解決方法
VSCodeを開くたびに出るwsl$の警告は、security.allowedUNCHosts の設定で永続解決できます。
「Allow」を押しても次に開いたときにまた出てくる、という状態になっていませんでしたか。私も同じ状況で何度もダイアログを閉じ続けました。原因はVSCodeのUNCホスト制限というセキュリティ仕様で、設定ファイルに1行追加するだけで二度と出なくなります。この記事でその手順と、WSLにプロジェクトを移動した背景もあわせて整理します。
---
エラーの具体的な状況
WSL上にあるプロジェクトをVSCodeで開いたとき、以下のようなダイアログが表示されます。
The host 'wsl$' was not found in the list of allowed hosts.
Do you want to allow it anyway?
The path '\\wsl$\Ubuntu\home\uracc\bizinets-life\...' uses a host that is not allowed.
Unless you trust the host, you should press 'Cancel'
□ Permanently allow host 'wsl$' [Allow] [Learn More] [Cancel]「Permanently allow host 'wsl$'」というチェックボックスがあるので、チェックを入れてAllowを押せば解決するはずです。しかし私の環境ではチェックを入れたつもりでもVSCodeを再起動するたびに同じダイアログが再表示されました。
WSLのホームディレクトリ(~/)にプロジェクトを移動したあと、このパスを経由してVSCodeで開くようになったタイミングから発生し始めました。
---
wsl$警告がVSCodeで毎回出る原因(UNCホスト制限の仕様)
VSCodeはUNCパス(\\wsl$\... のような形式)を開くとき、そのホストが許可リストに含まれているかどうかをチェックします。これはUNCホスト制限と呼ばれるネットワーク経由のファイルアクセスに対するセキュリティ機能で、悪意のあるホストへの接続を防ぐ目的があります。VSCode 1.64以降で導入された機能で、security.allowedUNCHosts に登録されていないホストは開くたびに警告が出る仕様になっています。
wsl$ はWSLのファイルシステムにWindowsからアクセスするための仮想ホスト名です。Windowsのエクスプローラーやアプリから \\wsl$\Ubuntu\... のパスでLinux側のファイルにアクセスするときに使われます。
つまり、WSL上のプロジェクトをWindowsのVSCodeで開いているとき、内部的には \\wsl$\... というUNCパスが使われているため、このチェックが走るのです。
ダイアログのチェックボックスで「Permanently allow」を選んでも反映されないケースがあるのは、設定の書き込み先がうまく機能していないことが原因のようです。手動でsettings.jsonに追記するほうが確実です。
---
間違いやすい設定(localFileSyncは関係ない)
ネットで検索すると localFileSync.allowedHosts という設定を追記する解決策が出てくることがあります。しかしこれは別の拡張機能(Live Share等)に関連する設定であり、今回のwsl$警告には効果がありません。
私も最初にこの設定を試しましたが、警告は消えませんでした。混乱しやすいポイントなので注意してください。
正しい設定キーは security.allowedUNCHosts です。
---
正しい解決方法(allowedUNCHostsの設定手順)
VSCodeのユーザー設定(settings.json)に以下を追記します。
手順:
- VSCodeで
Ctrl+Shift+Pを押してコマンドパレットを開く Open User Settings (JSON)と入力して選択する- 開いた
settings.jsonに以下を追記する
"security.allowedUNCHosts": [
"wsl$",
"wsl.localhost"
]wsl$ はWindowsからWSLにアクセスする際の従来の仮想ホスト名です。wsl.localhost はWindows 11以降で追加された新しいパス形式で、両方追加しておくことで環境の違いによる再発を防げます。
- ファイルを保存してVSCodeを再起動する
再起動後、同じプロジェクトを開いてもダイアログが表示されなくなっていれば設定完了です。私の環境ではこれで完全に解決しました。
判断基準:
localFileSync.allowedHostsを設定したが警告が消えない →security.allowedUNCHostsに変更するwsl$だけ追加したが再発する →wsl.localhostも追加する
---
WSLにフォルダを移動して得られたもの(build高速化)
今回wsl$警告が出るようになったきっかけは、プロジェクトをWSLのホームディレクトリに移動したことでした。移動前は C:\Users\uracc\Desktop\bizinets-life というWindowsのパスに置いていました。
移動の目的はnpm buildの高速化です。移動前の環境では npm install や npm run build がとにかく遅く、また何度buildしても変更が反映されないという問題も起きていました。
原因はファイルシステムの違いにありました。/mnt/c/ 配下にプロジェクトを置いた状態でWSLからビルドすると、WindowsのNTFSファイルシステムをWSLが変換しながらアクセスするため、I/Oに大きなオーバーヘッドが発生します。node_modules のように小さなファイルが大量にあるプロジェクトでは、この差が特に顕著に出ます。
WSLのホームディレクトリ(~/)はLinuxネイティブのファイルシステム(ext4)で動くため、I/Oが直接行われます。移動後、npm install と npm run build の体感速度が明らかに変わりました。現時点では計測した数値はありませんが、「遅い」という感覚がなくなったのは確かです。
さらに、移動前は別のトラブルも起きていました。WindowsのPowerShellで誤って npm install を実行してしまうと、Windowsバイナリで node_modules が上書きされ、WSLからビルドしたときに以下のエラーが出るようになっていたのです。
Error: Cannot find module '../lightningcss.linux-x64-gnu.node'これはLinux用のバイナリが存在しないことが原因です。WSL側のホームディレクトリに移動してからは、このエラーも完全に出なくなりました。WindowsのPowerShellからはそもそもアクセスしにくい場所になったためです。
移動コマンドはこれだけです。
mv /mnt/c/Users/uracc/Desktop/bizinets-life ~/bizinets-life
cd ~/bizinets-life
npm install
npm run build && npm run deploy---
この後どうなったか(継続記録)
security.allowedUNCHosts の設定追加後、VSCodeを開くたびのダイアログは完全に消えました。WSLのホームディレクトリ上のプロジェクトをVSCodeで開く作業が、ストレスなくできるようになっています。
build速度については、現在も同じ構成で運用を続けています。Cloudflareへのデプロイまで含めた一連の作業が、以前より快適に回っています。次のステップとして、GSCデータをもとにした改善サイクルの自動化も進める予定です。
---
よくある質問
Q:チェックボックスにチェックを入れてAllowを押したのに毎回警告が出ます
settings.jsonへの書き込みがうまくいっていない可能性があります。この記事の手順通りに security.allowedUNCHosts を手動で追記してみてください。ダイアログからの設定より手動追記のほうが確実に反映されます。
Q:wsl$とwsl.localhostの両方が必要ですか
環境によってどちらのパス形式が使われるかが変わります。Windows 10では wsl$ が主に使われ、Windows 11では wsl.localhost も使われるようになっています。両方追加しておくほうが安全です。
Q:wsl.localhostは何ですか、wsl$と何が違いますか
どちらもWSLのファイルシステムにWindowsからアクセスするためのパス形式ですが、導入時期が異なります。wsl$ はWindows 10から使われてきた従来形式で、wsl.localhost はWindows 11で導入された新しい形式です。security.allowedUNCHosts には両方を追加しておくことで、Windowsバージョンを問わず再発を防げます。
Q:プロジェクトをWSLに移動するとWindowsから編集できなくなりますか
エクスプローラーのアドレスバーに \\wsl$\Ubuntu\home\uracc\ と入力するとWSLのホームディレクトリが表示されます。普通のフォルダと同じように開いて編集できます。またVSCodeで code ~/bizinets-life を実行するとWSLリモート接続でプロジェクトが開き、通常通り編集できます。
Q:WSLに移動すると別のトラブルが起きませんか
WSLに移動することでnpm buildの高速化やWindowsバイナリ混入の防止といった副産物が得られます。wsl$警告はこの記事の手順で解決できます。Cloudflare PagesへのデプロイをWSLから行う手順については、CloudflareデプロイがWindowsで失敗する→WSLで解決した手順で整理しています。
Q:ChunkLoadErrorと関係がありますか
wsl$警告自体はChunkLoadErrorとは直接の関係はありません。ただしWSL環境でビルドが正しく出力されない場合、間接的に関係することがあります。ChunkLoadErrorがキャッシュクリアで直らない理由と本当の対処法もあわせて確認してみてください。
---
まとめ
VSCodeのwsl$警告は security.allowedUNCHosts に wsl$ と wsl.localhost を追加することで永続解決できます。localFileSync.allowedHosts は別機能の設定なので混同しないよう注意してください。
今日できる一歩は、VSCodeで Ctrl+Shift+P → Open User Settings (JSON) を開いて、security.allowedUNCHosts の設定を追記することです。再起動後にダイアログが消えていれば完了です。
この警告が出るようになったきっかけがWSLへのプロジェクト移動だったとしたら、移動自体は正しい判断です。build速度の改善とバイナリ混入トラブルの解消という副産物も得られています。環境の設計をどう判断するかについては、bizinets.biz の判断軸のページで整理しています。判断軸について
bizinets.biz
記事を読んで「もっと知りたい」と思ったあなたへ
bizinets.biz では、ビジネスの仕組みづくりを体系的に学べるコンテンツを用意しています。まずは一度、覗いてみてください。
bizinets.biz へ行く →