Feature Request
When a bare filename (e.g. README.md, src/main.py) appears in terminal output, Cmd+clicking it should resolve it against the current working directory (known via OSC 7) and open it if the file exists.
This is the single biggest workflow gap between cmux and iTerm2 for AI coding agent users.
Current behavior
https://google.com → clickable ✅ (URL pattern auto-detected)
/Users/krust/project/file.md → clickable ✅ (absolute path detected)
file.md → not clickable ❌ (not recognized as a file)
src/components/App.tsx → not clickable ❌
Expected behavior
- User Cmd+clicks
file.md in terminal output
- cmux already knows CWD via OSC 7 (e.g.
/Users/krust/project)
- cmux checks: does
/Users/krust/project/file.md exist?
- Yes → open in default editor (or cmux markdown panel for
.md)
- No → fall through to current behavior
Why this matters
AI coding agents (Claude Code, Codex, etc.) constantly output bare filenames:
I've updated the following files:
proposal_draft.md
workflow_v2.md
src/coordinator.ts
In iTerm2, every one of these is Cmd+clickable via Semantic History. In cmux, none of them are. This is the #1 reason some users stay on iTerm2 instead of switching to cmux full-time.
Technical context
Suggested approach
On Cmd+click of any non-URL text:
- Get CWD from last OSC 7 report
stat(CWD + "/" + clicked_text) — does the file exist?
- If yes and has line number suffix (e.g.
file.md:42), open at that line
- If yes, open via system handler (or cmux internal panel for supported types)
- If no, fall through to existing behavior
Environment
- cmux nightly
- macOS 15.5 (Darwin 24.6.0)
- Primary use case: Claude Code AI coding agent
Feature Request
When a bare filename (e.g.
README.md,src/main.py) appears in terminal output, Cmd+clicking it should resolve it against the current working directory (known via OSC 7) and open it if the file exists.This is the single biggest workflow gap between cmux and iTerm2 for AI coding agent users.
Current behavior
https://google.com→ clickable ✅ (URL pattern auto-detected)/Users/krust/project/file.md→ clickable ✅ (absolute path detected)file.md→ not clickable ❌ (not recognized as a file)src/components/App.tsx→ not clickable ❌Expected behavior
file.mdin terminal output/Users/krust/project)/Users/krust/project/file.mdexist?.md)Why this matters
AI coding agents (Claude Code, Codex, etc.) constantly output bare filenames:
In iTerm2, every one of these is Cmd+clickable via Semantic History. In cmux, none of them are. This is the #1 reason some users stay on iTerm2 instead of switching to cmux full-time.
Technical context
chpwdhook) — the CWD is knownresolvePathForOpening()inSurface.zig:2083already does CWD-relative resolution for regex-detected links, so precedent exists upstreamSuggested approach
On Cmd+click of any non-URL text:
stat(CWD + "/" + clicked_text)— does the file exist?file.md:42), open at that lineEnvironment