[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
- Add
"CLAUDE_CODE_NO_FLICKER": "1"tosettings.jsonenv - Bind
ctrl+jtochat:newlineinkeybindings.json:
{
"bindings": [
{
"context": "Chat",
"bindings": {
"ctrl+j": "chat:newline"
}
}
]
}
- Launch Claude Code inside tmux
- Press Ctrl+J in the input box. Nothing happens.
- 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)
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗