[BUG] Claude Desktop (Windows): background auto-update launches second instances that restore and focus the main window over fullscreen apps

Status Open
Reported on v2.1.286
Maintainer reply None cached
Activity 0 comments · opened Oct 1, 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?

This is a Claude Desktop app bug (Windows, winget/Squirrel install, not MSIX).

When the built-in updater finds and stages a new version, two short-lived Claude processes are launched ~4–5 seconds apart. Each one hits the single-instance lock and triggers second-instance in the already-running app, which restores and focuses the main window.

Result: while I'm not using Claude at all (app minimized or window closed to tray, no chats or scheduled tasks running), the Claude window suddenly pops up in front of everything, including fullscreen YouTube video. Closing the window doesn't help, because the second launch reopens it a few seconds later. No update notification is shown.

Related: #94460 (option to prevent focus stealing), #62447.

What Should Happen?

Update-related launches (installer hooks / staged version starting) should not show, restore or focus the main window. The update should be downloaded and staged silently, without interrupting whatever the user is doing.

Error Messages/Logs

Pattern is identical for every update in main.log (%LOCALAPPDATA%\Claude\Logs\main.log):

Update found        | Window focused | Second instances started
09-28 21:00:32      | 21:13:07       | 21:13:06 and 21:13:11
09-29 23:05:57      | 23:09:38       | 23:09:38 and 23:09:42
10-01 22:37:01      | 22:39:45       | 22:39:45 and 22:39:49

Excerpt from 2026-10-01:
2026-10-01 22:37:00 [info] [updater] Checking for updates
2026-10-01 22:37:01 [info] [updater] Found an update, downloading
2026-10-01 22:39:45 [info] [SkillsPlugin] Window focused — polling now (last poll was 28890446ms ago)
2026-10-01 22:39:46 [info] second-instance: suppressing duplicate argv
2026-10-01 22:39:45 [info] Starting app { appVersion: '2.19675.0', isPackaged: true, platform: 'win32', arch: 'x64' }
2026-10-01 22:39:45 [info] [windows-app-job] skipped: not an MSIX install
2026-10-01 22:39:46 [info] Not main instance, returning early from app ready
2026-10-01 22:39:49 [info] Starting app { appVersion: '2.9939.4', isPackaged: true, platform: 'win32', arch: 'x64' }
2026-10-01 22:39:49 [info] [windows-app-job] skipped: not an MSIX install
2026-10-01 22:39:50 [info] Not main instance, returning early from app ready
2026-10-01 22:39:56 [info] [updater] Update downloaded and ready to install { releaseName: '2.19675.0' }

Steps to Reproduce

  1. Install Claude Desktop on Windows via winget (winget install Anthropic.Claude, Squirrel-based install in %LOCALAPPDATA%\AnthropicClaude).
  2. Run the app, then minimize it or close the window to the tray.
  3. Open a fullscreen app (e.g. a YouTube video in fullscreen in the browser) and leave Claude idle.
  4. Wait until the built-in updater finds a new release.
  5. A few minutes after "[updater] Found an update, downloading", the Claude window is restored and brought to the foreground over the fullscreen app – typically twice in a row, ~4–5 s apart.

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

Claude Desktop 2.16120.0 (running), update 2.19675.0 staged; embedded Claude Code 2.1.286

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

Install: winget, package Anthropic.Claude 2.19675.0. Installed folders: %LOCALAPPDATA%\AnthropicClaude\app-2.16120.0 and app-2.19675.0 (no other installs found).
I previously used the MSIX install but moved to winget because old MSIX versions were never cleaned up and filled the disk.

Unclear: the second launched instance reports appVersion '2.9939.4', but no claude.exe with that version exists on disk.

View original on GitHub ↗