Skip to content

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

Description

@ao2

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:configurationConfig files, instruction files, settings, and environment variablesarea:sessionsSession management, resume, history, session picker, and session state

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions