0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VS Code の設定同期が「使用可能なアカウントはありません」で止まったときの対処法

0
Posted at

背景

ある日、デスクトップ 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 に以下を追記する:

settings.json
{
  "microsoft-authentication.implementation": "msal-no-broker"
}

設定方法:

  1. Ctrl+Shift+PPreferences: Open User Settings (JSON) を選択
  2. 上記の設定を追記して保存
  3. VS Code を完全に再起動する

microsoft-authentication.implementation とは?
VS Code 組み込みの microsoft-authentication 拡張が持つ設定。"msal" がデフォルト(WAM 使用)で、"msal-no-broker" にするとブラウザポップアップによる認証に切りわる。VS Code の GitHub リポジトリ(extensions/microsoft-authentication/package.json)に定義されている実在の設定。

この設定自体は内部設定なので、今後改修されて不要になる、動作が変わる、などはあるので、ご注意を

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?