[BUG] keybindings.json not loaded
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
~/.claude/keybindings.json is not being loaded. No keybindings take effect at all, including nullifying enter in the Chat context (Enter still submits).
My keybindings.json:
{
"$docs": "https://code.claude.com/docs/en/keybindings",
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"bindings": [
{
"bindings": {
"enter": null,
"escape": null,
"escape escape": null
},
"context": "Chat"
},
{
"bindings": {
"escape": null
},
"context": "Confirmation"
}
]
}
Setting enter to null was a test to confirm the file isn't being read at all. Enter still submits messages.
What Should Happen?
With the config above, enter should not submit, escape should not cancel, and escape escape should not clear input.
Error Messages/Logs
$ cat ~/.claude/keybindings.json
# outputs the correct JSON shown above
Steps to Reproduce
- Place a valid
keybindings.jsonat~/.claude/keybindings.jsonwithenterset tonullin theChatcontext - Restart Claude Code
- Type text and press Enter — it still submits (keybindings not loaded)
Claude Model
claude-opus-4-6
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.77 (Claude Code)
Platform
Anthropic API
Operating System
NixOS Linux (kernel 6.19.8)
Terminal/Shell
zsh (Ghostty)
Additional Information
One possibly relevant detail: ~/.claude/keybindings.json is a symlink in my setup. ~/.claude/settings.json is also a symlink and is loaded correctly, so this may or may not be the cause.
Related issues:
- #15786 — Atomic file writes fail with multi-level symlinks
- #25087 — keybindings.json ignored in Claude desktop app
- #32248 — Custom keybindings aren't picked up on first run
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗