[BUG] Cursor invisible in input field on Linux (WezTerm + Konsole)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">The cursor is completely invisible in Claude Code's input field. This is NOT a terminal or container configuration issue—the cursor works perfectly until Claude Code launches.</p>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Evidence this is a Claude Code issue:</strong></p>
<div class="overflow-x-auto w-full px-2 mb-6">
Scenario | Cursor Visible?
-- | --
WezTerm opened normally (no container) | ✅ Yes
Konsole opened normally (no container) | ✅ Yes
Container boot sequence (before Claude Code starts) | ✅ Yes
Bash shell inside container (after exiting Claude Code) | ✅ Yes
Claude Code running in container via WezTerm | ❌ No
Claude Code running in container via Konsole | ❌ No
Claude Code running directly on host | ❌ No
</div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">The cursor is visible in the <strong>exact same terminal session</strong> until Claude Code launches. Tested in both WezTerm and Konsole—same result. This proves:</p>
<ul class="[li_&]:mb-0 [li_&]:mt-1 [li_&]:gap-1 [&:not(:last-child)_ul]:pb-1 [&:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2">Terminal cursor config works correctly (both WezTerm and Konsole)</li>
<li class="whitespace-normal break-words pl-2">Container terminal passthrough works correctly</li>
<li class="whitespace-normal break-words pl-2">TERM variable is correct (xterm-256color)</li>
<li class="whitespace-normal break-words pl-2">Only Claude Code hides the cursor</li>
<li class="whitespace-normal break-words pl-2">This is NOT terminal-specific</li>
</ul>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Users can still type but have no visual indication of cursor position, making editing input extremely difficult—especially when using arrow keys to modify text.</p>
What Should Happen?
Cursor should be visible in Claude Code's input field, either respecting terminal cursor settings or showing a default visible cursor.
Error Messages/Logs
No error messages. The cursor simply does not render.
Workarounds attempted (all failed):
WezTerm force_reverse_video_cursor = true
WezTerm explicit cursor colors (cursor_bg, cursor_fg, cursor_border)
ANSI escape sequences before launch: printf '\e[?25h\e[5 q'
ANSI escape sequences inside Claude Code: !printf '\e[5 q'
Setting TERM=wezterm instead of xterm-256color
All Claude Code theme options (Dark mode, Light mode, ANSI colors only, etc.)
Claude Code /config settings (no cursor visibility option exists)
Tested in Konsole instead of WezTerm—same issue
Steps to Reproduce
- Open any terminal (WezTerm, Konsole, etc.)
- Launch Claude Code (either directly or via Podman container)
- Observe cursor is visible during any startup messages
- Once Claude Code takes over the terminal, cursor completely disappears
- Can still type but cannot see cursor position
Critical Test:
From a working terminal window with a visible blinking cursor, run:
``claude``
The cursor disappears immediately when Claude Code starts. Exit Claude Code with /exit and the cursor reappears. This confirms Claude Code is actively hiding the cursor.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.12
Claude Code Version
2.1.19
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
This differs from previously reported cursor issues:
Issue #10666 reported cursor style being overridden (block instead of bar)
Issue #3231 reported no cursor when FORCE_COLOR=0
This issue: cursor is completely invisible with default settings, no special environment variables
The cursor is visible during container boot, visible in bash, visible everywhere except Claude Code. Claude Code is actively hiding or not rendering the cursor.
Container setup (also tested without container - same result):
Podman (rootless) with ROCm base image
TERM: xterm-256color
Related Issues:
#10666 (closed) - Cursor style override in iTerm2
#16086 (closed/locked) - Cursor style configuration request
#7002 (duplicate) - Cursor style support request
#3231 - Cursor not visible with FORCE_COLOR=0
This issue has 7 comments on GitHub. Read the full discussion on GitHub ↗