ReCall 1.1.2 is out, and this release is about one thing: making the memory layer something you can trust with your data โ€” even when an AI agent is rewriting half your codebase in a minute.

ReCall's job is to remember everything that happens in your workspace so you can restore any moment in seconds. That promise only matters if the record is always correct and your restores always land exactly where you expect. 1.1.2 is a focused hardening pass on the foundation that makes that promise true.

What changed in 1.1.2

1. Checkpoints can no longer snapshot stale data

The desktop app previously kept two independent in-memory file caches for the active workspace: the watcher wrote to one, while the checkpoint and rollback path read from another. After switching workspaces, a checkpoint could silently miss files and snapshot outdated content.

1.1.2 replaces the duplicated caches with a single shared cache used by the watcher, desktop commands, the WebSocket agent API, and AI-session auto-checkpoints. Checkpoint โ†’ restore now always reflects the true current state of your workspace.

2. Event and delta writes are now transactional

Every file change is two things: a timeline event plus the byte-level hunks that let you reconstruct the file. Previously those were written in separate steps, so a crash or error in between could leave an event with missing or partial deltas โ€” silently corrupting reconstruction. This release wraps the event and all of its deltas in a single SQLite transaction, and failures are surfaced instead of swallowed.

The practical result: if ReCall says it recorded a change, that change is fully reconstructable. No orphan events, no partial hunks.

3. macOS license machine-binding is fixed

A Pro license is bound to your machine via a hardware fingerprint. On macOS that fingerprint was previously a constant shared by every Mac, which effectively meant one Pro license was shared with everyone. 1.1.2 now uses the per-device IOPlatformUUID, so each Mac gets a stable, unique fingerprint.

4. Restore paths are fully contained

The restore path that says "this file belongs to this workspace" is now a real component-wise, case-insensitive boundary check. It rejects .. traversal and sibling-prefix escapes โ€” C:\ws can no longer match C:\ws2.

5. Desktop UI fixes that matter

  • The Dashboard "Undo Last Operation" button now actually undoes, instead of just navigating to the timeline.
  • AI Activity shows a real error message when it fails to load, instead of hiding a failure as "No file edits recorded".
  • Settings no longer flashes a stale version number before the real one loads.
  • The command palette no longer reports a negative highlight on an empty result list.

6. MCP server input validation

The MCP server now validates required arguments up front and returns a clear "Missing required argument" error instead of a generic daemon failure โ€” a small quality-of-life win for anyone wiring ReCall's memory into Claude Code, Codex, Cursor, or another agent.

What came just before (0.9.2)

1.1.2 builds directly on the recovery intelligence that shipped in 0.9.2: last-known-good baselines, file-level state comparison, safe whole-workspace restores, and a VS Code extension that no longer freezes on large workspaces. Together they round out the picture: ReCall knows what changed, what the last good state was, and how to get you back there safely.

Why data safety is the whole product

ReCall is appealing precisely because AI coding tools are becoming faster and more autonomous. Faster agents mean more changes per minute, and more changes mean a higher chance that something breaks in a way you can't easily unwind. A memory layer that only sometimes has the right state is worse than none โ€” because you'd trust a restore that silently returns the wrong content.

The changes in 1.1.2 close that window. When ReCall snapshots, it snapshots the truth. When it writes a change, the change is atomic. When it restores, it restores exactly your workspace and nothing outside it.

You should never have to wonder: "is that restore actually the file I thought it was?"

Private by design, still

All of this runs locally. Your timeline, memories, and agent sessions never leave your machine. The database is encrypted at rest with SQLCipher (AES-256), and your Pro license is bound to your hardware โ€” not shared across the internet.