{"_id":"@ahmedshaikh/checkpoint-mcp","name":"@ahmedshaikh/checkpoint-mcp","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@ahmedshaikh/checkpoint-mcp","version":"0.1.0","type":"module","description":"Agent-native working-tree checkpoints as an MCP server — snapshot the project before a risky change and restore it exactly if things go wrong. Git-independent, captures tracked + untracked files.","bin":{"agent-checkpoint":"dist/cli.js"},"engines":{"node":">=18"},"scripts":{"serve":"tsx src/server.ts","cp":"tsx src/cli.ts","build":"tsc","test":"node --import tsx --test --test-force-exit test/*.test.ts","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","zod":"^3.23.8"},"devDependencies":{"@types/node":"^20.11.0","tsx":"^4.7.0","typescript":"^5.4.0"},"license":"MIT","author":{"name":"ahmedshaikh"},"keywords":["mcp","model-context-protocol","claude","agent","ai","checkpoint","snapshot","undo","filesystem"],"repository":{"type":"git","url":"git+https://github.com/RaziStuff/checkpoint-mcp.git"},"homepage":"https://github.com/RaziStuff/checkpoint-mcp#readme","bugs":{"url":"https://github.com/RaziStuff/checkpoint-mcp/issues"},"publishConfig":{"access":"public"},"gitHead":"15bed36b54bd0944e7fbe3a83d3173222a3e80a3","_id":"@ahmedshaikh/checkpoint-mcp@0.1.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-uyDiaF7aYaWMBCyisBueRYZjNXtMBI9XpJIOTnOnJeyFaIuxoYKnDDABKEdzUv3Bf8wKtMTDLROiKcs6k7Y1Zg==","shasum":"fcf1a6ce0dd75c09ab6e991d925426a9397a828a","tarball":"https://registry.npmjs.org/@ahmedshaikh/checkpoint-mcp/-/checkpoint-mcp-0.1.0.tgz","fileCount":6,"unpackedSize":14066,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDtosidB1E6r2PqswbHGYX1JCS5vNQ7zeDCOO/jAlcWdgIgVvAeiDag8besskgv48XBIEtcRMBJxFLoVnwdBf9d1AQ="}]},"_npmUser":{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"},"directories":{},"maintainers":[{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/checkpoint-mcp_0.1.0_1782701028424_0.23759300834765784"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T02:43:48.248Z","0.1.0":"2026-06-29T02:43:48.556Z","modified":"2026-06-29T02:43:48.779Z"},"maintainers":[{"name":"ahmedshaikh","email":"ahmed@shaikh1.com"}],"description":"Agent-native working-tree checkpoints as an MCP server — snapshot the project before a risky change and restore it exactly if things go wrong. Git-independent, captures tracked + untracked files.","homepage":"https://github.com/RaziStuff/checkpoint-mcp#readme","keywords":["mcp","model-context-protocol","claude","agent","ai","checkpoint","snapshot","undo","filesystem"],"repository":{"type":"git","url":"git+https://github.com/RaziStuff/checkpoint-mcp.git"},"author":{"name":"ahmedshaikh"},"bugs":{"url":"https://github.com/RaziStuff/checkpoint-mcp/issues"},"license":"MIT","readme":"# checkpoint\n\nAn **undo button for agents.** Snapshot a project's working tree before a risky\nchange; if it goes wrong, restore it *exactly*. Git-independent, captures tracked\n**and** untracked files.\n\n```\ncheckpoint(\"before refactor\")   →  cp_lz9k_a1  (142 files)\n… big multi-file edit …\nverify()                        →  ok: false\nrestore(\"before refactor\")      →  reverted everything, clean slate\n```\n\n## Why\n\nAgents make sweeping multi-file changes constantly, with no real undo. Git exists,\nbut agents use it inconsistently and it doesn't cleanly capture untracked files.\n`checkpoint` is a dead-simple safety primitive: one call before, one call to roll\nback. It pairs with `verify` — checkpoint → edit → verify → restore if it broke.\n\n## Tools\n\n- **`checkpoint(label?)`** — snapshot now; returns an id + label.\n- **`restore(checkpoint)`** — make the working tree match a checkpoint *exactly*\n  (revert modified, recreate deleted, remove created-since). Destructive by design.\n- **`diff_checkpoint(checkpoint)`** — what changed since (added/modified/deleted), no restore.\n- **`list_checkpoints()`** · **`drop_checkpoint(checkpoint)`**\n\n## How it works\n\nCopies in-scope files into a store *outside* the project\n(`~/.agent-checkpoints/<root>/<id>/`) with a content-hash manifest. Restore is\nexact: it overlays the snapshot and removes anything created since. Excludes\n`node_modules`, `.git`, build dirs, and files > 5 MB.\n\n## Setup\n\n```bash\nnpm install\nnpm test\n```\n\n```bash\nclaude mcp add checkpoint -e CHECKPOINT_ROOT=/path/to/project -- node /abs/path/checkpoint/dist/server.js\n# or CLI: agent-checkpoint checkpoint \"before X\" | restore <id> | diff <id> | list\n```\n\n## Honest limits\n\n- **Copy-based**, so a checkpoint is a full snapshot of in-scope files (fine for\n  source trees; excludes the heavy dirs). Not deduplicated across checkpoints.\n- **`restore` is destructive** on purpose — it removes files created since the\n  checkpoint. That's the point, but know it before calling.\n- Empty directories left by removed files aren't pruned.\n","readmeFilename":"README.md","_rev":"1-909944ed2090783fde2c79a9864cfb62"}