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: "Open in…" application list fails for any file whose extension has one stale handler ("Could not load applications")
#11020
BUG-001: [open-in-app] — Query the "Open with" application list for an image or PDF file — the whole list fails and the menu shows only "Could not load applications"
Reporter: filed on behalf of the machine owner (yizang215) by the DSH agent running in that session, with the owner's explicit authorization Date: 2026-10-26 Severity: High (feature unusable for the affected file types; no in-product workaround) Reproducibility: Always (for any extension that has at least one stale handler registration)
Summary
On Windows, the "Open in…" / "Open with" control for a file asks the Host for that file's registered handlers. If any single registered handler raises a COM error while its name/icon is read, the whole query fails: the client receives null, sets failed, and the dropdown shows one disabled row (simplified Chinese: 无法获取应用列表; English: Could not load applications) instead of the applications that are perfectly healthy.
Expected Behavior
The dropdown lists every registered handler whose metadata can be read (name + icon), in shell preference order, with the current default marked. A handler whose registration is broken should be skipped (or shown without an icon); it must not affect the other entries.
Observed on this machine for .md, .docx, .xlsx, .pptx, .zip, .html, .json, .mp4, .mp3, .csv, .txt, .svg, .tex: 16–21 applications listed normally.
Actual Behavior
For .pdf (and .png, .jpg, .jpeg, .bmp, .gif, .tif on the same machine) the query throws, the client gets no list, and the menu degenerates to a single disabled item. The file itself opens normally through the default application and through "Reveal in file manager"; only the application-list dropdown is lost.
Reproduction Steps
Prerequisites: Windows host running DSH Web (dsh web); at least one file-extension association whose registered handler is a stale/incomplete registration (very common after uninstalling an app that had registered itself as an image/PDF handler).
Start DSH Web and open a session.
Have the agent present/deliver a file, or open any document in the right sidebar preview.
Click the "Open in…" / "More ways to open" split-button on that file's card.
Observe: for a .pdf on this machine (and for image extensions), the dropdown contains only a greyed-out 无法获取应用列表 / Could not load applications row; other file types list the applications normally.
Minimal Reproduction (if applicable)
Bypassing the UI and calling the same Host helper directly, with the DSH 0.2.1-rc.2 package tree on the module path:
// probe.mjs — run from the directory that contains node_modules/@deepseek-ai/*import{nativeFileApplications}from'@deepseek-ai/dsh-native-command';consttarget=process.argv[2];try{constapps=awaitnativeFileApplications(target,newAbortController().signal);console.log('OK count=',apps.length,apps.map(a=>a.name).join(' | '));}catch(e){console.log('FAIL:',String(e&&e.message).split('\n')[0]);}
DeepSeek Harness Web GUI, dsh web, Chromium-based browser at http://127.0.0.1:3080
Agent Workspace Root
D:\dsh_work_space\2
MCP Server Mode
N/A (no MATLAB/Simulink involved)
Available MCP Tools
matlab, arxiv, openalex, r, latex, vision_local, aztec, origin, wechat, asr
Platform
Detail
Value
OS
Windows 11 25H2, build 26200.9711
Architecture
x64 (win32)
Node.js (Host)
v26.10.0
Windows PowerShell
5.1.26100.9711 (Desktop/STA)
Error Output
The Host helper runs the shell adapter through powershell.exe -NoProfile -NonInteractive -STA -ExecutionPolicy Bypass -File <tmp>\associations.ps1; the adapter is the C# WINDOWS_ASSOCIATIONS source inside dsh-native-command/lib/index.js, and the failing call is [DshFileAssociations]::List($path):
Instrumenting the same C# adapter per handler (same machine, .pdf) shows the enumeration itself succeeds and one enum member fails:
0 C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe Microsoft Edge ... ok
1 D:\kuake\Quark\quark.exe 夸克 ... ok
2 <null> <null> GetName:COMException GetUIName:COMException GetIconLocation:FileNotFoundException
3 C:\Program Files\Google\Chrome\Application\chrome.exe Google Chrome ... ok
4 D:\wps\...\wps.exe WPS PDF ... ok
...
.png shows the same shape at index 7 (WPS 图片 / 画图 / 照片 / 截图工具 / Quark / Krita / 智能看图 all resolve, then an unnamed member raises COMException E_FAIL, then QuarkYQ / Photoshop / … resolve again).
Client-side rendering path that produces the message: dsh-client-ui-open-in-app/lib/client.js, locale key path.appsError (无法获取应用列表 / Could not load applications), rendered as a disabled item when useFileApplications() stores { apps: [], failed: true }, which OpenInAppPathController.applications() produces when remote.session.workspacePathApplications() throws (it returns null in that case).
Visual Evidence (if applicable)
N/A — the dropdown content is described above; no screenshot was retained.
Impact
Scope: every Windows Host whose shell has at least one stale handler registration for the file's extension. Uninstalled apps that had registered as image/PDF handlers (common) leave exactly such entries; on this machine the leftovers were dgpdf.exe.pdf and CAJViewer90.PDF (empty shell\open\command) plus acad.exe in the per-extension OpenWithList. Even after removing all user-level leftovers, one system-level stale handler remained, and the failure persisted — so users cannot be expected to clean their registry.
Workaround: none in-product for the dropdown; users can still use "Open" (default application) and "Reveal in file manager" (different code path), or open the file from Explorer.
Blocking: not blocking file delivery, but the "open with a specific application" capability is entirely unavailable for the affected file types.
Client that renders the disabled 无法获取应用列表 row when the query fails
Notes (optional)
Observation (not a claimed root cause): on this machine the enumeration yields a member whose GetName, GetUIName and GetIconLocation all raise (the first two E_FAIL, the third ERROR_FILE_NOT_FOUND = 0x80070002), consistent with a half-removed shell registration. The adapter reads name and icon for every member and does not isolate per-member failures, so one bad registration fails the entire call.
Speculation: whether to skip unreadable members, surface a placeholder, or retry without icons is a product decision for the maintainers; a local experiment adding per-member try/catch around name/icon reads returned 20–21 applications for .pdf/image types with no change to the results for .md/.docx (16/17), so the healthy entries themselves are unaffected.
The same command on the same machine fails identically outside DSH (direct powershell.exe invocation of the adapter), so this does not depend on the agent session or the browser.
Trimmed paths above are for readability only; the full adapter source and the exact PowerShell template are in dsh-native-command/lib/index.js.
Filed with authorization from the machine owner (yizang215), who asked the agent to submit this report on their behalf.
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.
BUG-001: [open-in-app] — Query the "Open with" application list for an image or PDF file — the whole list fails and the menu shows only "Could not load applications"
Reporter: filed on behalf of the machine owner (yizang215) by the DSH agent running in that session, with the owner's explicit authorization
Date: 2026-10-26
Severity: High (feature unusable for the affected file types; no in-product workaround)
Reproducibility: Always (for any extension that has at least one stale handler registration)
Summary
On Windows, the "Open in…" / "Open with" control for a file asks the Host for that file's registered handlers. If any single registered handler raises a COM error while its name/icon is read, the whole query fails: the client receives
null, setsfailed, and the dropdown shows one disabled row (simplified Chinese:无法获取应用列表; English:Could not load applications) instead of the applications that are perfectly healthy.Expected Behavior
The dropdown lists every registered handler whose metadata can be read (name + icon), in shell preference order, with the current default marked. A handler whose registration is broken should be skipped (or shown without an icon); it must not affect the other entries.
Observed on this machine for
.md,.docx,.xlsx,.pptx,.zip,.html,.json,.mp4,.mp3,.csv,.txt,.svg,.tex: 16–21 applications listed normally.Actual Behavior
For
.pdf(and.png,.jpg,.jpeg,.bmp,.gif,.tifon the same machine) the query throws, the client gets no list, and the menu degenerates to a single disabled item. The file itself opens normally through the default application and through "Reveal in file manager"; only the application-list dropdown is lost.Reproduction Steps
Prerequisites: Windows host running DSH Web (
dsh web); at least one file-extension association whose registered handler is a stale/incomplete registration (very common after uninstalling an app that had registered itself as an image/PDF handler)..pdfon this machine (and for image extensions), the dropdown contains only a greyed-out无法获取应用列表/Could not load applicationsrow; other file types list the applications normally.Minimal Reproduction (if applicable)
Bypassing the UI and calling the same Host helper directly, with the DSH 0.2.1-rc.2 package tree on the module path:
A per-extension matrix on the same machine (each file is a 1-byte placeholder with the relevant extension):
Environment
Toolkit & Agent
@deepseek-ai/dsh0.2.1-rc.2 (npx cache tree), packagesdsh-native-command,dsh-api-session-controller,dsh-client-ui-open-in-app,dsh-host-open-in-appdsh web, Chromium-based browser athttp://127.0.0.1:3080D:\dsh_work_space\2Platform
Error Output
The Host helper runs the shell adapter through
powershell.exe -NoProfile -NonInteractive -STA -ExecutionPolicy Bypass -File <tmp>\associations.ps1; the adapter is the C#WINDOWS_ASSOCIATIONSsource insidedsh-native-command/lib/index.js, and the failing call is[DshFileAssociations]::List($path):Instrumenting the same C# adapter per handler (same machine,
.pdf) shows the enumeration itself succeeds and one enum member fails:.pngshows the same shape at index 7 (WPS 图片 / 画图 / 照片 / 截图工具 / Quark / Krita / 智能看图 all resolve, then an unnamed member raisesCOMException E_FAIL, then QuarkYQ / Photoshop / … resolve again).Client-side rendering path that produces the message:
dsh-client-ui-open-in-app/lib/client.js, locale keypath.appsError(无法获取应用列表/Could not load applications), rendered as a disabled item whenuseFileApplications()stores{ apps: [], failed: true }, whichOpenInAppPathController.applications()produces whenremote.session.workspacePathApplications()throws (it returnsnullin that case).Visual Evidence (if applicable)
N/A — the dropdown content is described above; no screenshot was retained.
Impact
dgpdf.exe.pdfandCAJViewer90.PDF(emptyshell\open\command) plusacad.exein the per-extensionOpenWithList. Even after removing all user-level leftovers, one system-level stale handler remained, and the failure persisted — so users cannot be expected to clean their registry.Related Files
node_modules/@deepseek-ai/dsh-native-command/lib/index.js(constWINDOWS_ASSOCIATIONS, functionsList,Visit)SHAssocEnumHandlersadapter; the per-handler COM failure aborts the whole enumerationnode_modules/@deepseek-ai/dsh-api-session-controller/lib/index.js(workspacePathApplications,nativeFileApplications)RemoteErrornode_modules/@deepseek-ai/dsh-client-ui-open-in-app/lib/client.js(path.appsError,OpenInAppPathController.applications,useFileApplications)无法获取应用列表row when the query failsNotes (optional)
GetName,GetUINameandGetIconLocationall raise (the first twoE_FAIL, the thirdERROR_FILE_NOT_FOUND= 0x80070002), consistent with a half-removed shell registration. The adapter reads name and icon for every member and does not isolate per-member failures, so one bad registration fails the entire call.try/catcharound name/icon reads returned 20–21 applications for.pdf/image types with no change to the results for.md/.docx(16/17), so the healthy entries themselves are unaffected.powershell.exeinvocation of the adapter), so this does not depend on the agent session or the browser.dsh-native-command/lib/index.js.Filed with authorization from the machine owner (
yizang215), who asked the agent to submit this report on their behalf.All reactions