@bacnh85/pi-checkpoint
Git-backed undo/redo for Pi — snapshots file state at each turn into a dedicated ref namespace, so /undo rolls back the last message AND its file changes. Fills PI's gap vs OpenCode's git-backed /undo /redo (PI has conversation-level /tree but not file-st
Package details
Install @bacnh85/pi-checkpoint from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@bacnh85/pi-checkpoint- Package
@bacnh85/pi-checkpoint- Version
0.1.0- Published
- Aug 8, 2026
- Downloads
- 92/mo · 22/wk
- Author
- bacnh85
- License
- MIT
- Types
- extension
- Size
- 9.8 KB
- Dependencies
- 0 dependencies · 0 peers
Pi manifest JSON
{
"extensions": [
"./extensions/index.js"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-checkpoint
Git-backed undo/redo for Pi.
Snapshots file state into a dedicated ref namespace at the start of each turn, so /undo rolls back the last message and its file changes together. Fills Pi's gap vs OpenCode's git-backed /undo//redo — Pi has conversation-level /tree//fork//clone but no file-state snapshots tied to turns.
Install
pi install npm:@bacnh85/pi-checkpoint
Commands
| Command | Description |
|---|---|
/undo [n] |
Restore file state to n turns ago (default 1) |
/redo [n] |
Re-apply file changes after /undo |
/checkpoint |
Show the checkpoint stack for this session |
How it works
- On every
turn_start, captures the working/index tree viagit stash create(which does not touch your stash list) and stores it underrefs/pi-checkpoints/<sessionId>/<n>. /undopops snapshots into a redo buffer and restores the prior checkpoint withgit checkout <ref> -- .(tracked files only; untracked files are left alone)./redore-applies from the redo buffer.- Uses a dedicated ref namespace so it never touches your working refs, branches, or stash.
Requirements
- The project must be a git repository. Outside a git repo, the commands no-op gracefully with a notification.
Why
Pi's /tree lets you navigate conversation history, but if the agent made 20 edits across 8 files and you want to roll back one message, you'd manually git stash or git checkout — disconnected from the conversation. pi-checkpoint ties file state to turns so /undo is a single command.
Caveats
- Snapshots are per-session and in-memory; they are not persisted across Pi restarts (the git refs are, but the stack index resets).
- Restore is tracked-files-only. New untracked files created during the undone turn remain until you remove them.
License
MIT