From d42a3d71fe752bffcb76c9eed821e4d20ec0f137 Mon Sep 17 00:00:00 2001 From: Cursivez <44798535+Cursivez@users.noreply.github.com> Date: Mon, 29 Dec 2025 13:45:11 +0800 Subject: [PATCH] fix: make OAuth login URL clickable in terminal Use OSC 8 hyperlink escape sequence to show 'Click here to login' as a clickable link instead of displaying the raw URL which spans multiple lines and is hard to click in terminals (especially WSL). --- .../coding-agent/src/modes/interactive/interactive-mode.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/coding-agent/src/modes/interactive/interactive-mode.ts b/packages/coding-agent/src/modes/interactive/interactive-mode.ts index 1041b931..f0e1c01c 100644 --- a/packages/coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/coding-agent/src/modes/interactive/interactive-mode.ts @@ -1587,8 +1587,9 @@ export class InteractiveMode { await this.session.modelRegistry.authStorage.login(providerId as OAuthProvider, { onAuth: (info: { url: string; instructions?: string }) => { this.chatContainer.addChild(new Spacer(1)); - this.chatContainer.addChild(new Text(theme.fg("accent", "Opening browser to:"), 1, 0)); - this.chatContainer.addChild(new Text(theme.fg("accent", info.url), 1, 0)); + // Use OSC 8 hyperlink escape sequence for clickable link + const hyperlink = `\x1b]8;;${info.url}\x07Click here to login\x1b]8;;\x07`; + this.chatContainer.addChild(new Text(theme.fg("accent", hyperlink), 1, 0)); if (info.instructions) { this.chatContainer.addChild(new Spacer(1)); this.chatContainer.addChild(new Text(theme.fg("warning", info.instructions), 1, 0));