Repository navigation
feat(vscode): open chat web links in the integrated browser - #14885
Conversation
Add an "Open links in" setting next to the Integrated Browser flag. When the experimental Integrated Browser is enabled, chat web links open in-app by default: the sidebar uses a browser editor tab and Agent Manager uses its browser panel. Users can opt out with "System browser". Intercept web-link clicks in one capture handler per chat view so a click opens a single destination, including links inside reasoning and tool output. Show a browser glyph on in-app links, and update open chats immediately when the preference changes.
Code Review SummaryStatus: No Issues Found | Recommendation: Merge The prior suggestion on Files Reviewed (1 file)
Previous Review Summaries (4 snapshots, latest commit aab7f87)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit aab7f87)Status: 1 Issue Found | Recommendation: Address before merge Overview
Issue Details (click to expand)SUGGESTION
Resolution of previous findings
Files Reviewed (2 files)
Fix these issues in Kilo Cloud Previous review (commit d24f76d)Status: 2 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (11 files)
Fix these issues in Kilo Cloud Previous review (commit 18ead3a)Status: 3 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (3 files)
Fix these issues in Kilo Cloud Previous review (commit 0abb254)Status: 3 Issues Found | Recommendation: Address before merge Overview
Issue Details (click to expand)WARNING
SUGGESTION
Files Reviewed (40 files)
Reviewed by deepseek-v4.1-flash · Input: 58.8K · Output: 9.1K · Cached: 702.1K Review guidance: REVIEW.md from base branch |
The sidebar used VS Code's Simple Browser while Agent Manager used Kilo's Integrated Browser, so the same setting opened two different browsers. Route sidebar and editor-tab links through BrowserTabProvider, the same broker-backed Integrated Browser tab the Agent Manager panel uses. Fall back to the system browser when the in-app opener cannot take the link, and gate the in-app glyph on workspace trust so it matches the host decision.
Gate the Agent Manager in-app link route on workspace trust so an untrusted workspace falls back to the external opener instead of a rejected message. Report an early Integrated Browser navigation failure in the tab, matching the in-panel error state, instead of leaving the link silently unopened.
What Problem This Solves
Web links in Kilo chat always opened in the system browser, even when the experimental Integrated Browser was enabled. That meant leaving VS Code, and for Agent Manager sessions it broke the in-session context.
Why This Change Was Made
The Integrated Browser can already render public HTTPS pages: the sidebar opens a browser editor tab through
BrowserTabProvider, and Agent Manager has a browser side panel, both backed by the shared browser broker. Chat links now route through the host, which selects the destination from a new "Open links in" preference next to the Integrated Browser flag.http/httpslinks are routed; other schemes keep their default handling.User Impact
When the experimental Integrated Browser is enabled, chat web links open in-app by default: the sidebar uses the Integrated Browser tab, and Agent Manager uses its browser panel. Choose "System browser" under "Open links in" to opt out. When the flag is off, the workspace is untrusted, or the link is not a web URL, links keep opening in the system browser.
Evidence
Self-tested in an isolated VS Code instance (sidebar and Agent Manager, separate sessions):
Automated:
bun run typecheck, extensiontypecheck/lint,knip, thekilocode_changeannotation check, and the full unit suite pass.Screenshots
"Open links in" sits next to the Integrated Browser toggle and defaults to Integrated Browser:
A sidebar chat link shows a browser glyph and opens in the Integrated Browser editor tab instead of the system browser: