[BUG] /status footer hint shows "Esc to cancel" even when Escape is unbound in keybindings.json
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
The footer hint at the bottom of the /status modal is hardcoded to display "Esc to cancel", regardless of the user's ~/.claude/keybindings.json configuration.
I rebound cancel away from escape (because I run Claude Code inside an nvim terminal where Esc has special meaning) by setting "escape": null in every relevant context. The actual key behavior is correctly disabled — pressing Esc no longer cancels in Chat, Confirmation, Help, etc. — but the /status modal still tells me to press Esc.
So the UI hint and the actual key binding disagree. A new user following the hint would press a key that does nothing.
What Should Happen?
The footer hint should reflect the effective binding for the relevant cancel/dismiss action — e.g. read it from the resolved keybinding map. If the user has unbound \escape\ and bound \ctrl+c\ instead, the hint should say "Ctrl+C to cancel" (or be hidden if no binding is set).
This likely affects more than just \/status\ — any modal that prints a hardcoded "Esc to ..." label has the same problem (e.g. attachments, diff dialog, help overlay).
Steps to Reproduce
- Create \
~/.claude/keybindings.json\with:
\\\json\
{
"\$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"bindings": [
{ "context": "Select", "bindings": { "escape": null, "ctrl+c": "select:cancel" } }
]
}
\\
- Restart Claude Code.
- Run \
/status\. - Observe the footer at the bottom of the modal.
Expected: footer says "Ctrl+C to cancel" (or whatever is currently bound).
Actual: footer says "Esc to cancel".
Additional Notes
- There is no \
Status\context listed in the available contexts, so users have no way to override the binding for this modal specifically. - Pressing Esc in \
/status\does still close the modal — suggesting the modal's escape handler is hardcoded and bypasses \keybindings.json\entirely. If that's correct, the bug is twofold: (a) the binding override isn't honored for this modal, and (b) the displayed hint can't be customized either.
Claude Code Version
2.1.128
Platform
Anthropic API (Claude Team account)
Operating System
Linux (Ubuntu, kernel 6.17)
Terminal/Shell
Ghostty + zsh
Is this a regression?
Not sure — the keybindings system is relatively new, so this may have always been the case.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗