Skip to content
Tech News
← Back to articles

Tracking down a Zsh history data loss bug

read original more articles
Why This Matters

This article highlights a critical bug in Zsh that caused loss of recent command history, impacting developers and power users relying on accurate shell history. The investigation and subsequent fix in Zsh 5.9.2 underscore the importance of maintaining reliable shell environments for productivity and security. It also demonstrates the value of proactive debugging and patching in open-source software to enhance stability and user trust.

Key Takeaways

For many years, I sometimes discovered that commands I was sure I had run were no longer present in my Z shell history file ( ~/.zsh_history ). In this article, I will show you how I tracked down the bug. Spoiler: ultimately, patching Zsh to make it crash loudly and analyzing the crash’s core dump was the winning strategy!

The good news first

Zsh 5.9.2 (released July 12th, 2026) contains a fix for this issue — open it after reading this investigation to not spoil the fun.

Spoiler: link to the upstream fix Zsh fix 53454

The symptom

Occasionally, I noticed that commands I knew I executed the day before were not findable in my shell history, meaning pressing Ctrl+R for backward history search yielded no results. Whenever I noticed this, my shell history file contained only very old entries, with years of newer entries missing.

The first few times this happened I just restored my shell history from my daily backup and did not bother investigating any further. But the issue kept happening.

I noticed that there was no visible corruption in the .zsh_history (no non-printable characters or incomplete lines of text), and that the number of lines in the file was not always the same.

What was not clear to me was whether it was Zsh itself, or some other program, or perhaps the combination of multiple zsh(1) processes that caused the issue.

My Zsh history config

... continue reading