Describe the bug
When starting a new session with /new, the CLI abandons the current session's in-memory modelMetrics without triggering a session.shutdown event. All token usage accumulated in the outgoing session is permanently lost — it is never written to events.jsonl and never appears in subsequent /usage output or /chronicle queries.
The only reliable way to persist usage statistics is to exit the CLI entirely with Ctrl+D, which is disruptive when the intent is simply to start a fresh session.
Affected version
GitHub Copilot CLI 1.0.67.
Steps to reproduce the behavior
- Start the Copilot CLI and do some work (several turns, tool calls, etc.)
- Run
/usage — note the token totals shown
- Run
/new to start a fresh session
- In the new session, run
/resume to return to the previous session
- Run
/usage
/usage shows zero / only the new segment's usage.
The previous session's token counts are gone.
Inspecting ~/.copilot/session-state/<uuid>/events.jsonl confirms no session.shutdown event was written for the outgoing session.
Expected behavior
/usage after step 5 shows the token totals from before /new was called (same as step 2).
Additional context
Running /usage before /new shows the numbers correctly — they exist in memory at that point. The data is only lost because /new does not flush the outgoing session before switching.
The fix appears straightforward: trigger session.shutdown (and flush modelMetrics to events.jsonl) for the outgoing session when /new is invoked, before initialising the new one — the same cleanup path that Ctrl+D takes.
Environment
• OS: Linux (dev container)
• CLI version: 1.0.67
Describe the bug
When starting a new session with
/new, the CLI abandons the current session's in-memorymodelMetricswithout triggering asession.shutdownevent. All token usage accumulated in the outgoing session is permanently lost — it is never written toevents.jsonland never appears in subsequent/usageoutput or/chroniclequeries.The only reliable way to persist usage statistics is to exit the CLI entirely with Ctrl+D, which is disruptive when the intent is simply to start a fresh session.
Affected version
GitHub Copilot CLI 1.0.67.
Steps to reproduce the behavior
/usage— note the token totals shown/newto start a fresh session/resumeto return to the previous session/usage/usageshows zero / only the new segment's usage.The previous session's token counts are gone.
Inspecting
~/.copilot/session-state/<uuid>/events.jsonlconfirms nosession.shutdownevent was written for the outgoing session.Expected behavior
/usageafter step 5 shows the token totals from before/newwas called (same as step 2).Additional context
Running
/usagebefore/newshows the numbers correctly — they exist in memory at that point. The data is only lost because/newdoes not flush the outgoing session before switching.The fix appears straightforward: trigger
session.shutdown(and flushmodelMetricstoevents.jsonl) for the outgoing session when/newis invoked, before initialising the new one — the same cleanup path that Ctrl+D takes.Environment
• OS: Linux (dev container)
• CLI version: 1.0.67