github / github/copilot-cli

Store session state under project `.copilot/` directory to support ephemeral home directories (Docker, CI, devcontainers)

Đang mở
#3,021 1 bình luận 1 reaction 0 người được giao Xem trên GitHub
area:configuration area:sessions
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

Mở 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

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.