github / github/copilot-cli

Python appears in macOS Dock when Copilot CLI starts LSP servers

オープン
#4,108 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
area:tools
主要言語
Shell
スター
11.2k
フォーク
1.9k
平均マージ
14時間 16分
マージ済み PR(30日)
6

説明

## 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:

```bash
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.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず macOS で問題を再現し、次に Copilot CLI が lsp-python サブプロセスを起動する方法と、失敗した LSP サーバーがセッション開始時に再試行されるかどうかを追跡します。起動環境を、提案されているバックグラウンドのみのオプションと比較します。LSP サーバーが Dock やアプリ切り替え画面に項目を表示せずに実行され、失敗したサーバーが永続的な UI アーティファクトを残さなければ完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
macos, python
領域
cli, devtools, operating-systems
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。