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
desktop: clicking a message link opens it as a local file instead of the browser #53013
Clicking a hyperlink in the desktop client does not open the URL in the default
browser. The click is routed to the file viewer and fails: a link with no scheme
shows Failed to load file / File not found: <text>, and an https:// link shows Failed to load file / UnexpectedStatus: 500. No link in a message can be opened
without manually copying the text.
Open any session where an assistant message contains a URL.
Click a link written without a scheme, e.g. discord.com/developers/applications.
Toast appears: Failed to load file / File not found: discord.com/developers/applications.
Click a link written with a scheme, e.g. https://discord.com/developers/applications.
Toast appears: Failed to load file / UnexpectedStatus: 500.
Expected Behavior
Clicking a link opens it in the OS default browser. Scheme-less text that is not
a workspace path should not be treated as a file to load.
Actual Behavior
The click is handled as a "load this file" action instead of "open this URL":
without a scheme: File not found: <link text>
with a scheme: UnexpectedStatus: 500 (the request reaches the server and errors)
Additional Context
Reproducible every time, for every link, in every session.
Nothing is logged: no entry in ~/.local/share/opencode/log/opencode.log and none
in %APPDATA%\ai.opencode.desktop\logs\<timestamp>\renderer.log at the moment of
the failed click, so the failure is invisible to diagnostics.
Workaround: select the URL text and copy it into a browser manually.
No config/plugin change preceded this; present since install.
Affects the desktop client only (the same URLs open fine in a browser).
Thanks for the detailed report. I couldn't reproduce this here because it needs the Windows desktop app, and I only have a Linux environment without it, so a maintainer with Windows will need to check it.
From reading the code (I haven't run it):
Links without a scheme (e.g. discord.com/developers/applications shown as inline code): in 2.0.22, any inline code containing a / is treated as a file path and opened in the file viewer without checking that the file exists. That explains the File not found toast. Newer code only makes such text clickable once the file is confirmed to exist, so this part may already be fixed in a later release.
https:// links: going by the code, these should be handed to your default browser. I couldn't find what produces UnexpectedStatus: 500, so a maintainer needs to look at this part on Windows.
These would help:
Does the https:// failure still happen with opencode-dcp and opencode-v2-token-usage disabled?
Was the URL shown as a normal link, or as inline code (monospace)?
Does it still happen on the latest desktop release?
Environment now: desktop v2.2.7 (this was filed against v2.0.22).
Since the report, the two symptoms in it map onto two changes:
File not found: <text> — feat(session-ui): deterministic timeline file link detection and resolution #53641 ("deterministic timeline file link detection and resolution", merged 2026-10-09) rewrote how file links in messages are detected and opened. In 2.0.22 any inline code containing a / was treated as a path and sent to the file viewer unconditionally; the newer code only makes such text openable once the path is confirmed to exist.
Both paths from the original report are covered by those, so I am closing this as resolved upstream. If a link still opens in the file viewer on a current build, comment here and I will reopen with the link, whether it rendered as inline code or as a normal link, and the matching log line.
On the plugin question: opencode-dcp and opencode-v2-token-usage do not touch click routing, so I would not expect disabling them to change anything.
Activity
github-actions commentedon Oct 3, 2026
This issue might be a duplicate of an existing issue. Please check:
opencodejr commentedon Oct 27, 2026
Thanks for the detailed report. I couldn't reproduce this here because it needs the Windows desktop app, and I only have a Linux environment without it, so a maintainer with Windows will need to check it.
From reading the code (I haven't run it):
discord.com/developers/applicationsshown as inline code): in 2.0.22, any inline code containing a/is treated as a file path and opened in the file viewer without checking that the file exists. That explains theFile not foundtoast. Newer code only makes such text clickable once the file is confirmed to exist, so this part may already be fixed in a later release.https://links: going by the code, these should be handed to your default browser. I couldn't find what producesUnexpectedStatus: 500, so a maintainer needs to look at this part on Windows.These would help:
https://failure still happen withopencode-dcpandopencode-v2-token-usagedisabled?KoBadger commentedon Nov 11, 2026
Updating with where this landed.
Environment now: desktop v2.2.7 (this was filed against v2.0.22).
Since the report, the two symptoms in it map onto two changes:
File not found: <text>— feat(session-ui): deterministic timeline file link detection and resolution #53641 ("deterministic timeline file link detection and resolution", merged 2026-10-09) rewrote how file links in messages are detected and opened. In 2.0.22 any inline code containing a/was treated as a path and sent to the file viewer unconditionally; the newer code only makes such text openable once the path is confirmed to exist.UnexpectedStatus: 500—/api/fs/readno longer answers 500 for a path that does not exist or resolves outside the project; since 2.1.0 it returns a not-found. That is the same failure described in desktop: opening URL-style path resolves to C:\static, /api/fs/read returns 500 (UnexpectedStatus) #50913, which was closed for exactly this change.Both paths from the original report are covered by those, so I am closing this as resolved upstream. If a link still opens in the file viewer on a current build, comment here and I will reopen with the link, whether it rendered as inline code or as a normal link, and the matching log line.
On the plugin question:
opencode-dcpandopencode-v2-token-usagedo not touch click routing, so I would not expect disabling them to change anything.