[Bug] CLAUDE_CODE_NO_FLICKER=1 swallows Ctrl+J keybinding for chat:newline in tmux

Resolved 💬 5 comments Opened Apr 2, 2026 by sustinbebustin Closed Apr 12, 2026

Ctrl+J bound to chat:newline in keybindings.json stopped working the moment I set CLAUDE_CODE_NO_FLICKER=1. Remove the env var, Ctrl+J works again. Put it back, gone.

The alt-screen renderer is eating the keystroke before the keybinding system gets a chance to see it. Ctrl+J (ASCII 0x0A, line feed) is probably being consumed as a cursor/scroll control in the alternate screen buffer.

Repro

  1. Add "CLAUDE_CODE_NO_FLICKER": "1" to settings.json env
  2. Bind ctrl+j to chat:newline in keybindings.json:
{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+j": "chat:newline"
      }
    }
  ]
}
  1. Launch Claude Code inside tmux
  2. Press Ctrl+J in the input box. Nothing happens.
  3. Remove CLAUDE_CODE_NO_FLICKER, restart. Ctrl+J inserts a newline again.

Environment

  • Claude Code 2.1.90
  • tmux 3.6a
  • Linux 6.17.13-2-pve
  • zsh

Note

Shift+Enter also doesn't work in tmux (long-standing tmux limitation with modifier key passthrough), so Ctrl+J is the only reliable newline binding here. This effectively makes NO_FLICKER mode unusable for tmux users who need multi-line input.

Related

  • #42501 (same class of bug, Shift+Enter broken in Warp with NO_FLICKER)

View original on GitHub ↗

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