[BUG]
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?
Caps Lock dictation captures and sends audio but never returns transcribed text
Environment:
macOS (Sonoma+)
Claude Desktop, bundle ID com.anthropic.claudefordesktop
Tested with Jabra Evolve2 40 USB headset and built-in webcam mic
Both mics confirmed working via QuickTime audio recording
Description:
Pressing Caps Lock activates the dictation UI (orange glow at bottom of screen). Audio is captured from the microphone and sent to the transcription service over WebSocket. However, no transcribed text ever appears. Pressing Caps Lock again to stop recording dismisses the UI with no output.
What the logs show (log stream --predicate 'process == "Claude"' --level debug):
AVAudioEngine starts successfully, installs a tap at 48kHz mono
A WebSocket connection is established (HTTP 101), ~238KB of audio data is sent over ~7 seconds
CoreAudio error -10877 (kAudioUnitErr_InvalidElement) when querying channel layout on the aggregate device input bus: "Error getting channel layout from agg device on bus 1: sub-device #channels = 1, err = -10877"
The WebSocket closes normally (code 1001) after recording stops
No transcription text is rendered
What the logs don't show:
No Speech Recognition TCC request — the app uses its own WebSocket-based transcription, not Apple's SFSpeechRecognizer
No errors from the transcription service response
No indication of what the service returned
Reproduction: 100% reproducible. Happens every time with either mic.
Possibly related: #30293 (voice mode "No speech detected" despite working mic)
What Should Happen?
Service should take audio and return text
Error Messages/Logs
TCC / Permission Requests
17:25:28.481472 - TCC: Requesting permission (app foreground)
17:25:33.624122 - TCC: Second request + Quick Entry window opens
17:25:33.624557 - QuickEntryPermissionBarDismissed key not found in defaults
17:25:33.703947 - TCC: Third permission request
Audio Device Selection (the problematic chain)
17:25:33.706656 - AUHAL selects device 150 (Jabra — Input:No Output:Yes)
17:25:33.710219 - Device change from 150 → 246 (aggregate device)
17:25:33.710269 - Jabra Evolve2 40: AppleUSBAudioEngine:GN Audio A/S:Jabra Evolve2 40:A00013F9E3750E:2
17:25:33.710415 - Device 246: Input:No Output:No ← unusual
17:25:33.729092 - Input stream format: 1 ch, 48000 Hz, Float32
CoreAudio Error
17:25:33.767975 - throwing -10877
17:25:33.768001 - Error getting channel layout from agg device on bus 1: sub-device #channels = 1, err = -10877
Audio Engine Runs Despite Error
17:25:33.802614 - Audio tap installed: 1 ch, 48000 Hz, Float32
17:25:33.820093 - AVAudioEngine starts
17:25:34.032551 - Audio recording started on aggregate device CADefaultDeviceAggregate-79448-0
WebSocket Connection (transcription service)
17:25:33.757727 - TLS connected (TLS 1.3, AES_256_GCM_SHA384, alpn http/1.1)
17:25:34.077665 - WebSocket handshake successful (HTTP 101)
Recording Ends, No Text Returned
17:25:40.262073 - Audio tap removed (~7 seconds of recording)
17:25:40.315765 - AVAudioEngine stopped
17:25:42.454491 - Connection summary: bytes in/out: 4933/238351, duration 8.748s
17:25:42.465309 - WebSocket closed with code 1001
The key takeaway for the bug report: 238 KB of audio was sent to the transcription service, 4.9 KB came back, but no transcribed text appeared in the UI. The asymmetry (238 KB out vs 4.9 KB in) suggests the server received the audio but either the response didn't contain usable transcription or the client didn't render it. The CoreAudio -10877 error on the aggregate device is suspicious but appears non-fatal since the audio engine started and data was sent successfully.
Steps to Reproduce
I hit my Caps Lock
A big orange could comes up at the bottom of the Mac desktop screen
It looks like it is listening
After I finish, I press Caps lock again and nothing happens
I go to a Claude input box and there is no text, and no text shows up if I press return
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.101 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Thank you for your help with this
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗