claude-code - 💡(How to fix) Fix [BUG] Claude desktop 1.5354.0 hangs after launch — no window, no renderer process spawned (macOS 26.4.1) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#54908Fetched 2026-05-01 05:51:16
View on GitHub
Comments
0
Participants
1
Timeline
5
Reactions
0
Author
Participants
Timeline (top)
labeled ×4cross-referenced ×1

After Squirrel auto-updated Claude desktop to 1.5354.0 at 03:39 local on 2026-04-29, the app launches but never creates its main window. The process registers in AppKit (visible in dock, app menu populated with default macOS items only), GPU and Network helpers spawn correctly, but no --type=renderer subprocess is ever created, no window appears, and the app's custom menu items (Sign In, New Conversation, Settings, etc.) are never registered. There is no crash, no error in stderr, no Crashpad dump.

The bug reproduces with a completely empty user-data-dir (--user-data-dir=/tmp/claude-fresh-$$), which rules out any profile/config corruption and points squarely at the 1.5354.0 binary.

Error Message

After Squirrel auto-updated Claude desktop to 1.5354.0 at 03:39 local on 2026-04-29, the app launches but never creates its main window. The process registers in AppKit (visible in dock, app menu populated with default macOS items only), GPU and Network helpers spawn correctly, but no --type=renderer subprocess is ever created, no window appears, and the app's custom menu items (Sign In, New Conversation, Settings, etc.) are never registered. There is no crash, no error in stderr, no Crashpad dump. 3. Any environment variable / flag that surfaces the unhandled rejection or exception that I'm confident is happening between app.whenReady() and createWindow() in this build. Bloqueante for desktop users on this build path. Claude Code CLI works, so I have a workaround for my own use. But anyone whose Squirrel pulled 1.5354.0 on a similar configuration will see a fully unusable desktop app with no error message.

Root Cause

After Squirrel auto-updated Claude desktop to 1.5354.0 at 03:39 local on 2026-04-29, the app launches but never creates its main window. The process registers in AppKit (visible in dock, app menu populated with default macOS items only), GPU and Network helpers spawn correctly, but no --type=renderer subprocess is ever created, no window appears, and the app's custom menu items (Sign In, New Conversation, Settings, etc.) are never registered. There is no crash, no error in stderr, no Crashpad dump.

The bug reproduces with a completely empty user-data-dir (--user-data-dir=/tmp/claude-fresh-$$), which rules out any profile/config corruption and points squarely at the 1.5354.0 binary.

Fix Action

Fix / Workaround

4235 Thread_*   DispatchQueue_1: com.apple.main-thread  (serial)
+ 4235 start  (in dyld) + 6992
+   4235 ElectronMain  (in Electron Framework) + 120
+     4235 v8::Context::FromSnapshot(...)
+       ...
+         4235 -[NSApplication run]
+           4235 -[NSApplication(NSEventRouting) nextEventMatchingMask:untilDate:inMode:dequeue:]
+             ...
+               4235 _CFRunLoopRunSpecificWithOptions
+                 4235 __CFRunLoopServiceMachPort
+                   4235 mach_msg2_trap

Bloqueante for desktop users on this build path. Claude Code CLI works, so I have a workaround for my own use. But anyone whose Squirrel pulled 1.5354.0 on a similar configuration will see a fully unusable desktop app with no error message.

Code Example

/Applications/Claude.app/Contents/MacOS/Claude

---

4235 Thread_*   DispatchQueue_1: com.apple.main-thread  (serial)
+ 4235 start  (in dyld) + 6992
+   4235 ElectronMain  (in Electron Framework) + 120
+     4235 v8::Context::FromSnapshot(...)
+       ...
+         4235 -[NSApplication run]
+           4235 -[NSApplication(NSEventRouting) nextEventMatchingMask:untilDate:inMode:dequeue:]
+             ...
+               4235 _CFRunLoopRunSpecificWithOptions
+                 4235 __CFRunLoopServiceMachPort
+                   4235 mach_msg2_trap

---

[VERBOSE1] Display: EVENT screen_mac.mm:467 Display[4] bounds=[0,0 5120x2160], workarea=[0,30 5120x2130], scale=1, rotation=0 external detected
(node) DeprecationWarning: The `punycode` module is deprecated.
[WARNING]  ui/base/resource/resource_bundle.cc:526 locale_file_path.empty() for locale es-ES
[VERBOSE1] components/proxy_config/pref_proxy_config_tracker_impl.cc:462 set chrome proxy config service
[VERBOSE1] content/browser/renderer_host/media/media_stream_manager.cc:1517 MSM::InitializeMaybeAsync
[VERBOSE1] content/browser/first_party_sets/first_party_sets_handler_impl_instance.cc:270 Empty path. Failed initializing First-Party Sets database.
[VERBOSE1] components/viz/service/main/viz_main_impl.cc:86 VizNullHypothesis is disabled (not a warning)
RAW_BUFFERClick to expand / collapse

Summary

After Squirrel auto-updated Claude desktop to 1.5354.0 at 03:39 local on 2026-04-29, the app launches but never creates its main window. The process registers in AppKit (visible in dock, app menu populated with default macOS items only), GPU and Network helpers spawn correctly, but no --type=renderer subprocess is ever created, no window appears, and the app's custom menu items (Sign In, New Conversation, Settings, etc.) are never registered. There is no crash, no error in stderr, no Crashpad dump.

The bug reproduces with a completely empty user-data-dir (--user-data-dir=/tmp/claude-fresh-$$), which rules out any profile/config corruption and points squarely at the 1.5354.0 binary.

Environment

  • App: Claude desktop 1.5354.0 (com.anthropic.claudefordesktop)
    • Binary timestamp: 2026-04-29 03:39 (Squirrel auto-update)
    • Universal binary (x86_64 + arm64)
    • Codesign: valid, notarized, Developer ID Application: Anthropic PBC (Q6L2SF6YDW), timestamped 2026-04-29 03:36:54
    • Runtime Version: 26.2.0
    • Gatekeeper: accepted, source=Notarized Developer ID
  • OS: macOS 26.4.1 (build 25E253) — Tahoe
  • Hardware: Mac Studio (Mac16,9), Apple M4 Max, 128 GB RAM, 40-core GPU, Metal 4
  • Display: LG ULTRAFINE 5120×2160 @ 120 Hz (Ultra-wide 5K), single display, main
  • Claude Code CLI: functional (only the desktop app is broken)

Steps to reproduce

  1. Have Claude desktop 1.5354.0 installed (this version was pushed automatically to me via Squirrel; I don't have an earlier .dmg to roll back).
  2. Launch the app: open -a Claude, double-click in Finder, or launch directly:
    /Applications/Claude.app/Contents/MacOS/Claude
  3. Wait 5–10 seconds.
  4. Observe: no window appears. The dock icon shows the app as running.

Expected behavior

A BrowserWindow opens, custom menu items are registered, the app connects to the backend.

Actual behavior

  • No window. Ever.
  • osascript reports windows=0, visible=true, frontmost=true after activate.
  • Process tree contains only main + --type=gpu-process + --type=utility --utility-sub-type=network.mojom.NetworkService. No --type=renderer is ever spawned.
  • Cmd+N does nothing (no New Window / New Conversation handler is registered).
  • App stays alive forever. No crash, no exit, no Crashpad dump.

Menu bar contents (key indicator that JS bootstrap aborted early)

The menu bar contains only the default Cocoa items that AppKit creates automatically. None of the app's custom menu items are registered:

  • File menu items: Close Window, Cerrar todo (← only the AppKit defaults; no New Window, no New Conversation)
  • Claude menu items: About Claude, Services, Hide Claude, Hide Others, Show All, Quit Claude (← only the AppKit defaults; no Settings, no Sign In/Sign Out)

This strongly suggests the main process JS aborts before registering Menu.setApplicationMenu(...) and before calling new BrowserWindow(...).

Main thread sample (5 s)

The main thread sits idle in the normal Cocoa run loop:

4235 Thread_*   DispatchQueue_1: com.apple.main-thread  (serial)
+ 4235 start  (in dyld) + 6992
+   4235 ElectronMain  (in Electron Framework) + 120
+     4235 v8::Context::FromSnapshot(...)
+       ...
+         4235 -[NSApplication run]
+           4235 -[NSApplication(NSEventRouting) nextEventMatchingMask:untilDate:inMode:dequeue:]
+             ...
+               4235 _CFRunLoopRunSpecificWithOptions
+                 4235 __CFRunLoopServiceMachPort
+                   4235 mach_msg2_trap

All worker threads (PerfettoTrace, ThreadPool*, Chrome_IOThread, MemoryInfra) idle in mach_msg/kevent64. This is the textbook "Electron app initialized but doing nothing" state. Compatible with an unhandled rejection silenced by a global handler somewhere between app.whenReady() and createWindow().

Network

  • lsof -nP -iTCP -p <main_pid>: 0 entries
  • lsof -nP -iTCP -p <gpu_helper_pid>: 0 entries
  • lsof -nP -iTCP -p <network_helper_pid>: 0 entries

The app never reaches out to any backend. DNS and TCP to api.anthropic.com:443 work fine from the same machine (verified with dig + nc -zv), so this is not a network issue.

Launch log (ELECTRON_ENABLE_LOGGING=1 --enable-logging=stderr --v=1)

The only non-redundant lines emitted before main goes idle:

[VERBOSE1] Display: EVENT screen_mac.mm:467 Display[4] bounds=[0,0 5120x2160], workarea=[0,30 5120x2130], scale=1, rotation=0 external detected
(node) DeprecationWarning: The `punycode` module is deprecated.
[WARNING]  ui/base/resource/resource_bundle.cc:526 locale_file_path.empty() for locale es-ES
[VERBOSE1] components/proxy_config/pref_proxy_config_tracker_impl.cc:462 set chrome proxy config service
[VERBOSE1] content/browser/renderer_host/media/media_stream_manager.cc:1517 MSM::InitializeMaybeAsync
[VERBOSE1] content/browser/first_party_sets/first_party_sets_handler_impl_instance.cc:270 Empty path. Failed initializing First-Party Sets database.
[VERBOSE1] components/viz/service/main/viz_main_impl.cc:86 VizNullHypothesis is disabled (not a warning)

After that, ~150× the same WARNING ui/base/resource/resource_bundle.cc:1266 locale resources are not loaded, and then nothing. No JavaScript errors, no BrowserWindow log entries, no whenReady/activate traces.

Side note: Display[4] with index 4 on a single-display system is unusual but the bounds match the actual hardware; probably a leftover index from a previous configuration. Likely unrelated.

Hypotheses ruled out (saving you time)

HypothesisTestResult
User profile / config corruption--user-data-dir=/tmp/claude-fresh-$$ (empty profile)Same hang — this is the strongest evidence it's the binary
window-state.json off-screen coordsx=1561, y=33 inside 5120×2160 boundsSane
quickWindowPosition referencing a no-longer-connected 3440×1440 monitorRemoved key from config.jsonSame hang
floatingAtollActive: trueSet to false in claude_desktop_config.jsonSame hang
com.apple.quarantine xattrxattr -dr com.apple.quarantine /Applications/Claude.appSame hang
GPU acceleration--disable-gpuSame hang
Chromium sandbox--no-sandboxSame hang
Codesign / Gatekeepercodesign --verify --verbose=4 + spctl --assessBoth pass cleanly
Hidden Keychain dialogpgrep -f 'SecurityAgent|securityd' + osascript visible-process checkNone pending
Network/DNS to api.anthropic.comdig +short, nc -zv ... 443Resolves and connects
Squirrel rollback to previous version~/Library/Caches/com.anthropic.claudefordesktop.ShipIt/No cache present — rollback not possible

Crash data

None. ~/Library/Application Support/Claude/Crashpad/{pending,completed} are empty. The process does not exit.

Diagnostic bundle

A complete diagnostic bundle (sample, processes, AppleScript output, codesign, system_profiler hardware/displays, redacted config.json, launch log, TCP summary) is available as a public Gist:

https://gist.github.com/abkrim/14b4348bde975eb328870d49003b8a87

All sensitive fields (username, machine serial/UUID, OAuth token cache, dxt allowlist cache) have been redacted before publishing.

What would help

  1. Confirmation whether 1.5354.0 has a known issue affecting macOS 26.x or systems with ultra-wide 5K displays.
  2. A direct download URL (or instructions) for an earlier known-good build (something prior to 2026-04-29 03:39) so I can pin the version while a fix is in flight.
  3. Any environment variable / flag that surfaces the unhandled rejection or exception that I'm confident is happening between app.whenReady() and createWindow() in this build.

Severity / impact

Bloqueante for desktop users on this build path. Claude Code CLI works, so I have a workaround for my own use. But anyone whose Squirrel pulled 1.5354.0 on a similar configuration will see a fully unusable desktop app with no error message.

Happy to provide a fresh sample, spindump, or any other artifact you need.

extent analysis

TL;DR

The issue is likely caused by an unhandled rejection in the JavaScript code between app.whenReady() and createWindow(), and a potential fix or workaround would be to identify and handle this rejection or to roll back to a previous known-good version of the Claude desktop app.

Guidance

  • Review the JavaScript code for any potential rejections or errors that could be occurring between app.whenReady() and createWindow(), and add error handling to catch and log any issues.
  • Attempt to roll back to a previous version of the Claude desktop app to see if the issue is specific to version 1.5354.0.
  • Check the diagnostic bundle provided for any additional clues or information that could help identify the root cause of the issue.
  • Consider adding environment variables or flags to surface any unhandled rejections or exceptions that may be occurring.

Example

No specific code example is provided, as the issue is likely related to the JavaScript code and not a specific code snippet. However, reviewing the code for any potential rejections or errors and adding error handling could look something like:

app.whenReady().then(() => {
  try {
    // code that creates the window
  } catch (error) {
    console.error('Error creating window:', error);
  }
});

Notes

The issue is specific to version 1.5354.0 of the Claude desktop app, and rolling back to a previous version may be a temporary workaround. The diagnostic bundle provided contains additional information that could help identify the root cause of the issue.

Recommendation

Apply a workaround by rolling back to a previous known-good version of the Claude desktop app, if possible, while a fix is in development. This would allow users to continue using the app while the issue is being addressed.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

A BrowserWindow opens, custom menu items are registered, the app connects to the backend.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING