Install
$ agentstack add mcp-vvkmnn-claude-vigil-mcp β scanned Β· β verified β works with Claude Code, Cursor, and more.
Security review
β PassedNo issues found. Passed automated security review. Β· v0.1.0 How review works β
- β Prompt-injection patterns
- β Secret / credential exfiltration
- β Dangerous shell & filesystem operations
- β Untrusted network calls
- β Known-malicious package signatures
What it can access
- β Network access No
- β Filesystem access No
- β Shell / process execution Used
- β Environment & secrets No
- β Dynamic code execution No
From automated source analysis of v0.1.0. βUsedβ means the capability is present in the source β more access means more to trust, not that itβs unsafe.
About
claude-vigil-mcp
An Model Context Protocol (MCP) server for checkpoint, snapshot, and file recovery in Claude Code. Perfect snapshots, selective restore, bash safety net, and honest disk management.
[](https://www.npmjs.com/package/claude-vigil-mcp) [](https://opensource.org/licenses/MIT) [](https://www.typescriptlang.org/) [](https://nodejs.org/) [](#) [](https://github.com/Vvkmnn/claude-vigil-mcp)
Every AI coding tool tracks file edits made through its own editor, but none of them track file changes made externally: bash commands (rm, mv, sed -i), Python scripts, build tools, or any process that modifies files outside the editor's API. When those changes go wrong, there's nothing to rewind to. Claude Code's built-in /rewind has additional gaps -- external changes are invisible (#6413, #10077), rewind is all-or-nothing with no selective file restore, timestamps only with no named checkpoints, and reliability bugs (#21608, #18516).
install
Requirements:
[](https://claude.ai/code)
From shell:
claude mcp add claude-vigil-mcp -- npx claude-vigil-mcp
From inside Claude (restart required):
Add this to our global mcp config: npx claude-vigil-mcp
Install this mcp: https://github.com/Vvkmnn/claude-vigil-mcp
From any manually configurable mcp.json: (Cursor, Windsurf, etc.)
{
"mcpServers": {
"claude-vigil-mcp": {
"command": "npx",
"args": ["claude-vigil-mcp"],
"env": {}
}
}
}
There is no npm install required -- no external databases, no indexing, only Node.js built-ins for crypto, compression, and filesystem.
However, if npx resolves the wrong package, you can force resolution with:
npm install -g claude-vigil-mcp
[skill](.claude/skills/claude-vigil)
Optionally, install the skill to teach Claude when to proactively checkpoint before risky work:
npx skills add Vvkmnn/claude-vigil-mcp --skill claude-vigil --global
# Optional: add --yes to skip interactive prompt and install to all agents
This makes Claude automatically save checkpoints before destructive bash commands, risky refactors, or context compaction. The MCP works without the skill, but the skill improves discoverability.
plugin
For automatic checkpointing with hooks and commands, install from the claude-emporium marketplace:
/plugin marketplace add Vvkmnn/claude-emporium
/plugin install claude-vigil@claude-emporium
The claude-vigil plugin provides:
Hooks (background, zero-latency):
PreToolUse (Bash)- auto-quicksave before destructive commands (rm,mv,sed -i,git checkout,git reset)PreCompact- auto-checkpoint before context compaction, both manual (/compact) and automaticStop- auto-checkpoint after Claude finishes a response that included file editsPostToolUse (Write|Edit)- checkpoint after file modificationsSessionEnd- last-chance checkpoint when the session terminates
Command: /checkpoint
Requires the MCP server installed first. See the emporium for other Claude Code plugins and MCPs.
features
5 tools. Perfect snapshots. Content diffs. Safe restores with artifact preservation.
vigil_save
Create a named checkpoint of the entire project. Optional description for annotation. If slots are full, Claude asks the user whether to delete an existing checkpoint or increase capacity.
πΊ ββ saved "before-refactor" ββ 47 files Β· 4.2 MB ββ vigil: 2/3 | quicksave: 8m ago | 4.2 MB
β skipped: node_modules, dist, .next
First save auto-detects derived directories from .gitignore and creates .vigilignore:
πΊ ββ saved "v1.0" ββ 47 files Β· 4.1 MB ββ vigil: 1/3 | quicksave: none | 4.1 MB
β skipped: node_modules, dist, .next
β first save -- confirm these exclusions look correct
β edit .claude/vigil/.vigilignore to adjust
When slots are full:
πΊ ββ 3/3 full -- ask the user before proceeding ββ vigil: 3/3 | quicksave: 2m ago | 8.7 MB
β v1.0 (2h ago) Β· before-refactor (45m ago) Β· experiment (5m ago)
β ASK the user: delete one with vigil_delete, or increase capacity with max_checkpoints?
vigil_list
Browse checkpoints with descriptions. With name: drill into that checkpoint's files. With glob: filter files by pattern.
πΊ ββ 2 checkpoints ββ vigil: 2/3 | quicksave: 3m ago | 8.7 MB
β v1.0 2h ago 47 files
β Initial stable release
β before-refactor 45m ago 47 files
β Snapshot before risky auth changes
β ~quicksave 3m ago
Drill into a checkpoint with glob filtering:
vigil_list name="v1.0" glob="src/auth/**"
πΊ ββ v1.0 ββ 3 of 47 files matching src/auth/** ββ vigil: 2/3 | quicksave: 3m ago | 8.7 MB
β src/auth/index.ts
β src/auth/middleware.ts
β src/auth/types.ts
vigil_diff
Search and investigate previous versions of your codebase. Compare a checkpoint against the current working directory with full unified diffs, compare two checkpoints against each other, retrieve any file's content from any checkpoint, or search for a string across all checkpoints.
Summary of changes:
vigil_diff name="before-refactor" summary=true
πΊ ββ 3 changes vs before-refactor ββ vigil: 2/3 | quicksave: 3m ago | 8.7 MB
β modified src/auth.ts (+8 -2)
β modified src/middleware/validate.ts (+3 -1)
β added src/services/oauth.ts
Full unified diffs:
vigil_diff name="before-refactor"
πΊ ββ 3 changes vs before-refactor ββ vigil: 2/3 | quicksave: 3m ago | 8.7 MB
β modified src/auth.ts (+8 -2)
β modified src/middleware/validate.ts (+3 -1)
β added src/services/oauth.ts
ββ src/auth.ts ββ
--- a/src/auth.ts
+++ b/src/auth.ts
@@ -12,6 +12,8 @@
import { validateToken } from './utils';
-function authenticate(req: Request) {
+function authenticate(req: Request, options?: AuthOptions) {
+ if (options?.skipValidation) return true;
const token = req.headers.authorization;
Retrieve a single file from a checkpoint:
vigil_diff name="v1.0" file="src/auth.ts"
πΊ ββ src/auth.ts from v1.0 ββ
import { validateToken } from './utils';
function authenticate(req: Request) {
const token = req.headers.authorization;
...
ββ diff vs current ββ
--- a/src/auth.ts
+++ b/src/auth.ts
@@ -12,6 +12,8 @@
-function authenticate(req: Request) {
+function authenticate(req: Request, options?: AuthOptions) {
Compare two checkpoints:
vigil_diff name="v1.0" against="before-refactor"
Shows unified diffs between the two checkpoint states -- no working directory involved.
Search across all checkpoints:
vigil_diff name="*" file="src/auth.ts" search="validateToken"
πΊ ββ "validateToken" in src/auth.ts ββ 2 checkpoints ββ vigil: 2/3 | quicksave: 3m ago | 8.7 MB
β v1.0 (2h ago)
β import { validateToken } from './utils';
β before-refactor (45m ago)
β import { validateToken } from './utils';
vigil_restore
Restore the project to a checkpoint state. Quicksaves current state first (undo with vigil_restore name="~quicksave"). Displaced files -- both modified and newly created since the checkpoint -- are preserved in .claude/vigil/artifacts/ so nothing is ever lost. For individual file restores, use vigil_diff to retrieve file content, then apply with Edit.
vigil_restore name="v1.0"
πΊ ββ restored from "v1.0" ββ 47 files ββ vigil: 2/3 | quicksave: just now | 8.7 MB
β preserved 3 displaced files in .claude/vigil/artifacts/restored_v1.0_20260219_143022/
β modified: src/auth.ts (current version saved)
β modified: src/middleware/validate.ts (current version saved)
β new: src/services/oauth.ts (moved, not in checkpoint)
β review .claude/vigil/artifacts/restored_v1.0_20260219_143022/ -- delete when no longer needed
β previous state also quicksaved (use ~quicksave to undo)
β not restored (derived): node_modules, dist
β rebuild these before running the project
vigil_delete
Delete a checkpoint and reclaim disk space. GC removes unreferenced objects. Use all=true to delete everything.
vigil_delete name="v1.0"
πΊ ββ deleted v1.0 ββ reclaimed 241 MB (3,412 objects) ββ vigil: 1/3 | quicksave: 3m ago | 4.5 MB
methodology
How claude-vigil-mcp stores checkpoints:
πΊ claude-vigil-mcp
βββββββββββββββββββ
Claude calls tool
vigil_save
β
βΌ
βββββββββββββββββββ
β spawn worker β
_**[Claudius Proclaimed Emperor](https://en.wikipedia.org/wiki/Claudius#/media/File:Lebayle_-_Claudius.jpg)** by **[Charles Lebayle](https://en.wikipedia.org/wiki/Charles_Lebayle)** (1886). Claudius expanded the Vigiles Urbani from firefighters into Rome's night watch -- guardians who patrolled the city, preserved order, and ensured nothing was lost to the dark._
## Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source β we do not rehost the code.
- **Author:** [Vvkmnn](https://github.com/Vvkmnn)
- **Source:** [Vvkmnn/claude-vigil-mcp](https://github.com/Vvkmnn/claude-vigil-mcp)
- **License:** MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet β be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.