Open-source · Rust engine + MCP · MIT

Undo anything
your AI agent does.

Files come back. So does the charge, the sent email, the dropped table, the cloud resource. When an agent goes off the rails, one command rewinds all of it.

Works with any agent
Claude CodeCursorAiderCodexWindsurfCline

The objection everyone has

“Why not just git?”

Because git only sees your files. Your agent does far more than edit files — and none of the rest leaves a trail you can reverse.

git / editor undo
  • ✓ Reverts file changes you committed
  • ✕ Can't undo a POST that charged a card
  • ✕ Can't recall a sent email
  • ✕ Can't restore a dropped table
  • ✕ Can't delete the cloud bucket it made
walkback
  • ✓ Files, byte-for-byte (or via git — your call)
  • ✓ Reverses API mutations via compensators
  • ✓ Holds email so cancel is a true unsend
  • ✓ Runs the inverse of DB & cloud actions
  • ✓ One audit + one rollback across all of it

Not a git replacement. A second system for everything git can't track.

One model, every domain

What walkback reverses

Record a change with its inverse; replay the inverse on rollback. Anything that touches the outside world is dry-run gated — it shows you what it would do, never fires blind.

📁

Files

byte-perfect, crash-safe

Create, modify, delete, dirs, symlinks, permissions — all restored exactly from a content-addressed blob store. Plus redo and selective per-file revert.

walkback rollback        # rewind everything
walkback revert src/auth.ts  # ...or one file
🌐

Network & API calls

actually reversed

When a mutation is recorded with its compensator — the request that reverses it — walkback runs it. Dry-run gated: it shows you what it would do before it fires.

POST /v1/charges    → records refund
walkback_compensate → previews, then fires
✉️

Email

honest hold-and-release

No tool can recall a delivered email. So walkback does the one honest thing: holds it as a draft that went nowhere. Cancel = true unsend. Gmail + Outlook.

walkback_email_stage  …   # held, NOT sent
walkback_email_cancel     # never existed
☁️

Cloud & databases

any tool

No hardcoded AWS or Postgres. The agent records the command that reverses what it did, and walkback runs it — dry-run gated. Works with any cloud, DB, or CLI.

walkback_record_reversal "created bucket" \
  command="aws s3 rb s3://assets-prod"

Zero lock-in

Meets your agent where it lives

Not tied to any model, vendor, or IDE. Every agent changes files on disk — walkback meets it at whichever layer is convenient.

Anything — Cursor, Copilot, Aider, scripts, even you
walkback watch
Snapshots, then watches the filesystem
Any CLI agent
walkback run -- <cmd>
Wraps the command; reversible after
Any MCP client
add the MCP server
The agent calls walkback tools itself
Claude Code
walkback protect
Native hook — auto-checkpoints, zero effort
Crash-safe

Atomic write-temp-then-rename journal. Never reports success while leaving files unrestored.

Dry-run gated

Every outside-world reversal previews first. It never fires a refund or a delete blindly.

Tested, not asserted

Property + concurrency tests, byte-for-byte round-trips. CI green on Linux, macOS, Windows.

Arm it in one command

The CLI runs on macOS, Linux, and Windows — no Node required.

# the CLI
cargo install walkback-core
brew install tathagat22/tap/walkback
# the MCP server (Cursor / Claude / any MCP client)
npx -y @tathagatmaitray/walkback
# then, with any agent running:
walkback watch     # arm it
walkback diff      # see what it did
walkback rollback  # rewind all of it
Read the docs on GitHub →