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

Status Fixed / completed
Reported on v2.1.90
Maintainer reply None cached
Activity 5 comments · opened Apr 2, 2026 · 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 ↗

5 Comments

github-actions[bot] · 6 months ago

Found 2 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/42501
  2. https://github.com/anthropics/claude-code/issues/42606

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

sustinbebustin · 6 months ago

This isn't a duplicate of #42501 or #42606. Different terminal, different keybinding, different root cause.

  • #42501 is Shift+Enter in Warp
  • This is an explicit ctrl+j -> chat:newline binding in keybindings.json, running in tmux

tmux doesn't pass Shift+Enter through at all, so Ctrl+J is the only viable newline binding for tmux users. The alt-screen renderer is swallowing it before the keybinding system sees it.

Keeping this open as a separate repro.

sustinbebustin · 6 months ago

Still repros on 2.1.98 (April 9). None of the NO_FLICKER fixes in 2.1.97 touched this.

The Warp Shift+Enter fix (#42501) shipped, but tmux + ctrl+j -> chat:newline is still broken. Since Shift+Enter isn't an option in tmux, there's currently no working way to insert a newline in NO_FLICKER mode from tmux.

One observation from the docs: keybindings.md now lists a Scroll context for "Conversation scrolling and text selection in fullscreen mode." My guess is Ctrl+J is getting routed to that context (or consumed by the alt-screen renderer) before the explicit Chat-context binding gets a chance to handle it.

Also worth noting: fullscreen.md has a "Use with tmux" section that markets NO_FLICKER as tmux-compatible, but only mentions mouse-mode caveats. A docs note about the Ctrl+J limitation would at least save other tmux users the debugging time.

sustinbebustin · 6 months ago

Resolved -- this turned out to be unrelated to CLAUDE_CODE_NO_FLICKER. The actual culprit was CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1. Removing that env var restored ctrl+j -> chat:newline behavior, with NO_FLICKER still enabled.

Leaving a breadcrumb here in case anyone else hits the same combo: if Ctrl+J (or other custom keybindings) stop working and you have CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 set, try removing it. May be worth investigating upstream whether that flag is inadvertently disabling keybinding-related subsystems.

Closing.

github-actions[bot] · 5 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.