Preflight Checklist
What's Wrong?
The ~/.claude/keybindings.json configuration file is completely ignored when running Claude Code through the Claude desktop app on macOS.
Both Enter and Shift+Enter submit the message, regardless of the keybindings config. The config sets "enter": null to unbind Enter from submit and "ctrl+enter": "chat:submit" to use Ctrl+Enter instead, but this has no effect.
The file is valid JSON, correct encoding, located at the correct path (~/.claude/keybindings.json), and verified with python3 -c "import json; json.load(open(...))".
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": null,
"ctrl+enter": "chat:submit"
}
}
]
}
What Should Happen?
- Enter should insert a newline (unbound from submit via
"enter": null)
- Ctrl+Enter should submit the message (bound via
"ctrl+enter": "chat:submit")
- Shift+Enter should insert a newline
- The
~/.claude/keybindings.json config should be respected in the Claude desktop app, just as it is in the CLI
Error Messages/Logs
Steps to Reproduce
- Create
~/.claude/keybindings.json with the following content:
{
"$schema": "https://www.schemastore.org/claude-code-keybindings.json",
"$docs": "https://code.claude.com/docs/en/keybindings",
"bindings": [
{
"context": "Chat",
"bindings": {
"enter": null,
"ctrl+enter": "chat:submit"
}
}
]
}
- Open Claude Code in the Claude desktop app (not terminal or VS Code)
- Type a message in the chat input
- Press Enter — it submits the message instead of inserting a newline
- Press Shift+Enter — it also submits the message instead of inserting a newline
- The keybindings.json config appears to be completely ignored
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
No response
Claude Code Version
2.1.39 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
Terminal/Shell note: Running Claude Code inside the Claude desktop app on macOS (not a standalone terminal). The desktop app is not listed in the Terminal/Shell dropdown, so "Other" was selected.
This issue may be that the Claude desktop app simply does not read ~/.claude/keybindings.json at all. Either the desktop app should respect the keybindings config, or there should be a separate keybinding setting within the desktop app itself.
OS: macOS (Darwin 25.3.0)
Preflight Checklist
What's Wrong?
The
~/.claude/keybindings.jsonconfiguration file is completely ignored when running Claude Code through the Claude desktop app on macOS.Both Enter and Shift+Enter submit the message, regardless of the keybindings config. The config sets
"enter": nullto unbind Enter from submit and"ctrl+enter": "chat:submit"to use Ctrl+Enter instead, but this has no effect.The file is valid JSON, correct encoding, located at the correct path (
~/.claude/keybindings.json), and verified withpython3 -c "import json; json.load(open(...))".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": null, "ctrl+enter": "chat:submit" } } ] }What Should Happen?
"enter": null)"ctrl+enter": "chat:submit")~/.claude/keybindings.jsonconfig should be respected in the Claude desktop app, just as it is in the CLIError Messages/Logs
Steps to Reproduce
~/.claude/keybindings.jsonwith the following content:{ "$schema": "https://www.schemastore.org/claude-code-keybindings.json", "$docs": "https://code.claude.com/docs/en/keybindings", "bindings": [ { "context": "Chat", "bindings": { "enter": null, "ctrl+enter": "chat:submit" } } ] }Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
No response
Claude Code Version
2.1.39 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
Terminal/Shell note: Running Claude Code inside the Claude desktop app on macOS (not a standalone terminal). The desktop app is not listed in the Terminal/Shell dropdown, so "Other" was selected.
This issue may be that the Claude desktop app simply does not read
~/.claude/keybindings.jsonat all. Either the desktop app should respect the keybindings config, or there should be a separate keybinding setting within the desktop app itself.OS: macOS (Darwin 25.3.0)