undo-anything is a tool people trust with their unsaved work, so we treat both
classic security issues and data-loss bugs with the same seriousness.
Please report privately — do not open a public issue for security or data-loss reports.
Use GitHub's private vulnerability reporting for this repository:
- Go to the Security tab and click Report a vulnerability, or open the form directly: https://github.com/agenticraptor/undo-anything/security/advisories/new.
This keeps the report confidential between you and the maintainers until a fix
is released. Please include the version (ua version), your OS, and the
smallest set of steps that reproduces the problem. We aim to acknowledge reports
within a few days.
Until the project reaches v1.0.0, only the latest released minor version
receives security and data-safety fixes.
| Version | Supported |
|---|---|
latest 0.x |
✅ |
| older | ❌ |
These are the invariants we consider security-critical. A bug in any of them is treated as a vulnerability:
- Atomic writes. Every object and snapshot manifest is written to a temp file and atomically renamed into place. An interrupted run can never corrupt existing history.
- Content integrity. Objects are addressed by the SHA-256 of their contents and verified on read; a corrupted object is detected rather than silently returned.
- Undoable restores. By default every restore first captures a pre-restore safety snapshot, so any restore can itself be undone.
- Ignored files are never deleted.
--cleanand other destructive paths only ever touch tracked files, sonode_modules/, build output, and anything matched by your ignore rules are safe. - No path traversal. Restore refuses any manifest entry that would write
outside the folder — via
.., an absolute path, or a symlinked parent — so restoring an untrusted or tampered.undocan never overwrite arbitrary files on your system. - Decompression-bomb cap. Objects are read through a hard size ceiling, so a crafted blob in a foreign store can't expand to exhaust memory.
- Owner-only store. The
.undodirectory and its contents are created0700/0600, so other users on a shared machine can't read your file history. - Local by default.
undo-anythingmakes no network connections. Your data never leaves your machine.
undo-anything stores file contents unencrypted inside the .undo/
directory (deduplicated and compressed, but not encrypted). Treat .undo/ with
the same sensitivity as the files it protects, and exclude secrets you don't
want retained via .uaignore or your config's ignore patterns.