[FEATURE] VS Code extension should read ~/.claude/keybindings.json

Resolved 💬 3 comments Opened Mar 15, 2026 by roynuj Closed May 4, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

The CLI supports custom keybindings via ~/.claude/keybindings.json, but the VS Code extension's graphical chat panel ignores this file entirely. This means users can't customize keyboard shortcuts for the chat input — bindings like the newline key are hard-coded to Shift+Enter with no override.

This is a problem for users whose muscle memory comes from apps with different conventions (e.g., Opt/Alt+Enter in Slack). I repeatedly send incomplete messages by accidentally hitting Enter or Opt+Enter when I mean to insert a newline. The config file exists, the CLI respects it, but the extension does not.

This is part of a broader pattern where the VS Code extension does not respect CLI configuration files (see also #15772, #29159, #18191, #33865). #25087 describes the same issue with the Claude Code desktop app.

Proposed Solution

The VS Code extension should read ~/.claude/keybindings.json and apply custom bindings in the graphical chat panel, consistent with CLI behavior. For example, the following config works in the CLI today but is ignored by the extension:

{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "alt+enter": "chat:newline"
      }
    }
  ]
}

With this change, Opt/Alt+Enter would insert a newline in the extension's chat input, just as it does in the CLI.

Alternative Solutions

Karabiner-Elements: I'm currently using a macOS-level key remap (Opt+Enter → Shift+Enter, scoped to VS Code) as a workaround. It works but requires a system-level tool dependency for what should be a simple config option.
useCtrlEnterToSend setting: This changes Enter to newline and Ctrl+Enter to send, which avoids accidental sends but doesn't allow customizing the newline key itself.

Priority

Low - Nice to have

Feature Category

Other

Use Case Example

  1. User configures ~/.claude/keybindings.json with alt+enter → chat:newline
  2. User opens Claude Code in the VS Code extension
  3. User types a multi-line prompt, pressing Opt+Enter between lines
  4. Currently: each Opt+Enter sends the incomplete message
  5. Expected: Opt+Enter inserts a newline, matching the CLI behavior with the same config file

Additional Context

_No response_

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗