github / github/copilot-cli

Python appears in macOS Dock when Copilot CLI starts LSP servers

Offen
#4,108 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

area:tools
Vorherrschende Sprache
Shell
Sterne
11.2k
Forks
1.9k
Ø Merge
14 Std. 16 Min.
Gemergte PRs (30 T.)
6

Beschreibung

Summary

When the Copilot CLI app starts a session, it launches Python LSP language servers that register as GUI applications in the macOS Dock. The Python icon appears in the Dock and persists even after the server process exits (with failure). This is disruptive — users do not expect a terminal/CLI tool to spawn visible GUI processes.

Filed by GitHub Copilot on behalf of @hubwriter.

Environment

  • OS: macOS (Darwin, Apple Silicon)
  • Copilot CLI version: 1.0.70
  • Python: /usr/bin/python3 (system Python)
  • Affected LSP servers: lsp-python (and possibly others — all 6 LSP servers fail on startup in this environment)

Steps to Reproduce

  1. Open the Copilot CLI app
  2. Start or resume any session in a repository
  3. Observe the macOS Dock

Expected Behavior

  • LSP servers should run as background-only processes
  • No icons should appear in the macOS Dock or app switcher
  • Failed LSP servers should not leave visible artifacts in the UI

Actual Behavior

  • Python icon appears in the macOS Dock when lsp-python is launched
  • The icon persists even after the process exits with code 1
  • This happens on every session start/refresh, repeatedly
  • All 6 LSP servers (typescript, omnisharp, ruby, rust, python, go) fail to initialize but Python is the only one that shows a Dock icon

LSP Server Status (all failing)

lsp-typescript — exited with code 1
lsp-omnisharp  — exited with code 131
lsp-ruby       — exited with code 127
lsp-rust       — exited with code 1
lsp-python     — exited with code 1
lsp-go         — exited with code 1

Suggested Fix

  1. Set LSBackgroundOnly or LSUIElement in the Python subprocess environment or use LSBackgroundOnly in the process launch to prevent Dock registration
  2. Use NSApplication.setActivationPolicy(.prohibited) or equivalent when spawning LSP subprocesses
  3. Do not launch LSP servers that will fail — if the server binary is not available or crashes on startup, skip it rather than retrying each session
  4. Launch Python with -S or as a module in a way that does not trigger the macOS window server registration (e.g., avoid importing Tk/tkinter)

Workaround

Users can manually add LSBackgroundOnly to the Python.app Info.plist:

sudo /usr/libexec/PlistBuddy -c "Add :LSBackgroundOnly bool true" \
  /Library/Frameworks/Python.framework/Versions/3.X/Resources/Python.app/Contents/Info.plist

But this affects all Python GUI applications system-wide, which is not ideal.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das Problem unter macOS zu reproduzieren, und verfolge dann, wie die Copilot CLI den lsp-python-Subprozess startet und ob fehlgeschlagene LSP-Server beim Sitzungsstart erneut versucht werden. Vergleiche die Startumgebung mit den vorgeschlagenen Optionen, die ausschließlich im Hintergrund ausgeführt werden. Als abgeschlossen gilt die Aufgabe, wenn LSP-Server ohne Einträge im Dock oder App-Umschalter laufen und fehlgeschlagene Server keine dauerhaften UI-Artefakte hinterlassen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
macos, python
Bereich
cli, devtools, operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.