[FEATURE] Add `cursorStyle` setting to control input cursor shape

Resolved 💬 2 comments Opened Apr 15, 2026 by Nnboy Closed Apr 15, 2026

Feature request

Claude Code currently forces a steady block cursor in the input box via DECSCUSR escape sequences, overriding the terminal's configured cursor style. This is inconsistent with users who prefer a bar/beam cursor (e.g., cursor-style = bar in Ghostty, cursor.style = Beam in Alacritty).

Proposal

Add a cursorStyle setting to settings.json:

{
  "cursorStyle": "bar" | "block" | "underline" | "inherit"
}
  • inherit (ideal default): don't emit DECSCUSR at all — use whatever the terminal is configured to
  • bar / block / underline: emit the corresponding DECSCUSR sequence

Rationale

  • Users deliberately configure their terminal cursor; TUI apps silently overriding it is surprising
  • Modern terminals (Ghostty, WezTerm, Kitty, Alacritty) all expose cursor-style config — Claude Code is currently the odd one out
  • Low-risk change: one setting, a couple of escape-sequence branches

Current workaround

None. The DECSCUSR write happens inside the Ink/React rendering layer and can't be overridden from user config.

Environment

  • Claude Code: 2.1.109
  • OS: Ubuntu 24.04
  • Terminal: Ghostty (cursor-style = bar)
  • Model: Claude Opus 4.6

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗