背景
ある日、デスクトップ PC の VS Code を開いたら設定同期のステータスが「最終同期:4 か月前」になっていた。
ノート PC はちゃんと同期できているのに、デスクトップだけ止まってる。しかも同期を有効にしようとすると:
設定の同期を有効にするときにエラーが発生しました。使用可能なアカウントはありません
ってなって、どうにもサインインできない状態だった。
Office 365 も Azure も普通に使えてるし、アカウント自体は生きてる。なんなら Outlook も GitHub Copilot も動いてる。それなのになぜ…という感じでハマった。
気になる点として、Azure 無償枠で作成した Microsoft アカウントの 365 ライセンスが Outlook のログインを邪魔してくることがあって、それが関係してそうな気もしていた。
概要(TL;DR)
- VS Code のログに
Suspended until auth token is availableと記録されていた - VS Code 1.109+ は Windows の認証に WAM(Web Account Manager) を使う
- 複数の Microsoft アカウントが混在する環境では WAM が「使えるアカウントがない」と判定することがある
-
microsoft-authentication.implementationを"msal-no-broker"にするとブラウザ経由の認証に切り替わり、解決できる
詳細
1. ログで原因を特定する
まず VS Code の同期ログを確認する。PowerShell で最新のログを探す:
# 最新ログディレクトリを特定
Get-ChildItem "$env:APPDATA\Code\logs" -Directory | Sort-Object LastWriteTime -Descending | Select-Object -First 5
# userDataSync.log の末尾を確認
Get-Content "$env:APPDATA\Code\logs\<最新フォルダ名>\userDataSync.log" -Tail 20
ログの末尾にこう書いてあった:
[AutoSync] Enabled.
[AutoSync] Suspended until auth token is available.
「auth token が取得できるまで一時停止」。つまり、サインイン自体ができていない状態だった。
2. Windows の資格情報マネージャーを確認する
VS Code や Microsoft 関連のトークンが残っていないか確認:
cmdkey /list | Select-String -Pattern "vscode|microsoft|live|msal|azure" -CaseSensitive:$false
VS Code 用の Microsoft 認証トークンが存在しなかった。資格情報マネージャーには OneDrive や Teams のエントリはあるのに、VS Code のサインイン情報が一切ない状態。
3. 原因:WAM(Web Account Manager)との相性問題
VS Code 1.109 以降、Windows 上での Microsoft アカウント認証は WAM(Windows Web Account Manager) を経由するようになっている。
WAM は「Windows の設定に登録されたアカウント」を使って認証するため、以下のような状況でうまく動かないことがある:
- 個人用 Microsoft アカウントと企業アカウントが混在している
- Azure 無償枠で作った Microsoft アカウントの 365 ライセンスが Windows レベルで干渉している
- Windows の「職場または学校アカウント」に企業アカウントが登録されていない
WAM(Web Account Manager)とは?
Windows 10/11 に組み込まれた認証管理の仕組み。Microsoft アカウントのシングルサインオン(SSO)を担う。VS Code などのアプリはブラウザを開かずに WAM 経由でサインインできるが、アカウントの登録状況によっては「使えるアカウントがない」と判定される場合がある。
4. 解決策:WAM を使わずブラウザ認証に切り替える
VS Code の settings.json に以下を追記する:
{
"microsoft-authentication.implementation": "msal-no-broker"
}
設定方法:
-
Ctrl+Shift+P→Preferences: Open User Settings (JSON)を選択 - 上記の設定を追記して保存
- VS Code を完全に再起動する
microsoft-authentication.implementation とは?
VS Code 組み込みの microsoft-authentication 拡張が持つ設定。"msal" がデフォルト(WAM 使用)で、"msal-no-broker" にするとブラウザポップアップによる認証に切りわる。VS Code の GitHub リポジトリ(extensions/microsoft-authentication/package.json)に定義されている実在の設定。
この設定自体は内部設定なので、今後改修されて不要になる、動作が変わる、などはあるので、ご注意を