[BUG] Desktop (macOS): global voice shortcut records nothing — "Speak to Claude" overlay appears, no transcript

Status Open
Maintainer reply None cached
Activity 3 comments · opened Sep 26, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

The global voice shortcut in the Claude desktop app does not capture any speech.

When I press the voice shortcut, the orange overlay appears at the bottom of the screen with the text "Speak to Claude, then press ENTER to stop". I speak normally and then press Enter. Nothing is transcribed and nothing is sent to Claude. No error appears in the UI.

It happens every time (100% reproducible).

This looks related to #93636, but that issue is about the microphone button in the composer. This one is about the system-wide voice shortcut and its "Speak to Claude" overlay.

What Should Happen?

My speech should be transcribed and sent to Claude after I press Enter.

Error Messages/Logs

No errors in main.log. The only voice-related lines, one per attempt, are in claude.ai-web.log:

2026-09-26 06:43:24 [warn] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
2026-09-26 06:46:02 [warn] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
2026-09-26 06:48:29 [warn] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
2026-09-26 06:51:35 [warn] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
2026-09-26 06:52:55 [warn] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)
2026-09-26 06:55:12 [warn] The ScriptProcessorNode is deprecated. Use AudioWorkletNode instead. (https://bit.ly/audio-worklet)

The audio pipeline starts, but no transcript is ever produced.
I can share the full diagnostic bundle (claude-diagnostic-2327189f-20260925-2357) privately if needed.

Steps to Reproduce

  1. Open the Claude desktop app on macOS (version 2.9939.2).
  2. Press the global voice shortcut.
  3. The overlay appears: "Speak to Claude, then press ENTER to stop".
  4. Speak for a few seconds.
  5. Press Enter.
  6. Nothing is recorded or transcribed, and no message reaches Claude.

Claude Model

Not sure / Multiple models

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

Claude desktop app 2.9939.2 (Code tab)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

  • macOS 27.0 (26A428), Apple M3 Max, arm64
  • Claude desktop app 2.9939.2

View original on GitHub ↗

3 Comments

quango2304 · 19 days ago

More testing: the bug only happens with the global voice shortcut.

The microphone button in the message box works. On the same Mac, account and network, clicking the mic button in the app's message box transcribes my speech correctly. Only the global voice shortcut (the "Speak to Claude, then press ENTER to stop" overlay) returns nothing. It fails the same way with the default shortcut (Caps Lock) and with my custom one (Cmd+E), so the key binding is not the cause.

Ruled out on my side:

  • Microphone permission: main.log shows Checking microphone permissions state: granted on every attempt.
  • Microphone hardware: my default input (a USB mic) records sound normally. Opening the laptop lid or unplugging the USB mic changes nothing.
  • Network: no proxy, Cloudflare WARP off, Tailscale stopped, direct route to claude.ai.
  • Language: the system locale is en-VN, which the app maps to en for dictation.

What the logs show: every attempt writes only this to swift.log, three times:

[Dictation] 2026-09-26 07:10:53 [info] Stopping speech-to-text session

There is never a start, a transcript or an error line. The native dictation code does have messages such as "Dictation ended with an empty transcript", "Dictation failed to start" and "Server transcript error", but none of them ever appear. So the shortcut's dictation session seems to stop before sending any audio or getting a result, and it fails without reporting anything.

Environment: Claude desktop 2.9939.2, macOS 27.0 (26A428), Apple M3 Max.

dommaskell · 7 days ago

Same here on macOS with the latest Claude desktop app: Caps Lock shows the overlay but nothing is ever transcribed. The composer mic button is a separate path.

Possible root cause (first raised in #52524, which was closed as filed in the wrong repo): the app binary is missing the com.apple.security.personal-information.speech-recognition entitlement.

  • codesign -d --entitlements - /Applications/Claude.app | grep -i speech returns nothing on my machine
  • Claude never appears in System Settings > Privacy & Security > Speech Recognition (the list is empty), so macOS never prompts and silently denies access

That would fit the logs above, where the shortcut's dictation session stops before any start, transcript or error line. Adding the entitlement to the signed build should fix it.

digizensk · 7 days ago

Same bug here, still present in the latest build.

  • Claude desktop 2.26454.0, macOS 26.6.2, Apple Silicon (arm64)
  • Voice shortcut = Caps Lock. Overlay appears ("CAPS LOCK to stop"), nothing is transcribed or inserted.
  • The composer mic button in the same app works fine.
  • Accessibility, Microphone and Input Monitoring granted; app restarted. No change.

swift.log shows only stop lines, never a start, transcript or error:

[Dictation] 2026-10-07 08:58:22 [info] Stopping speech-to-text session
[Dictation] 2026-10-07 08:58:23 [info] Stopping speech-to-text session
[Dictation] 2026-10-07 08:58:23 [info] Stopping speech-to-text session

Confirming the entitlement root cause on this build:

$ codesign -d --entitlements - /Applications/Claude.app | grep -ioE "speech-recognition|audio-input"
audio-input

audio-input is present, com.apple.security.personal-information.speech-recognition is missing, even though Info.plist declares NSSpeechRecognitionUsageDescription ("Claude needs access to speech recognition for voice dictation."). Claude never appears under Privacy & Security > Speech Recognition, so macOS silently denies access.