LSBackgroundOnly ignored: background/Cowork sessions each spawn a visible Dock icon

Status Open
Maintainer reply None cached
Activity 0 comments · opened Sep 2, 2026

Description

Background Claude Code sessions spawned by the desktop app (Cowork / local-agent-mode sessions) each show up as a separate rocket-icon entry in the macOS Dock, despite the app bundle declaring itself background-only.

Evidence

Inspecting the spawned bundle at ~/Library/Application Support/Claude/claude-code/<version>/claude.app/Contents/Info.plist:

  • LSBackgroundOnly = true
  • LSUIElement key does not exist
  • Bundle identifier: com.anthropic.claude-code

LSBackgroundOnly = true is macOS's standard signal to suppress a Dock icon entirely, but each spawned session process still gets its own Dock icon (confirmed via ps aux, showing multiple independent claude CLI processes each launched from its own versioned claude.app bundle under local-agent-mode-sessions).

Impact

Running several Cowork / background agent sessions clutters the Dock with duplicate rocket icons that don't correspond to any visible window, with no obvious way to tell which icon maps to which session, and no indication from the Info.plist alone that this would happen.

Suspected cause

Since the manifest already declares LSBackgroundOnly = true, the Dock icon is likely being forced by runtime code (e.g. an explicit Electron/Chromium activation-policy call such as app.dock.show(), or a launch method like open that forces regular app activation) rather than anything the Info.plist controls. A plist-only fix would not address this.

Expected behaviour

Background/Cowork session subprocesses should not appear as separate Dock icons, consistent with their own LSBackgroundOnly declaration.

Environment

  • macOS Darwin 25.6.0
  • Claude desktop app, claude-code bundle version 2.1.255

View original on GitHub ↗