Allow disabling or recoloring autolink ANSI in chat output (markdown renderer)
Problem
In chat output rendered to a terminal, Claude Code's CommonMark renderer wraps URL-shaped strings — bare URLs, [label](url) markdown, <url> angle-bracket autolinks, AND #NNN GitHub-issue references — in hardcoded blue ANSI escape codes. On dark terminal themes (typical iTerm2 setup), this blue is effectively unreadable against the background.
Reproduction
Open Claude Code in iTerm2 with any standard dark theme. Ask Claude anything that produces a URL or #NNN reference in its reply. The URL/reference renders in dark blue.
Tested on macOS 25.3.0, iTerm2 3.6, dark theme.
Workaround (today)
Wrap URLs in a fenced code block (triple backticks):
````
https://example.com/some-path
````
Code blocks are not autolinked, so the renderer leaves them alone, and iTerm2 Smart Selection still detects URL patterns at ⌘-click time. This works but forces every URL onto its own line — three lines for what should be inline.
What I tried (none worked)
- iTerm2 per-profile Link Color setting → no effect (Claude emits the blue ANSI itself; iTerm just displays what it receives).
- Searching
~/.claude/settings.jsonschema,/themecommand, env vars — no setting controls autolink coloring. /output-styleonly changes the system prompt, not renderer behavior.
Request
Expose a way to disable or recolor autolink ANSI. Any of these would solve it:
autolinkColor(or similar) insettings.json— accepts an ANSI color name, hex, ornoneto disable styling.- Env var like
CLAUDE_AUTOLINK_COLOR=none. /themeextension — let custom themes override autolink color the same way they override prompt-border / diff colors.
Disabling entirely (option 1 with none) would be ideal for users on dark themes — let URLs render in default text color, and let the terminal's URL detector handle clickability.
Why it matters
Terminal-first workflows lean heavily on chat output as the primary interface. Issue references, file paths, and routes in chat need to be readable AND ⌘-clickable. The current behavior forces a tradeoff between readability (fenced blocks, three lines per URL) and conversational density (inline URLs that are unreadable).
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗