Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Desktop app: sessions die minutes after spawn — "GitHub credential registration is no longer available for this session" makes the github-mcp-server catalog stale and fatal

未关闭
#4,905 4 条评论 3 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
github, rust

调研方向

Reproduce the failure in a desktop-app worktree session using web_search, then compare it with the standalone CLI. Start with ~/.copilot/logs/process--.log and the github-mcp-server credential-registration and tool-catalog paths described in the report. Done means credentials remain usable or refresh on demand, auth loss is isolated to a tool error, and the session does not terminate.

由索引模型根据 Issue 内容生成。

描述

triage

Environment

  • GitHub Copilot desktop app 1.1.22 (commit c3daa01), macOS arm64, bundled CLI 1.0.84-5 (server mode, stdio, Rust JSON-RPC engine)
  • Single github.com account signed in to the app; gh auth status (bundled gh 2.98.0, using the app-exported GH_TOKEN) reports a valid token and gh issue list/gh repo view succeed with it
  • Standalone CLI 1.0.86 (/opt/homebrew/bin/copilot) on the same machine/account is not affected

Summary

In desktop-app sessions the per-session GitHub credential registration that the CLI server's built-in github-mcp-server uses (dynamic header provider) disappears ~3–5 minutes after the CLI process spawns. github-mcp-server initialises fine at warm-up, but the first call to any of its tools (web_search, github-mcp-server-*) then fails with a header-provider error, the MCP tool catalog is marked stale, and every subsequent model turn fails until the session ends with session.end reason: error. Background sub-agents in the same process die with it. The app UI reports "you are no longer logged in to github-mcp-server" and links to the MCP list, but the built-in server is not listed there, so there is nothing the user can re-authenticate. Three full app restarts did not help.

Steps to reproduce

  1. Create a new worktree session in the desktop app and wait ~3 minutes.
  2. Ask the agent to call web_search (or any github-mcp-server-* tool).
  3. Observe the tool error, then repeated session errors on the following turns, then the session terminates.

Actual behaviour

Tool result:

MCP tool catalog changed before tool "github-mcp-server-web_search" could be invoked: Failed to verify cached MCP tools: MCP request failed: Transport send error: unexpected server response: dynamic header provider failed: GitHub credential registration is no longer available for this session

Followed by 5 × session.error:

Execution failed: Failed to refresh MCP tools for server github-mcp-server; the last catalog is stale

then session.end with reason: error — the CLI process exits and the worktree session is unusable.

CLI process log (~/.copilot/logs/process-<spawn>-<pid>.log, trimmed):

18:58:12.987Z [INFO] Starting CLI in server mode (stdio)
18:58:14.824Z [INFO] [rust:rmcp::service] Service initialized as client            <- github-mcp-server OK at warm-up
18:58:44.524Z [INFO] Created session: db372b5f-…
19:01:02.593Z [WARNING] [rust:copilot_runtime::session::mcp::tool_catalog] Failed to list MCP tools for github-mcp-server; continuing with the previously listed tools: MCP request failed: Transport send error: Transport [mcp::client::ToolListRevisionTransport<…StreamableHttpClientWorker<…>>] error: unexpected server response: dynamic header provider failed: GitHub credential registration is no longer available for this session
… (30+ repeats until the session terminates)

Processes that never call github-mcp tools show the same root symptom non-fatally, from ~2 s after spawn, in the remote exporter:

[WARNING] [rust:remote::api_session_exporter] remote session batch flush failed {"error":"GitHub credential authority error: GitHub token provider registration \"<per-process uuid>\" is unavailable", …}

Expected behaviour

  1. The credential registration should remain valid for the lifetime of the CLI process, or be re-established on demand when the header provider needs it.
  2. A failed header refresh / tools/list should surface as a tool error only — it should not invalidate the catalog for unrelated model turns, and it must not terminate the session.
  3. If the built-in server's auth is lost, the UI should offer a way to re-authenticate it (the current "no longer logged in" message points to an MCP list that does not contain the built-in server).

Timeline (UTC, 2026-09-18) — four sessions lost

CLI process spawn First failure Δ
18:07:08 18:10:06 ~3 min
18:11:56 18:15:36 ~3.5 min
18:38:57 18:43:46 ~5 min
18:58:12 19:01:02 ~3 min

The app's accounts.token_updated_at was rewritten at 18:11:42 — inside the failure window — yet the failures continued in processes spawned after that and after each of three app restarts (18:37:51, 18:38:19, 18:55:46).

Also observed 2026-09-16 08:12 (app 1.1.21).

Possible regression: on 2026-09-08 (app 1.1.15) the identical dynamic header provider failed: GitHub credential registration is no longer available for this session error occurred in a sub-agent, but it was a tool-level failure only — the session carried on. Since 1.1.21 the stale catalog is fatal. This looks like two issues: (a) registration loss (older), and (b) fatal stale-catalog handling (newer).

Ruled out

  • Prompts/skills: reproduces with a bare web_search call.
  • Token validity: the app-exported token works for gh API calls; a standalone copilot -p "…call web_search…" --allow-tool web_search succeeds in ~27 s from the same machine/account.
  • Project ↔ account link: the projects are Azure DevOps repos (projects.github_account_id is NULL by design); this only affects create_issue, and the failures reproduce regardless.
  • App state: three app restarts, no change. App logs (github-app.<pid>.log) contain no credential/token-provider entries at the failure times.
  • Other MCP servers (Azure DevOps stdio, Context7/Microsoft Learn HTTP) keep working in the same sessions.

Impact: any agent workflow that touches web_search or github-mcp-server-* in a desktop-app session is currently unusable; the standalone CLI is the only workaround.

Logs

Full CLI process logs for all four failed sessions plus the non-fatal exporter variant, and the app logs, are available — happy to share them privately on request.

主要语言
Shell
星标
11.2k
派生
1.9k
平均合并
14 小时 16 分钟
30 天内合并 PR
6

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

github/copilot-cli 的其他 Issue

查看 github/copilot-cli 的全部 Issue

相似的 Issue

更多 Shell/Bash Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。