coder / coder/vscode-coder

Deep links do not work when the URI is handled by an agent window

未关闭
#1,087 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug upstream
主要语言
TypeScript
星标
130
派生
48
平均合并
3 天 3 小时
30 天内合并 PR
15

描述

## Summary

`coder://` / `vscode://coder.coder-remote/open?...` deep links silently do nothing when the editor routes the URI to an "agent window" (VS Code Agents window, Cursor Agents window / Glass). These windows run a restricted extension host that does not load third-party extensions, so the extension is never activated and its registered `vscode.window.registerUriHandler` callback is never invoked.

The renderer logs the URI as handled, so no error is surfaced. The link appears to do nothing.

## Reproduction (as reported for Cursor)

1. Install `coder.coder-remote` 1.15.2.
2. Start Cursor 3.14.7 on Linux with a clean `HOME` and the default `~/.cursor/extensions` directory.
3. Open `cursor://coder.coder-remote/open?workspace=test&url=https://coder.example.com`.
4. Repeat after initialization completes.

Observed: `renderer.log` records the URI as handled, but extension-host initialization does not include `coder.coder-remote`, and there is no activation or URI-handler entry. On the repeat attempt, Cursor invokes `workbench.extensions.installExtension` even though the extension is already installed.

Expected: the installed extension is loaded and its `onUri` handler is invoked.

## Upstream reports

- Cursor forum report and vendor response: https://forum.cursor.com/t/installed-extensions-onuri-handler-is-not-invoked-for-custom-uri/167316
- Cursor confirmed this is a known issue in 3.14.7: `cursor://` links for third-party extensions can be handled in the Agents window, where the extension does not load, so `onUri` does not fire. A fix was said to be prepared.
- Stated workaround: make a normal IDE window active before opening the link. If only the Agents window is open, open a new editor window first, then click the link again.
- Related Cursor reports about extensions not loading in the Agents window:
- https://forum.cursor.com/t/extensions-in-agent-window/156603
- https://forum.cursor.com/t/cursor-3-agents-windows-cannot-load-wsl-extension/156778
- https://forum.cursor.com/t/swift-extension-does-not-activate-in-the-glass-mode/166987
- VS Code has shipped its own Agents window
(https://code.visualstudio.com/docs/agents/run/agents-window), which has the same restricted extension host. Related upstream issues:
- microsoft/vscode#315776 "Can extensions detect that they are running in the agents window"
- microsoft/vscode#315637 "Add a 'Enable in Agent window' in extensions view"
- microsoft/vscode#317460 "Agents Window: MCP server contributed by extension is not available"

## Why this matters

Deep links are the primary entry point from the Coder dashboard ("Open in VS Code" / "Open in Cursor"). If the user's active or only window is an agent window, the flow fails with no feedback.

## Scope

Tracking. The root cause is in the editor, not in this extension, so the work here is likely limited to:

1. Confirming which editors and versions are affected (VS Code stable/insiders, Cursor, Devin, VSCodium).
2. Confirming whether the Cursor fix has shipped and in which version.
3. Deciding whether to document the workaround in the README or in the Coder docs deep-link section.
4. Investigating whether anything in `package.json` (for example an explicit `onUri` activation event, or extension kind metadata) changes whether the extension is loaded in these windows.

贡献指南

打开贡献指南

调研方向

从 package.json 开始,检查 activation event 和 extension kind 元数据。在列出的 VS Code、Cursor、Devin 和 VSCodium 场景中复现 deep-link 行为,并检查 Cursor fix 是否已经发布。完成的标准是记录受影响的版本,并将 workaround 放入 README 或 Coder deep-link documentation,除非元数据提供了可行的更改。

由索引模型根据 Issue 内容生成。

评估

技术栈
typescript, vscode
领域
developer-experience
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
活跃
描述清晰度
需要澄清
新手友好度
42/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。