Windows: PowerShell Store detection throws ENOENT when scanning %LOCALAPPDATA%\Microsoft\WindowsApps

Open
#319,552 0 comments 0 reactions 1 assignee View on GitHub

@anthonykim1 is already working on this.

Since Jun 2, 2026.

Assessment

This issue has not been assessed yet.

Description

Does this issue occur when all extensions are disabled?: Yes

  • VS Code Version: 1.122.1
  • Commit: 8761a5560cfd65fdd19ce7e2bd18dab5c0a4d84e
  • Date: 2026-05-29T09:25:37+02:00
  • OS Version: Windows 10 Pro 21H1, build 19043.1052

Steps to Reproduce:

  1. Start VS Code on Windows.
  2. Open the integrated terminal, or trigger terminal profile detection.
  3. Check the VS Code logs.

Actual result:

VS Code logs the following error:

ERR ENOENT: no such file or directory, scandir 'C:\Users\weisen\AppData\Local\Microsoft\WindowsApps': Error: ENOENT: no such file or directory, scandir 'C:\Users\weisen\AppData\Local\Microsoft\WindowsApps'
    at async readdir (node:internal/fs/promises:953:18)
    at async P1 (file:///C:/Program%20Files/Microsoft%20VS%20Code/8761a5560c/resources/app/out/main.js:406:97618)
    at async Object.ff (file:///C:/Program%20Files/Microsoft%20VS%20Code/8761a5560c/resources/app/out/main.js:406:97484)
    at async j0 (file:///C:/Program%20Files/Microsoft%20VS%20Code/8761a5560c/resources/app/out/main.js:446:27483)
    at async UL (file:///C:/Program%20Files/Microsoft%20VS%20Code/8761a5560c/resources/app/out/main.js:446:28079)
    at async Rw (file:///C:/Program%20Files/Microsoft%20VS%20Code/8761a5560c/resources/app/out/main.js:446:28352)

Expected result:

If %LOCALAPPDATA%\Microsoft\WindowsApps cannot be read during Microsoft Store PowerShell detection, VS Code should ignore that Store PowerShell candidate and continue detecting other available shells, such as Windows PowerShell at:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Additional notes:

The failing code path appears to be Windows PowerShell profile detection. In the minified main.js, j0() checks:

let r = B(process.env.LOCALAPPDATA, "Microsoft", "WindowsApps");
if (!await nr.existsDirectory(r)) return null;
for (let n of await J.readdir(r)) ...
The existsDirectory check is guarded, but the later J.readdir(r) is not. If readdir throws ENOENT, shell detection aborts before falling back to Windows PowerShell.

A local workaround was to wrap the Store PowerShell readdir call in try/catch and return null on failure, allowing the detector to continue to the normal Windows PowerShell fallback.
Dominant language
TypeScript
Stars
193k
Forks
42.9k
PR merge metrics
PR metrics pending

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from microsoft/vscode

All issues in microsoft/vscode

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.