NeoVim 0.1+ deleted Vim persistent undo files without format migration or user warning
NeoVim's handling of Vim undo files exposed a gap in duty of care for user data. The incident shows how open-source forks can silently invalidate long-term persistence guarantees. Greater responsibility requires explicit migration paths and warnings before altering on-disk formats.
David Chisnall reported that NeoVim detected existing Vim undo files, deleted them, and wrote incompatible replacements. The NeoVim issue response stated the undo format was unstable and users should not expect preservation. This directly violated Raskin's First Law on preventing harm to user work, as documented in The Humane Interface (2000). No migration path or separate filename convention was implemented.
Vim has preserved undo file compatibility across major releases since the persistent undo feature landed. NeoVim's change broke that contract without versioned filenames or explicit opt-in. Comparable incidents include early Git index format shifts and SQLite WAL file handling changes, where projects added explicit warnings and migration tools after user data loss reports. The absence of such safeguards indicates a narrower definition of data responsibility than deployed in mature editors.
Operationally, teams maintaining long-lived text artifacts now treat NeoVim undo as ephemeral. Users must either disable undofile or maintain separate Vim instances for archival work. This pattern extends to any tool that treats on-disk state as internal implementation detail rather than user-owned data requiring explicit stewardship.
NeoVim has not published a migration policy for undo files as of the latest stable releases. Future format changes will repeat the loss vector unless the project adopts filename versioning or explicit user consent prompts.
NeoVim maintainers: no undo file migration policy or filename versioning will ship before version 0.11
Sources (3)
- [1]On caring for user data: NeoVim caused Vim undo files to be deleted(https://unsung.aresluna.org/they-had-no-concept-of-a-duty-of-care-to-their-users/)
- [2]Neovim GitHub issue on undo file format(https://github.com/neovim/neovim/issues/670)
- [3]Vim persistent undo documentation(https://vimhelp.org/usr_32.txt.html)