[Bug] Undefined CSS variable --cursor-text-link causes hyperlinks to fall back to #0000EE — accessibility issue (Dark High Contrast)

Summary

Cursor references the CSS custom property --cursor-text-link in ~14 places
throughout the bundled JS/CSS (chat transcript, chat input, markdown rendering,
diff cards, etc.) but never defines it in any theme. Browsers therefore
fall back to the user-agent default for <a>:link#0000EE — which is
barely visible on the black background of the Dark High Contrast theme. This
is an accessibility regression for users who rely on the high-contrast theme,
and the affected colors fall below WCAG AA contrast requirements.

Environment

  • Cursor version: 3.2.21 (Electron 39.8.1) — please confirm with your version
  • OS: macOS (26.4.1)
  • Theme: Dark High Contrast
    • Display label: Dark High Contrast
    • Theme ID (settingsId): Default High Contrast
    • uiTheme: hc-black

Steps to reproduce

  1. Switch to the Dark High Contrast theme.
  2. Open a chat with the assistant and request a response that contains:
    • A markdown link, e.g. [Cursor docs](https://docs.cursor.com)
    • A bare URL, e.g. https://example.com
    • An inline file path, e.g. /Applications/Cursor.app/Contents/Resources/...
  3. Observe how those links render in the chat transcript.
  4. Open a .md file and click the Preview button. Observe how links render
    in the preview pane.

Expected

Hyperlinks render in a high-contrast color appropriate for a black-background
accessibility theme (e.g. a bright sky blue around #4FC3F7 or VS Code’s
hardcoded hcDark default of #21A6FF).

Actual

Hyperlinks render as rgb(0, 0, 238) / #0000EE — the browser’s user-agent
default for <a>:link. Contrast against #000000 is ~2.7:1, below WCAG AA’s
4.5:1 minimum and well below AAA’s 7:1.

Root cause investigation

The CSS variable --cursor-text-link is referenced but never defined:

$ grep -c "cursor-text-link" workbench.desktop.main.js
14
$ grep -oE '\-\-cursor-text-link[ ]*:' workbench.desktop.main.js | wc -l
0

Per the CSS Custom Properties spec, when a var(--undefined) reference is
used in a property declaration, the declaration is invalid and the property
falls back to its inherited or initial value. For elements styled like links
(e.g. <code class="md-clickable-code">, <a> tags rendered via Cursor’s
React/ProseMirror chat components), the browser’s user-agent stylesheet
applies color: -webkit-link (#0000EE).

Affected selectors (non-exhaustive)

All from out/vs/workbench/workbench.desktop.main.js:

  • .markdown-root .md-clickable-code — chat transcript inline file paths
  • .markdown-root a (no explicit rule, but inherits) — chat markdown links
    and bare URLs
  • .ui-rich-text-editor__content .ProseMirror a — chat input editor
  • .ui-prompt-input-editor .ProseMirror a[href] — chat composer pill links
  • .ui-prompt-input-tiptap-readonly .ProseMirror a[href] — read-only Tiptap
  • .ui-diff-card__generated-load, .ui-diff-card__large-diff-load — diff card
    action links

Note: VS Code’s --vscode-textLink-foreground (controlled by
workbench.colorCustomizations.textLink.foreground) does NOT cover these
surfaces because they reference Cursor’s separate --cursor-text-link
variable. Therefore, user-side workbench.colorCustomizations settings have
no effect on these hyperlinks regardless of theme.

The default Dark High Contrast theme JSON (hc_black.json) also does not set
textLink.foreground, though VS Code’s hardcoded hc-black default of
#21A6FF would fill that gap for --vscode-textLink-foreground. The
Cursor-specific variable has no analogous fallback.

Suggested fix

Define --cursor-text-link (and --cursor-text-link-hover) in :root with
per-theme values, ideally derived from the existing theme system. For example:

:root.hc-black {
  --cursor-text-link: var(--vscode-textLink-foreground, #21A6FF);
  --cursor-text-link-hover: var(--vscode-textLink-activeForeground, #21A6FF);
}
:root.vs-dark {
  --cursor-text-link: var(--vscode-textLink-foreground, #3794FF);
  --cursor-text-link-hover: var(--vscode-textLink-activeForeground, #3794FF);
}
:root.vs {
  --cursor-text-link: var(--vscode-textLink-foreground, #006AB1);
  --cursor-text-link-hover: var(--vscode-textLink-activeForeground, #006AB1);
}
:root.hc-light {
  --cursor-text-link: var(--vscode-textLink-foreground, #0F4A85);
  --cursor-text-link-hover: var(--vscode-textLink-activeForeground, #0F4A85);
}

This way every theme has a meaningful value, and users can still override via
workbench.colorCustomizations.textLink.foreground if they want.

Workaround (current)

Append a CSS file to workbench.desktop.main.css defining --cursor-text-link
and adding !important color rules for the affected selectors. This is lost
whenever Cursor updates and must be re-applied.

Severity

Accessibility — affects users who specifically choose the Dark High Contrast
theme for visual accessibility reasons. The primary interactive element
(hyperlinks) renders well below WCAG-recommended contrast against the theme’s
black background.

Hi there!

We detected that this may be a bug report, so we’ve moved your post to the Bug Reports category.

To help us investigate and fix this faster, could you edit your original post to include the details from the template below?

Bug Report Template - Click to expand

Where does the bug appear (feature/product)?

  • Cursor IDE
  • Cursor CLI
  • Background Agent (GitHub, Slack, Web, Linear)
  • BugBot
  • Somewhere else…

Describe the Bug
A clear and concise description of what the bug is.


Steps to Reproduce
How can you reproduce this bug? We have a much better chance at fixing issues if we can reproduce them!


Expected Behavior
What is meant to happen here that isn’t working correctly?


Screenshots / Screen Recordings
If applicable, attach images or videos (.jpg, .png, .gif, .mp4, .mov)


Operating System

  • Windows 10/11
  • MacOS
  • Linux

Version Information

  • For Cursor IDE: Menu → About Cursor → Copy
  • For Cursor CLI: Run agent about in your terminal
IDE:
Version: 2.xx.x
VSCode Version: 1.105.1
Commit: ......

CLI:
CLI Version 2026.01.17-d239e66

For AI issues: which model did you use?
Model name (e.g., Sonnet 4, Tab…)


For AI issues: add Request ID with privacy disabled
Request ID: f9a7046a-279b-47e5-ab48-6e8dc12daba1
For Background Agent issues, also post the ID: bc-…


Additional Information
Add any other context about the problem here.


Does this stop you from using Cursor?

  • Yes - Cursor is unusable
  • Sometimes - I can sometimes use Cursor
  • No - Cursor works, but with this issue

The more details you provide, the easier it is for us to reproduce and fix the issue. Thanks!

Following the bot’s template — most details are in the OP above, but here it is in the requested format for completeness.

Where does the bug appear (feature/product)?
Cursor IDE

Describe the Bug
The CSS custom property --cursor-text-link is referenced in ~14 places
throughout workbench.desktop.main.js (chat transcript, chat input, markdown
rendering, diff cards) but never defined. As a result, hyperlinks in those
surfaces fall back to the browser’s user-agent default for <a>:link
(#0000EE), which has only ~2.7:1 contrast against the black background of
the Dark High Contrast theme — well below WCAG AA’s 4.5:1 minimum for an
accessibility-focused theme. Full root-cause analysis and affected selectors
are in the OP.

Steps to Reproduce

  1. Switch to Dark High Contrast theme.
  2. Have a chat that returns a markdown response with a hyperlink, e.g.
    [example](``https://example.com``), a bare URL like https://example.com,
    or an inline file path like /Applications/Cursor.app/....
  3. Observe each link rendered as #0000EE in the chat transcript.
  4. Repeat in a .md file’s Preview pane — same issue.
  5. Inspect with DevTools, computed color is rgb(0, 0, 238).

Expected Behavior
Hyperlinks render with a high-contrast color appropriate for the theme — e.g.
VS Code’s hardcoded hc-black default of #21A6FF, which is what
textLink.foreground falls back to.

Screenshots / Screen Recordings
See OP.

Operating System
MacOS

Version Information

Hi there,

Thanks for the report! This looks like the same underlying issue as this earlier report: Dark High Contrast theme Link Color Broken

I’ve linked this internally so the team has the additional details from your post. The workaround in the older thread is still the best option for now: install the GitHub Theme extension (GitHub.github-vscode-theme) and switch to GitHub Dark High Contrast.

Sorry for the inconvenience. Let me know if you have any follow-up questions.