claude-code - 💡(How to fix) Fix [BUG] v2.1.94 silently changed Ctrl+L default from app:redraw to chat:clearInput [2 comments, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#45364Fetched 2026-04-09 08:07:09
View on GitHub
Comments
2
Participants
1
Timeline
8
Reactions
0
Participants
Timeline (top)
labeled ×6commented ×2

Fix Action

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 }
    }
  ]
}

Code Example

$ 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"

---

{
  "bindings": [
    {
      "context": "Global",
      "bindings": { "ctrl+l": "app:redraw" }
    },
    {
      "context": "Chat",
      "bindings": { "ctrl+l": null }
    }
  ]
}
RAW_BUFFERClick to expand / collapse

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)

extent analysis

TL;DR

To fix the issue, update the ~/.claude/keybindings.json file to restore the original Ctrl+L binding to app:redraw in the Global context and null out the conflicting Chat context binding.

Guidance

  • Identify the conflicting keybinding in the Chat context by checking the ~/.claude/keybindings.json file.
  • Update the ~/.claude/keybindings.json file with the provided workaround configuration to restore the original binding.
  • Verify the change by checking the keybinding behavior in the application.
  • Be aware that this workaround may need to be reapplied if the application updates override the custom keybindings.

Example

The provided JSON configuration snippet can be used as a template to update the ~/.claude/keybindings.json file:

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

Notes

This workaround may not be necessary if the application developers revert the change in a future update. It's essential to monitor future releases for any changes to keybindings.

Recommendation

Apply the workaround by updating the ~/.claude/keybindings.json file, as it provides a reliable solution to restore the original Ctrl+L binding behavior.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING