github / github/copilot-cli

VS Code Copilot CLI panel shows empty transcript after Remote-SSH reconnect, though session data is intact on disk

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

还没有人认领这个 Issue。

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

描述

Describe the bug

After the local machine is locked (e.g. stepping away briefly) and VS Code's Remote-SSH connection drops and later reconnects, the Copilot CLI chat panel in VS Code shows the current/recent session as empty (no turns), giving the impression that chat history was lost.

This is not actual data loss. I confirmed the underlying data is fully intact:

  • ~/.copilot/session-store.db (SQLite) still contains all turns for the affected sessions in the turns table, with complete user_message and assistant_response text.
  • Running the standalone copilot CLI in a terminal against the same session shows the full history correctly.
  • Only the VS Code panel's view of the session appears empty/reset after the reconnect.

This has happened repeatedly (3 times in one day) immediately following machine lock -> SSH reconnect cycles.

Affected version

GitHub Copilot CLI 1.0.80

Steps to reproduce the behavior
  1. Open a VS Code window connected via Remote-SSH to a remote Linux host.
  2. Start a Copilot CLI chat/agent session in VS Code and have a multi-turn conversation.
  3. Lock the local machine long enough for the Remote-SSH connection to drop (observed even after a short lock).
  4. Unlock the machine and let VS Code reconnect to the remote host.
  5. View the Copilot CLI chat panel for the session that was active before the lock.
  6. See: the panel shows an empty/reset transcript, even though ~/.copilot/session-store.db on the remote host still has all turns for that session (verified directly via sqlite3 ~/.copilot/session-store.db "SELECT * FROM turns WHERE session_id='<id>'"), and the standalone copilot terminal CLI shows the full history for the same session.
Expected behavior

After a Remote-SSH reconnect, the VS Code Copilot CLI panel should reload the session transcript from the on-disk store (~/.copilot/session-store.db), the same way the standalone terminal copilot CLI does, instead of showing an empty/reset conversation.

There appears to be a stale or invalidated in-memory/cache state on the VS Code extension/agent-host side (possibly related to ~/.copilot/vscode.session.metadata.cache.json) that isn't correctly rehydrated from the durable on-disk session store after a connection drop.

Additional context
  • Operating system (remote host): Ubuntu 24.04.4 LTS (Noble Numbat)
  • Connection type: VS Code Remote-SSH
  • Integration: VS Code "agent host" plugin (agent-host-copilotcli)
  • Impact: Users mistakenly believe their conversation history and context are lost after every lock/reconnect cycle, disrupting long-running remote development work, even though no data is actually destroyed.

贡献指南

打开贡献指南

从这里开始

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

调研方向

重现 lock 和 Remote-SSH 重连流程,然后将 VS Code 面板状态与 ~/.copilot/session-store.db 和 ~/.copilot/vscode.session.metadata.cache.json 进行比较;独立的 copilot CLI 和 sqlite3 查询提供完整历史记录的基线。完成的标准是:重新连接后,VS Code Copilot CLI 面板会重新加载受影响 session 的各轮对话,而不是显示空的 transcript。

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

评估

技术栈
shell, sqlite, vscode
领域
cli, desktop, developer-experience
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
活跃
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 发到你的邮箱

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