[BUG] Every keystroke duplicated in Claude Desktop (macOS) — app-only, persists until relaunch

Status Closed — not planned
Maintainer reply None cached
Activity 1 comment · opened Sep 7, 2026 · closed Sep 10, 2026

What's Wrong?

Every keypress in Claude Desktop is entered twice ("hello" -> "hheelllloo"). It affects the chat composer and other input fields in the app. Onset is intermittent; once it starts, it persists for the life of the process.

Scoping already done:

  • Only Claude Desktop is affected. Every other macOS app types normally at the same moment, including while the bug is active.
  • Dictation / voice input is unaffected — text inserted without key events appears once.
  • Fully quitting and relaunching the app clears it every time.
  • Initially appeared to be triggered by opening Claude Design, but has since recurred in a session where Design was never opened.
  • No system-level input remappers, no Karabiner, no macOS text replacement involved (ruled out by the app-specificity).

What Should Happen?

Each keypress produces one character.

Suspected cause

A duplicate input handler. The app registers a global keyboard event tap on macOS for the Caps Lock voice shortcut; a second tap being registered — or a webview keydown listener that is not torn down — would produce exactly this signature: doubling confined to Claude's own windows, key events only, cleared by process restart.

Possibly related: #77771 (voice input duplicates phrases, Claude Desktop, macOS, area:desktop) — same "input event processed twice" class, inverse input path.

Steps to Reproduce

  1. Use Claude Desktop on macOS normally for a period.
  2. At some point every keystroke begins registering twice.
  3. Doubling continues across all windows and views in the app; other applications remain unaffected.
  4. Quit and relaunch — resolved until it recurs.

Is this a regression? Yes — began roughly 48 hours before filing, recurring since.

Environment

  • Claude Desktop version: 1.46388.4
  • macOS: macOS 26.5 (25F71) (arm64)

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗