[BUG] v2.1.94 silently changed Ctrl+L default from app:redraw to chat:clearInput
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+l → chat: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)
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗