You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bug: Windows Terminal missing from "Open In..." - fs.stat() fails with EACCES on MSIX app execution aliases
#11975
On Windows the "Open In..." split button (session header / file-tree header) lists Explorer, VS Code, Android Studio and Git Bash, but never Windows Terminal — even though Windows Terminal is installed and wt works in any shell.
Environment
DeepSeek Harness 0.2.1-rc.5 (desktop app, Windows 11)
Windows Terminal 1.24.12741.0 (MSIX / Store install)
i.e. the only locator is a bare PATH lookup for wt. On Windows, Windows Terminal has no regular .exe on disk: %LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe is an MSIX app execution alias — a reparse point (IO_REPARSE_TAG_APPEXECLINK) whose target lives under the ACL-locked C:\Program Files\WindowsApps\....
isFile() (dsh-host-open-in-app) and LocalSubprocessRuntime.resolveExecutable() (dsh-subprocess-local) both decide existence with fs.stat():
fs.stat() follows the reparse target, which fails with EACCES; the candidate is silently dropped, the whole catalog entry resolves to nothing, and it never appears in /open-in-app/apps.
Measured on the affected machine (Node 24):
call
result
fs.statSync(...\\WindowsApps\\wt.exe)
EACCES
fs.lstatSync(...)
symlink, size 93
fs.accessSync(..., X_OK)
ok
where.exe wt
%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exe
This is not specific to wt: fs.statSync(...\\WindowsApps\\winget.exe) also returns EACCES. Any application reachable only through an app execution alias is affected.
Suggested fix (either is sufficient)
Make the existence probes reparse-aware: on EACCES/EPERM from stat, fall back to access(path, X_OK) (which succeeds on aliases) or lstat, and accept a reparse point. Both resolveExecutable() and isFile() need this.
Add a file() locator for ${LOCALAPPDATA}/Microsoft/WindowsApps/wt.exe — note that isFile() still uses stat, so fix (1) is needed regardless.
Repro
Install Windows Terminal from the Microsoft Store.
Open a workspace in the DSH desktop app on Windows.
Open the "Open In..." dropdown: Windows Terminal is absent, while wt -d <dir> works in a terminal.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
What happened
On Windows the "Open In..." split button (session header / file-tree header) lists Explorer, VS Code, Android Studio and Git Bash, but never Windows Terminal — even though Windows Terminal is installed and
wtworks in any shell.Environment
0.2.1-rc.5(desktop app, Windows 11)1.24.12741.0(MSIX / Store install)Root cause
The catalog entry is
i.e. the only locator is a bare PATH lookup for
wt. On Windows, Windows Terminal has no regular.exeon disk:%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exeis an MSIX app execution alias — a reparse point (IO_REPARSE_TAG_APPEXECLINK) whose target lives under the ACL-lockedC:\Program Files\WindowsApps\....isFile()(dsh-host-open-in-app) andLocalSubprocessRuntime.resolveExecutable()(dsh-subprocess-local) both decide existence withfs.stat():fs.stat()follows the reparse target, which fails withEACCES; the candidate is silently dropped, the whole catalog entry resolves to nothing, and it never appears in/open-in-app/apps.Measured on the affected machine (Node 24):
fs.statSync(...\\WindowsApps\\wt.exe)EACCESfs.lstatSync(...)fs.accessSync(..., X_OK)where.exe wt%LOCALAPPDATA%\Microsoft\WindowsApps\wt.exeThis is not specific to
wt:fs.statSync(...\\WindowsApps\\winget.exe)also returnsEACCES. Any application reachable only through an app execution alias is affected.Suggested fix (either is sufficient)
EACCES/EPERMfromstat, fall back toaccess(path, X_OK)(which succeeds on aliases) orlstat, and accept a reparse point. BothresolveExecutable()andisFile()need this.file()locator for${LOCALAPPDATA}/Microsoft/WindowsApps/wt.exe— note thatisFile()still usesstat, so fix (1) is needed regardless.Repro
wt -d <dir>works in a terminal.All reactions