[BUG] Claude.app (macOS): ShipIt falsely reports successful update but bundle swap never completes

Resolved 💬 2 comments Opened Apr 23, 2026 by seabash Closed May 29, 2026

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?

Claude.app repeatedly shows "Relaunch to update", yet relaunching does not result in updated version.

Claude.app version stuck at (1.2581.0) and the staged version (1.3883.0)
The ShipIt log excerpt — especially the false-positive "Installation completed successfully" line
The bundle ID: com.anthropic.claudefordesktop.ShipIt

What Should Happen?

Relaunching Claude.app should allow the update to complete.

Error Messages/Logs

Pertinent output from `tail -f ShipIt_stderr.log`

2026-03-17 04:10:37.067 ShipIt[54779:42998617] Moved bundle contents from file:///var/folders/ml/7vxjbf7s5pq0k8cvn3bqtym40000gn/T/com.anthropic.claudefordesktop.ShipIt.qfTu7AJK/Claude.app to file:///Applications/Claude.app/
2026-03-17 04:10:37.197 ShipIt[54779:42998617] Couldn't remove owned bundle at location file:///var/folders/ml/7vxjbf7s5pq0k8cvn3bqtym40000gn/T/com.anthropic.claudefordesktop.ShipIt.qfTu7AJK/Claude.app, error NSError { domain: NSCocoaErrorDomain, code: 4, description: "“Claude.app” couldn’t be removed.", failureReason: "The file doesn’t exist.", underlying error: NSError { domain: NSPOSIXErrorDomain, code: 2, description: "The operation couldn’t be completed. No such file or directory" }, userInfo: {
    NSFilePath = "/var/folders/ml/7vxjbf7s5pq0k8cvn3bqtym40000gn/T/com.anthropic.claudefordesktop.ShipIt.qfTu7AJK/Claude.app";
    NSURL = "file:///var/folders/ml/7vxjbf7s5pq0k8cvn3bqtym40000gn/T/com.anthropic.claudefordesktop.ShipIt.qfTu7AJK/Claude.app";
    NSUserStringVariant =     (
        Remove
    );
} }
2026-03-17 04:10:37.563 ShipIt[54779:42998617] Installation completed successfully
2026-03-17 04:10:37.563 ShipIt[54779:42998617] ShipIt quitting

Steps to Reproduce

  1. Launch Claude.app and note currently-running version.
  2. Observe bottom left if/when an update is downloaded and notice a message to "Relaunch to update (v1.xxxx.x)".
  3. Relaunch/restart Claude.app.
  4. Notice message to "Relaunch to update" and compare currently-installed version.

Claude Model

Sonnet (default)

Is this a regression?

No, this never worked

Last Working Version

_No response_

Claude Code Version

2.1.108 (Claude Code)

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

macOS version: 26.4.1

ShipIt completes its run and falsely reporting success despite not having swapped the bundle
The root cause seems to be a bug in ShipIt's move/swap logic—it's getting confused between the temp staging path in /var/folders/ and the cached copy in the ShipIt cache dir, resulting in a no-op with a false positive exit

Manual work-around has been to quit all Claude-related processes, manually delete /Applications/Claude.app, then move staged version from ~/Library/Caches/com.anthropic.claudefordesktop.ShipIt/update.[x]/Claude.app into /Applications.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗