ctrl+b not passed through to terminal line editing even when unbound

Resolved 💬 3 comments Opened Mar 7, 2026 by shannonbradshaw Closed Apr 5, 2026

Summary

Emacs keybindings mostly work in the chat input, but ctrl+b (back one character) does not function as expected. The keystroke appears to be swallowed by the application even after unbinding it in all relevant contexts.

Steps to reproduce

  1. Create ~/.claude/keybindings.json with ctrl+b unbound in Global, Chat, and Task contexts:
{
    "$schema": "https://www.schemastore.org/claude-code-keybindings.json",
    "$docs": "https://code.claude.com/docs/en/keybindings",
    "bindings": [
      {
        "context": "Global",
        "bindings": {
          "ctrl+b": null
        }
      },
      {
        "context": "Chat",
        "bindings": {
          "ctrl+b": null
        }
      },
      {
        "context": "Task",
        "bindings": {
          "ctrl+b": null
        }
      }
    ]
}
  1. Restart Claude Code
  2. Type some text in the chat input
  3. Press ctrl+b to move the cursor back one character

Expected behavior

Cursor moves back one character (standard emacs/readline keybinding).

Actual behavior

Nothing happens. The keystroke is consumed but not passed through to the terminal's line editing.

Additional context

  • /doctor reports no keybinding configuration issues
  • Other emacs keybindings (ctrl+a, ctrl+e, ctrl+f, etc.) work correctly in chat input
  • The default binding for ctrl+b is task:background in the Task context
  • Platform: macOS (Darwin 24.3.0)

View original on GitHub ↗

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