Store session state under project `.copilot/` directory to support ephemeral home directories (Docker, CI, devcontainers)
- Linguagem predominante
- Shell
- Estrelas
- 11.2k
- Forks
- 1.9k
- Merge médio
- 14h 16min
- PRs com merge (30d)
- 6
Descrição
### 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
Guia de contribuição
Direção de pesquisa
Comece localizando o gravador do estado da sessão e a busca de `/session restore`; a issue não menciona arquivos-fonte nem testes. Verifique o comportamento em um diretório de projeto persistente com um diretório home efêmero, incluindo um `.copilot/session-state/` existente e a substituição proposta `COPILOT_SESSION_DIR`. Está concluído quando o estado da sessão é armazenado ou encontrado conforme especificado e restore funciona depois que o diretório home é descartado.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- docker, shell
- Domínio
- cli, devops, infrastructure
- Tipo de issue
- Funcionalidade
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Pouca atividade
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 48/100