CodeRewind
Logs every document edit in a VS Code workspace (typed keystrokes, pastes, autocomplete/AI insertions, anything that changes a document) to a local JSONL file, so the session can be replayed and reviewed later. Nothing leaves your machine.
Usage
- Run CodeRewind: Start Recording (Command Palette) to begin logging the open workspace. A status bar item shows recording state and can toggle it.
- Edit files normally.
- Run CodeRewind: Stop Recording when done. The session is saved to
.vscode/keylog/session-<timestamp>.jsonl in the workspace.
- Use CodeRewind: Export Current Session As... (while still recording) or grab the
.jsonl file directly from .vscode/keylog/ (use CodeRewind: Reveal Log Folder to find it).
Add .vscode/keylog/ to your .gitignore if you don't want session logs committed.
Edit attribution
- Paste via
Ctrl+V/Cmd+V is intercepted and stamped "source":"paste-command".
- Accepting an inline suggestion (e.g. Copilot ghost text) via
Tab is intercepted and stamped "source":"suggestion-accept".
- Editor focus/blur state is also logged as context for manual review.
Edits with a source are confirmed; everything else falls back to a size/speed heuristic. Paste via the right-click context menu, and AI tool UIs that don't go through VS Code's built-in inline-suggestion commit command, aren't captured by the intercepts and fall back to the heuristic.
Replay
Replay a session's .jsonl file with the companion CodeRewind web app (drag the file onto the page, no server or build step needed).
Each line of the .jsonl file is one JSON object: either an edit:
{"t":1700000000123,"file":"src/app.ts","type":"insert","rangeStart":120,"rangeEnd":120,"text":"const x = 1;","textLength":12,"docVersion":42}
or a session/file marker:
{"t":1700000000000,"file":"","type":"session-start"}