keybindings.json still ignored in Claude Desktop app (Enter/Shift+Enter always submit) — duplicate of closed #25087 / #33034

Status Open
Maintainer reply None cached
Activity 3 comments · opened Aug 31, 2026

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

  1. Create the above ~/.claude/keybindings.json
  2. Open Claude Code in the Claude Desktop app (not terminal, not VS Code)
  3. Type a message and press Enter — it submits instead of inserting a newline
  4. 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

View original on GitHub ↗

3 Comments

JakubSirek · 1 month ago

Confirming on Claude Desktop 1.46388.2, macOS 26.5.2 (build 25F84), Apple Silicon — in the Code tab.

Same config as the report, just with meta+enter instead of alt+enter:

"enter": "chat:newline",
"meta+enter": "chat:submit"

Enter submits the message and the binding has no effect. Unlike the terminal-side reports (#26756, #27222, #31038), where Enter fires newline and submit at the same time, here nothing happens at all — which is consistent with the theory in the issue body that the Desktop composer handles Enter itself and never reaches the shared keybinding resolution.

JakubSirek · 1 month ago

On the cause: the mechanism is documented in #89673 — the Desktop app does not render the TUI, it spawns the bundled binary headless, and the composer is a separate Electron/React component, so keybindings.json cannot reach it by construction. That is more concrete than the touchscreen-detection theory in the issue body, and it also explains why the partial effect reported in the terminal-side threads is absent here.

dandv-pwd · 5 days ago

The inability to assign Cmd+Enter to submit is quite annoying, given that most other desktop agents allow this.