Store session state under project `.copilot/` directory to support ephemeral home directories (Docker, CI, devcontainers)
- Ngôn ngữ chính
- Shell
- Star
- 11.2k
- Fork
- 1.9k
- Merge trung bình
- 14 giờ 16 phút
- Pull request đã merge (30 ngày)
- 6
Mô tả
### Problem
When running Copilot CLI inside a Docker container, devcontainer, or CI runner, the home directory (`~/.copilot/session-state/`) is ephemeral — it is lost when the container exits. This makes `/session restore SESSION_ID` permanently unavailable after the container shuts down, even if the working project directory is a persistent volume mount or git checkout.
The session state that gets lost includes:
- The event log (`events.jsonl`) needed for session restore
- Checkpoints and their index
- Any session artifacts written to the session folder
### Proposed solution
Allow the runtime to store (or mirror) session state under a `.copilot/session-state/` directory inside the project working directory, rather than exclusively under `~/.copilot/session-state/`.
A reasonable implementation:
1. If a `.copilot/` directory exists in the current working directory when a session starts, store session state there instead of (or in addition to) `~/.copilot/session-state/`.
2. When resolving a session ID for `/session restore`, also search `.copilot/session-state/` in the cwd.
3. Optionally: support a config option or environment variable (e.g. `COPILOT_SESSION_DIR`) to explicitly override the storage root.
The `.copilot/` directory in the project can already be used as home for agent-created artifacts (like `plan.md`). Keeping session state there as well makes the whole session context co-located with the code it relates to, and committable to git if desired.
### Relation to existing issues
Issue #1947 requests cloud-synced sessions for cross-device continuity. This request is narrower — it only requires the runtime to look in an additional local directory, with no network dependency.
### Environment
Any environment where `$HOME` is not persistent: Docker containers, GitHub Codespaces rebuilds, CI runners, devcontainers.
Suggested label: area:sessions
Hướng dẫn đóng góp
Hướng nghiên cứu
Begin by locating the session-state writer and the `/session restore` lookup; the issue names no source files or tests. Check behavior in a persistent project directory with an ephemeral home, including existing `.copilot/session-state/` and the proposed `COPILOT_SESSION_DIR` override. Done means session state is stored or found as specified and restore works after the home directory is discarded.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- docker, shell
- Lĩnh vực
- cli, devops, infrastructure
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100