[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
- Open the Claude desktop app on macOS (version 2.9939.2).
- Press the global voice shortcut.
- The overlay appears: "Speak to Claude, then press ENTER to stop".
- Speak for a few seconds.
- Press Enter.
- 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
3 Comments
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:
main.logshowsChecking microphone permissions state: grantedon every attempt.en-VN, which the app maps toenfor dictation.What the logs show: every attempt writes only this to
swift.log, three times: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.
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-recognitionentitlement.codesign -d --entitlements - /Applications/Claude.app | grep -i speechreturns nothing on my machineThat 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.
Same bug here, still present in the latest build.
swift.logshows only stop lines, never a start, transcript or error:Confirming the entitlement root cause on this build:
audio-inputis present,com.apple.security.personal-information.speech-recognitionis missing, even thoughInfo.plistdeclaresNSSpeechRecognitionUsageDescription("Claude needs access to speech recognition for voice dictation."). Claude never appears under Privacy & Security > Speech Recognition, so macOS silently denies access.