Summary
MCP servers can send progress notifications (
otifications/progress) with a message field that gets displayed in the Copilot CLI status line. It would be great if the CLI could pass through OSC 8 terminal hyperlinks embedded in these messages, so MCP servers can include clickable links (e.g., to a PR URL).
Current Behavior
The CLI strips or does not render ANSI/OSC escape sequences in the message field of notifications/progress. The text content displays correctly, but any embedded OSC 8 hyperlink sequences are lost.
Desired Behavior
When rendering MCP progress messages in the status line or timeline, detect whether the hosting terminal supports OSC 8 hyperlinks and pass them through if supported. For unknown or unsupported terminals, strip the escape sequences cleanly so only the plain display text remains (no garbled output).
Terminal detection could use environment variables:
WT_SESSION — Windows Terminal
TERM_PROGRAM=iTerm.app — iTerm2
TERM_PROGRAM=WezTerm — WezTerm
TERM_PROGRAM=vscode — VS Code integrated terminal
KITTY_WINDOW_ID — Kitty
Use Case
Our MCP server (pr-copilot) monitors PRs during long-running polling operations. We send periodic heartbeat progress notifications like:
🕐 7:15:30 PM · Background Monitoring PR #56791 · CI: 43✅ · Will prompt when your attention is needed
Being able to make PR #56791 a clickable link to the GitHub PR would improve the user experience significantly.
Context
- Copilot CLI v0.0.389 added "Display progress messages from MCP tools in timeline" — this feature works great
- We send
notifications/progress with a self-generated progressToken since the CLI doesn't send one in tool call _meta
- The progress messages display correctly in the status line, but without hyperlink support
🤖 m-nash-copilot
Summary
MCP servers can send progress notifications (
otifications/progress) with a message field that gets displayed in the Copilot CLI status line. It would be great if the CLI could pass through OSC 8 terminal hyperlinks embedded in these messages, so MCP servers can include clickable links (e.g., to a PR URL).
Current Behavior
The CLI strips or does not render ANSI/OSC escape sequences in the
messagefield ofnotifications/progress. The text content displays correctly, but any embedded OSC 8 hyperlink sequences are lost.Desired Behavior
When rendering MCP progress messages in the status line or timeline, detect whether the hosting terminal supports OSC 8 hyperlinks and pass them through if supported. For unknown or unsupported terminals, strip the escape sequences cleanly so only the plain display text remains (no garbled output).
Terminal detection could use environment variables:
WT_SESSION— Windows TerminalTERM_PROGRAM=iTerm.app— iTerm2TERM_PROGRAM=WezTerm— WezTermTERM_PROGRAM=vscode— VS Code integrated terminalKITTY_WINDOW_ID— KittyUse Case
Our MCP server (pr-copilot) monitors PRs during long-running polling operations. We send periodic heartbeat progress notifications like:
🕐 7:15:30 PM · Background Monitoring PR #56791 · CI: 43✅ · Will prompt when your attention is neededBeing able to make
PR #56791a clickable link to the GitHub PR would improve the user experience significantly.Context
notifications/progresswith a self-generatedprogressTokensince the CLI doesn't send one in tool call_meta🤖 m-nash-copilot