Windows: app window is always-on-top with no way to disable it
Summary
The Claude Code desktop app window stays above all other windows. There is no setting, shortcut, or menu item to turn this off.
Environment
- Claude Code 2.1.138 (desktop app)
- Windows 10 Pro 22H2 (10.0.19045)
Steps to reproduce
- Open the Claude Code desktop app
- Open any other window (browser, editor, file explorer)
- Click that window, or Alt+Tab to it
Expected: the other window comes to the front.
Actual: it takes keyboard focus but renders behind the Claude Code window, which stays on top.
Why this matters
It makes ordinary side-by-side work impractical — reading documentation in a browser while working in Claude Code, or copying between the two. The app cannot be used as one window among several.
What I checked before filing
- No
alwaysOnTopkey in~/.claude/settings.json - No window or appearance toggle in the app
- No documented keyboard shortcut
Workaround
Windows virtual desktops (Win+Ctrl+D), which works because "always on top" is per-desktop. Minimising the window also works but is not practical for frequent switching.
Related issues (both closed, neither fixed)
- #87895 (Windows) — closed as a duplicate of #66516
- #66516 (macOS) — closed as "not planned" / "invalid"
#87895 was closed as a duplicate of an issue that had itself been closed as not-planned, so this looks like it fell between the two rather than having been declined on merit. It still reproduces on 2.1.138.
Showing cached comments. Read the full discussion on GitHub ↗
6 Comments
Still reproducing on Windows 11 Pro 25H2 (OS build 26200.9168), Claude Desktop 1.34493.1 (255293). Same symptom as described here — Claude Desktop stays on top of every other window; the other app takes focus but renders behind Claude instead of in front. No alwaysOnTop setting, no toggle in the app.
Agree this got lost in the shuffle between #87895 and #66516 — neither was actually resolved on the merits, and it's still broken. Would be good to get this reopened/tracked properly rather than closed as a dup of a dup.
Workaround for now: minimizing manually, or closing app.
Reproduced on Windows 11 Enterprise 10.0.26200, Claude desktop app 1.37937.1 (bundled Claude Code 2.1.246). I dug into the logs and I think I have the root cause, at least for this variant of the symptom.
Root cause: the stealth-update z-order restore anchors on the taskbar
Before applying a background ("stealth") update, the app saves the window that was immediately above it in z-order, so it can put itself back in the same place after relaunching. After the relaunch it re-inserts its window behind that saved anchor. If the anchor happens to be a topmost window, the app inherits
WS_EX_TOPMOSTfrom it, because on Win32SetWindowPos(hwnd, <a topmost window>, ...)makeshwndtopmost too.On my machine the anchor was the Windows taskbar.
%LOCALAPPDATA%\Claude\Logs\main.log:Identifying both handles afterwards with
GetWindowLong(GWL_EXSTYLE):| hwnd | process | class | ExStyle | topmost |
|---|---|---|---|---|
|
0x100DE(the anchor) | explorer.exe |Shell_TrayWnd— the Windows taskbar |0x00000088=WS_EX_TOPMOST \| WS_EX_TOOLWINDOW| yes ||
0x80C42(Claude main window) | claude.exe |Chrome_WidgetWin_1, title "Claude" |0x00280108(containsWS_EX_TOPMOST) | yes |The same code path ran on an earlier update with a different anchor (
2026-08-21 09:29:18 [info] [stealth-relaunch] Loaded z-order anchor: 0x10428), so which window ends up as the anchor — and therefore whether you get the bug — depends on what was above the app when the update fired. That would explain why this is intermittent for some people and permanent for others.Ruled out on my machine:
alwaysOnTopkey in%APPDATA%\Claude\config.jsonorwindow-state.json.[popout-restore] Saving 0 session popout(s) for next launch.[cu-side-panel] initialized, neverdocked.Why restarting the app appears not to help
I restarted the app three times and the window stayed on top. The log explains it: clicking the icon starts a second process that hands off to the still-running primary and exits, so the offending window is never recreated.
A real fix requires quitting from the tray, not closing the window. Worth knowing when triaging reports that say "restarting doesn't help".
Suggested fix
In the stealth-relaunch z-order restore, don't inherit topmost from the anchor: check
GetWindowLong(anchor, GWL_EXSTYLE) & WS_EX_TOPMOSTand, if set, insert withHWND_NOTOPMOST(or pick the first non-topmost window below the anchor) instead of inserting after it. ExcludingWS_EX_TOOLWINDOWand shell windows (Shell_TrayWnd,Shell_SecondaryTrayWnd) when saving the anchor would work too. Explicitly re-asserting the pre-update topmost state after the restore would make it robust either way.Live workaround, no restart needed
Clears the flag on the running window:
Verified:
ExStylewent from0x00280108to0x00280100and the window behaves normally again. It will come back at the next stealth update if the anchor is topmost again.I am having the same issue.
This is absolutely annoying. Please fix this!
I can confirm that the workaround from @nvi-nsi works to fix the issue for the moment.
Same here!