← All tools

PromptWake for GitHub Copilot

Copilot Chat is stored per workspace, in a directory named after a hash of your project path — so renaming a folder empties your history. PromptWake keeps one record that does not move when the folder does.

How GitHub Copilot loses history

History is keyed to the workspace path. Rename or move the project and the chat panel comes up empty.

~/Library/Application Support/Code/User/workspaceStorage/<hash>/chatSessions/
Scope
One history per workspace, not per developer
Directory name
A hash of the project folder's URI
Format
JSONL journal in recent versions, JSON before that
Measured here
66 workspaces, 64 with chat sessions
What PromptWake captures
  • Every Copilot Chat prompt and response, per workspace
  • The model that answered, when the session records it
  • One timeline across all your workspaces, not one per folder
  • A record that survives the workspace hash changing

Count what is on your machine. Most people are surprised by how many workspaces have accumulated:

R="$HOME/Library/Application Support/Code/User/workspaceStorage"
find "$R" -path '*chatSessions/*' -type f | wc -l

The hash is the whole problem

VS Code derives the storage directory from the workspace folder's URI. Open the same project through a different path — after a rename, a move, a symlink, a dev container, or saving it as a .code-workspace — and you get a new hash, a new empty history, and the old sessions still sitting on disk under the previous one.

Nothing warns you, and nothing links the two. The fix when it happens is to find the old directory by grepping workspace.json for the old path and copying chatSessions across, which works but requires knowing this in advance.

The format changed underneath, too

Recent VS Code versions stopped writing one JSON object per session. They now write a JSONL journal: the first line is a snapshot with an empty request list, and every message afterwards arrives as a patch appended to the file. Anything reading only the old format sees a session with no messages in it.

We hit this ourselves — on the machine used to write this, 83 of 86 session files are in the new format and the three legacy files contain nothing. PromptWake replays the journal, so what you get is the actual conversation rather than an empty shell.

What PromptWake does with Copilot specifically

The daemon walks every workspace directory for every VS Code-family editor you have — Code, Insiders, VSCodium — reads each session, and assembles one timeline per developer rather than one per folder. Renaming a project no longer breaks the record, because the record is not filed under the folder's name.

One honest limitation: Copilot sessions do not record the file diff the way a terminal agent's transcript does, so for Copilot we capture prompt and response, not the resulting change. Where a tool writes the diff, we keep it; where it does not, we do not invent it.

npx promptwake doctor     # what every AI tool here is holding
npx promptwake init .     # start capturing this project

When it matters

Deeper on where GitHub Copilot keeps its history, and how to back it up without PromptWake: read the guide.