Tracking down a Zsh history data loss bug
ingve
58 points
18 comments
August 15, 2026
Related Discussions
Found 5 related stories in 40.5ms across 4,128 title embeddings via pgvector HNSW
- Show HN: Smarter Shell History for Zsh overflowy · 12 pts · August 12, 2026 · 59% similar
- Tailscale Traces Database Corruption to 16y/o SQLite WAL-Reset Bug ropbear · 930 pts · August 12, 2026 · 50% similar
- Debugging Performance Regressions pranitha_m · 32 pts · July 11, 2026 · 45% similar
- The Git history command deserves more attention turbocon · 179 pts · July 14, 2026 · 44% similar
- Breaking the WAL wwilson · 85 pts · August 12, 2026 · 42% similar
Discussion Highlights (7 comments)
aclindsa
Nice work! I have felt like I lost zsh history before but never looked into it.
mmh0000
I have nearly a decade of zsh history. Reading that article I came to the conclusion that I may have been hit by that bug in the past but I haven’t noticed. Then I kept reading and the author mentions accidentally exporting HISTFILE[1] and I screamed in terror and ran to my computer as I realized a mistake I’ve been making for…ever. I am now both happy and sad I read this article. [1] https://github.com/stapelberg/configfiles/commit/32dcda0f49a...
TZubiri
Does zsh have that 2000 command limit by default? You can't expect much from a system that has those defaults, I'm all for traditions, but if I were to depend on a system for command history, it wouldn't be anything that reads a bash_history, a revolution is needed, not incremental optimizations P.s: what I do is set it to unlimited on both size and line count, but it's not a forensic grade audit trace, we'd need an OS, or ssh command logger, preferably one that writes to an external disk, but it can be to a root controlled file, definitely not to a user owned file. Security protects not only against attackers, but against bugs, a user's command history should not be deletable by user. Anything else is a wrong architecture that we are just carrying by inertia and laziness.
fragmede
Are people not just using http://atuin.sh these days?
myshapeprotocol
Tracking down subtle data loss edge cases in shell history internals requires absolute precision. Great debugging write-up.
nubinetwork
That's a bug? Happens to me with bash all the time, all I have to do is open 2 terminals at the same time... whichever one I close last is the one that writes its history. /shrug
chillpenguin
I ran into this a few years ago (or I ran into a very similar bug). I started backing up my history file regularly because it was so annoying to lose all that history. I'll keep backing it up, but this fix is appreciated!