[BUG] v2.1.94 silently changed Ctrl+L default from app:redraw to chat:clearInput

Resolved 💬 5 comments Opened Apr 8, 2026 by elibarzilay Closed May 1, 2026

Bug Description

v2.1.94 changed the default keybinding for Ctrl+L from app:redraw (screen refresh) to chat:clearInput (wipe prompt text) without any mention in the release notes.

This is a breaking change to muscle memory — Ctrl+L has meant "redraw/refresh" in every terminal, shell, and REPL for decades. Silently changing it to a destructive input action (clearing what you've typed) is a serious regression.

Verification

Confirmed by searching the binaries directly:

$ strings ~/.local/share/claude/versions/2.1.92 | grep -o '"ctrl+l":"[^"]*"'
"ctrl+l":"app:redraw"

$ strings ~/.local/share/claude/versions/2.1.94 | grep -o '"ctrl+l":"[^"]*"'
"ctrl+l":"chat:clearInput"

In v2.1.92, ctrl+l was bound to app:redraw in the Global context. In v2.1.94, a new ctrl+lchat:clearInput binding was added in the Chat context, which takes precedence over the Global binding.

Expected Behavior

Ctrl+L should remain bound to app:redraw, matching its behavior in v2.1.92 and every other terminal application.

Workaround

Simply rebinding ctrl+l to app:redraw in the Chat context doesn't work — app:redraw is registered in the Global context and does nothing when invoked from Chat. You need to both null out the Chat binding and restore the Global one in ~/.claude/keybindings.json:

{
  "bindings": [
    {
      "context": "Global",
      "bindings": { "ctrl+l": "app:redraw" }
    },
    {
      "context": "Chat",
      "bindings": { "ctrl+l": null }
    }
  ]
}

Environment

  • Version: 2.1.96 (regression introduced in 2.1.94)
  • Platform: Linux (WSL2)

View original on GitHub ↗

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