[macOS] Claude Desktop holds NoIdleSleepAssertion indefinitely, preventing system sleep and draining battery
Summary
Claude Desktop (Electron) creates a NoIdleSleepAssertion named "Electron" when the app launches and never releases it until the app is quit. This prevents macOS from entering idle sleep, causing significant battery drain even when the app is not actively in use.
Evidence from pmset -g log
2026-04-04 13:43:28 — PID 1359(Claude) Released NoIdleSleepAssertion "Electron" 98:05:30
2026-04-09 22:45:57 — PID 658(Claude) Released NoIdleSleepAssertion "Electron" 01:39:58
- The assertion was held continuously for 98 hours in one instance.
- Battery drained from 100% → 1% in ~7 hours while the Mac was idle (lid open, no user activity).
Battery drain timeline (2026-04-09)
| Time | Battery | Note |
|------|---------|------|
| 13:15 | 100% | Started on battery |
| 15:39 | 64% | 36% drop in 2 hours |
| 17:35 | 33% | |
| 19:23 | 10% | Low battery warning |
| 20:01 | 2% | Critical warning |
| 20:47 | 1% | Plugged in to AC |
Comparison with other Electron apps
Google Chrome uses the same NoIdleSleepAssertion mechanism but behaves correctly:
- Only creates it during active tasks (e.g.,
"Playing audio") - Releases it within 1–4 minutes when the task ends
Claude Desktop's assertion name is just "Electron" (the default from Electron's powerSaveBlocker.start('prevent-app-suspension')), suggesting it is unconditionally enabled at app startup with no idle-state release logic.
Expected behavior
The app should only hold a sleep-prevention assertion when actively processing (e.g., streaming a response). It should release the assertion when the app is idle.
Environment
- macOS 15 (Darwin 24.6.0)
- Claude Desktop (latest as of 2026-04-09)
- Apple Silicon Mac
This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗