[BUG] App crash and excessive writes when voice activation shortcut triggered with no microphone available (macOS)
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?
When triggering the voice activation shortcut on MacOS with no microphone available, the entire Claude Desktop app crashes immediately (sometimes losing work). It also writes an enormous amount of data to disk. I juggle a microphone between my PC and Mac so I keep running into this.
What Should Happen?
The app should gracefully handle the missing microphone, such as by showing a relevant error/notification. Additionally, there should be global safeguards against writing large unecessary amounts of data to disk. Most of us have SSDs so this is not a polite thing to allow to happen.
Error Messages/Logs
###
### There are 3 files here with noise trimmed out
###
##############################
#
# SANITIZED crash diagnostic — Claude_2026-03-03-153220_[HOSTNAME].diag
# PII redacted: hostname
# NOTE: This is a SEPARATE issue from the voice crash but is triggered by it — excessive disk writes
Date/Time: 2026-03-03 15:31:42.077 -0600
End time: 2026-03-03 15:32:20.029 -0600
OS Version: macOS 26.3 (Build 25D125)
Architecture: arm64e
Data Source: Microstackshots
Command: Claude
Path: /Applications/Claude.app/Contents/MacOS/Claude
Identifier: com.anthropic.claudefordesktop
Version: 1.1.4498 (1.1.4498)
Event: disk writes
Action taken: none
Writes: 2147.50 MB of file backed memory dirtied over 38 seconds (56.59 MB per second average), exceeding limit of 24.86 KB per second over 86400 seconds
Writes limit: 2147.48 MB
Writes caused: 2147.50 MB
Writes duration: 38s
Duration: 37.95s
Hardware model: Mac15,14
Active cpus: 32
Heaviest stack for the target process:
165 thread_start + 8 (libsystem_pthread.dylib + 7080)
165 _pthread_start + 136 (libsystem_pthread.dylib + 27656)
162 uv_cancel + 556 (Electron Framework + 43138060)
143 write + 8 (libsystem_kernel.dylib + 18464)
Powerstats for: Claude [PID redacted]
Footprint: 126.02 MB -> 215.80 MB (+89.78 MB) (max 240.08 MB)
Pageins: 103 pages
# The heaviest stack shows uv_cancel (libuv / Node.js event loop) calling
# write() in a tight loop — 2.1 GB in 38 seconds. This is consistent with
# the crash/restart loop causing excessive state serialization and log writes.
##############################
# SANITIZED main.log — trimmed to crash-relevant events only
# PII redacted: username, org IDs, account IDs, session IDs, hostnames
# Original file: ~9000 lines, reduced to key sequences
# ============================================================
# PHASE 1: First voice activation — mic permissions not yet granted
# ============================================================
2026-03-03 21:08:16 [info] Checking microphone permissions state: not-determined
2026-03-03 21:08:18 [info] Config file written
2026-03-03 21:08:27 [info] Checking microphone permissions state: granted
2026-03-03 21:08:27 [info] Config file written
# ============================================================
# CRASH 1: Dictation started, no mic hardware → app crash
# ============================================================
2026-03-03 21:09:36 [info] Checking microphone permissions state: granted
2026-03-03 21:09:42 [info] Checking microphone permissions state: granted
2026-03-03 21:09:43 [info] Checking microphone permissions state: granted
2026-03-03 21:10:04 [info] Config file written
2026-03-03 21:10:05 [info] Option key double-tapped, toggling Quick Entry overlay
2026-03-03 21:10:28 [info] Checking microphone permissions state: granted
2026-03-03 21:10:28 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start | metadata: {
product_surface: 'claude-desktop',
desktop_variant: 'production',
app_version: '1.1.4498',
platform: 'darwin',
arch: 'arm64',
os_version: '26.3.0'
}
# >>> APP CRASHED — no graceful shutdown, immediate restart <<<
2026-03-03 21:11:10 [info] Starting app {
appVersion: '1.1.4498',
platform: 'darwin',
arch: 'arm64',
nodeVersion: '24.13.0'
}
2026-03-03 21:11:10 [info] [CCD] Initialized with version 2.1.51
2026-03-03 21:11:11 [error] Sentry caught: {
eventId: 'f84022043ed34dd9849754a71a23f057',
type: 'Unknown',
value: 'No message',
stack: undefined
}
# ============================================================
# CRASH 2: Dictation started again immediately after restart → crash
# ============================================================
2026-03-03 21:11:15 [info] Checking microphone permissions state: granted
2026-03-03 21:11:15 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
# >>> APP CRASHED <<<
2026-03-03 21:11:50 [info] Starting app { appVersion: '1.1.4498' }
2026-03-03 21:11:51 [error] Sentry caught: {
eventId: '21644c8519db4fd0a1ce3e9370673743',
type: 'Unknown',
value: 'No message',
stack: undefined
}
# ============================================================
# CRASH 3: Dictation triggered again → crash
# ============================================================
2026-03-03 21:27:33 [info] Checking microphone permissions state: granted
2026-03-03 21:28:31 [info] Checking microphone permissions state: granted
2026-03-03 21:28:56 [info] Checking microphone permissions state: granted
2026-03-03 21:28:56 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
# >>> APP CRASHED <<<
2026-03-03 21:30:29 [info] Starting app { appVersion: '1.1.4498' }
2026-03-03 21:30:30 [error] Sentry caught: {
eventId: '45f49032d48246cbb6e0efda7bb8c028',
type: 'Unknown',
value: 'No message',
stack: undefined
}
# ============================================================
# CRASH 4: Dictation triggered again mid-startup → crash
# ============================================================
2026-03-03 21:30:38 [info] Checking microphone permissions state: granted
2026-03-03 21:30:38 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
# >>> APP CRASHED <<<
2026-03-03 21:30:59 [info] Starting app { appVersion: '1.1.4498' }
2026-03-03 21:30:59 [error] Sentry caught: {
eventId: '854de9ca44af4bb381a96b0de73f4534',
type: 'Unknown',
value: 'No message',
stack: undefined
}
# ============================================================
# PHASE 2: Mic plugged in — dictation works, NO crash
# ============================================================
2026-03-03 21:33:57 [info] Checking microphone permissions state: granted
2026-03-03 21:33:57 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
2026-03-03 21:34:02 [info] Checking microphone permissions state: granted
2026-03-03 21:34:02 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
# >>> NO CRASH — app continues running normally <<<
# >>> Clean shutdown initiated by user at 21:34:33 <<<
2026-03-03 21:34:33 [info] beforeQuit: handler fired, going down
2026-03-03 21:34:33 [info] Starting onQuitCleanup, hiding windows
2026-03-03 21:34:37 [info] Successully ran all onQuitCleanup handlers, marking readyForQuit
2026-03-03 21:34:37 [info] beforeQuit: handler is ready for quit, so quitting
# ============================================================
# App restarted, dictation works again (mic still connected)
# ============================================================
2026-03-03 21:35:01 [info] Starting app { appVersion: '1.1.4498' }
2026-03-03 21:36:57 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
2026-03-03 21:37:02 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
# >>> NO CRASH — dictation continues working with mic connected <<<
# ============================================================
# PHASE 3: Mic unplugged again — crash loop resumes
# ============================================================
# CRASH 5:
2026-03-03 22:16:24 [info] Checking microphone permissions state: granted
2026-03-03 22:16:24 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
# >>> APP CRASHED <<<
2026-03-03 22:16:45 [info] Starting app { appVersion: '1.1.4498' }
2026-03-03 22:16:45 [error] Sentry caught: {
eventId: 'dc9a768618c74306bab95c8d7605e57e',
type: 'Unknown',
value: 'No message',
stack: undefined
}
# CRASH 6:
2026-03-03 22:17:33 [info] Checking microphone permissions state: granted
2026-03-03 22:17:33 [info] [EventLogging] Queuing event: desktop_quick_entry_dictation_start
# >>> APP CRASHED <<<
2026-03-03 22:18:05 [info] Starting app { appVersion: '1.1.4498' }
2026-03-03 22:18:06 [error] Sentry caught: {
eventId: 'b6e88009408f4de1aef76f275f11cc15',
type: 'Unknown',
value: 'No message',
stack: undefined
}
##############################
# SANITIZED swift.log — all entries preserved (file was small)
# PII redacted: username paths
[Hotkey] 2026-03-03 15:31:47 [info] No accessibility permissions, using basic hotkey detection
[Hotkey] 2026-03-03 16:10:53 [info] No accessibility permissions, using basic hotkey detection
[Hotkey] 2026-03-03 17:13:06 [info] No accessibility permissions, using basic hotkey detection
# --- Crash period (no mic) ---
[Hotkey] 2026-03-03 21:11:11 [info] No accessibility permissions, using basic hotkey detection
[Hotkey] 2026-03-03 21:11:50 [info] No accessibility permissions, using basic hotkey detection
[Hotkey] 2026-03-03 21:30:29 [info] No accessibility permissions, using basic hotkey detection
[Hotkey] 2026-03-03 21:30:59 [info] No accessibility permissions, using basic hotkey detection
# --- Mic connected period (working) ---
[Hotkey] 2026-03-03 21:33:33 [info] No accessibility permissions, using basic hotkey detection
[Dictation] 2026-03-03 21:34:02 [info] Stopping speech-to-text session
[Hotkey] 2026-03-03 21:35:01 [info] No accessibility permissions, using basic hotkey detection
[Dictation] 2026-03-03 21:37:02 [info] Stopping speech-to-text session
# --- Mic unplugged again (crash period) ---
[Hotkey] 2026-03-03 22:16:45 [info] No accessibility permissions, using basic hotkey detection
[Hotkey] 2026-03-03 22:18:06 [info] No accessibility permissions, using basic hotkey detection
# NOTE: [Dictation] "Stopping speech-to-text session" entries ONLY appear
# during the 21:33-21:37 window when a physical mic was connected.
# During crash periods, no [Dictation] entries appear at all — the app
# dies before the Swift dictation layer can log anything.
Steps to Reproduce
- Open Claude Desktop for MacOS
- Ensure no microphone (physical or virtual) is attached.
- Press the voice activation shortcut.
- The app crashes.
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude 1.1.4498 (24f768) 2026-02-26T19:47:09.000Z
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗