keybindings.json still ignored in Claude Desktop app (Enter/Shift+Enter always submit) — duplicate of closed #25087 / #33034
Context
This is a follow-up to two closed issues that report the same problem: #25087 (closed as "completed", but later comments — including a Karabiner workaround suggestion — indicate the underlying issue is still present) and #33034 (closed as "not planned" and auto-locked; the bot suggested filing a new issue if still affected).
What's Wrong?
~/.claude/keybindings.json is respected in the terminal TUI and the VS Code extension, but is completely ignored in the Claude Desktop app. Enter (and Shift+Enter) always submit the message regardless of the configured bindings.
keybindings.json contents:
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"enter": "chat:newline",
"alt+enter": "chat:submit"
}
}
]
}
Steps to Reproduce
- Create the above
~/.claude/keybindings.json - Open Claude Code in the Claude Desktop app (not terminal, not VS Code)
- Type a message and press Enter — it submits instead of inserting a newline
- Restart the app — behavior is unchanged
What Should Happen?
Enter should insert a newline, and Alt+Enter should submit, matching the configured bindings — the same behavior as the terminal TUI and VS Code extension.
Additional Information
A comment on #25087 from a maintainer/contributor (@shigennn) notes the composer in the Desktop app handles Enter itself and decides its behavior based on whether the machine has a touchscreen, which would explain why keybindings.json has no effect there. If that's accurate, the fix likely needs to live in the Desktop app's composer component rather than in the shared keybindings resolution.
Platform
Claude Desktop app
Operating System
macOS