[BUG] Claude Desktop Windows leaves orphaned renderer processes after quit, preventing restart
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?
Environment
- Platform: Claude Desktop (Windows native application)
- Claude Desktop version: 1.0.2339 (1782e2)
- Build date: 2025-12-16T19:35:52.000Z
- Operating System: Windows 11 [adjust if different]
- Architecture: x64
Bug Description
Claude Desktop on Windows fails to properly terminate child processes when quitting the application. After quit, the parent process terminates but 6+ child "Claude" renderer processes remain running as orphans. This prevents the application from restarting - subsequent launch attempts result in immediate silent shutdown without any error message.
What Should Happen?
Expected Behavior
- All Claude processes (parent + child renderer processes) should terminate cleanly on quit
- Application should restart successfully without manual intervention
- Standard Electron app lifecycle cleanup should handle all child processes
Error Messages/Logs
No error messages are displayed. But in the Windows task manager the following situation can be observed:
## Actual Behavior
- Parent Claude process (main, ~333 MB) terminates successfully
- 6+ child renderer processes remain as orphans with varying memory footprints:
- Process 1: 181.5 MB
- Process 2: 67.9 MB
- Process 3: 52.5 MB
- Process 4: 16.4 MB
- Process 5: 10.3 MB
- Process 6: 4.6 MB
- All orphaned processes show:
- 0% CPU usage
- 0 MB/s Disk I/O
- 0 MBit/s Network
- Status: Running (but inactive)
- Restart fails silently until orphaned processes are manually killed
- No error logs or user-facing error messages
Steps to Reproduce
- Launch Claude Desktop normally
- Use the application (normal conversation, any features)
- Quit Claude Desktop via File menu → Quit, OR
- Open Task Manager (Ctrl+Shift+Esc)
- Observe: Multiple "Claude" processes still running (6+ instances) despite main window closed
- Attempt to restart Claude Desktop
- Application launches briefly then immediately shuts down without error message
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
Claude 1.0.2339 (1782e2) 2025-12-16T19:35:52.000Z
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
Workaround
Manual process termination required before each restart:
PowerShell:
Get-Process -Name "Claude" | Stop-Process -Force
Command Prompt:
taskkill /F /IM Claude.exe
Task Manager:
- Select all Claude processes individually
- End Task for each process
- Only then can Claude Desktop restart successfully
Analysis
This appears to be an Electron app lifecycle bug where:
- The quit handler successfully terminates the main/parent process
- Child renderer processes (one per window/webview) are not properly signaled to terminate
- Process cleanup hooks are either missing or failing for renderer processes
- No mutex/lock file prevents launching when orphaned processes exist
Related Issues
- Similar to #14951 (Claude Desktop macOS requires quitting twice - zombie state issue)
- Related to #8865 (Windows background process cleanup, but for Claude Code CLI)
- Pattern suggests cross-platform Electron cleanup problem affecting both macOS and Windows
Impact
Severity: High - Breaks normal application lifecycle
User Impact:
- Users must manually kill processes via Task Manager after every quit
- No clear indication to users why restart fails
- Significant friction in normal usage workflow
- Accumulating orphaned processes can consume system memory over time
Suggested Fix
Electron app should implement proper process cleanup:
- Register quit event handlers for all child processes
- Implement
app.quit()with properapp.on('will-quit')cleanup - Force terminate orphaned renderers if graceful shutdown fails
- Add process mutex to prevent launch when existing processes detected
- Provide user feedback if launch blocked by existing processes
Additional Context
- Issue occurs consistently after every quit, regardless of usage patterns
- No MCP servers or extensions were active during testing
- Clean Windows installation with no known conflicts
- Workaround confirms issue is purely process cleanup related
This issue has 11 comments on GitHub. Read the full discussion on GitHub ↗