The script attempted to replace the standard sleep command using a busy-waiting Bash loop based on the $SECONDS variable.
SECONDS=0
while [[ $SECONDS != $1 ]]; do
:
done
Under real CI load, $SECONDS could skip past the target value, causing the loop to never terminate. When this happened, the script would spin indefinitely at ~100% CPU, leading to hung workflows, degraded runners, and long-running invisible processes.
The bug was easy to trigger in busy CI environments, widely reported, and long-lived. Although its impact was significant, it remained unfixed for an extended period, becoming emblematic of broader concerns around GitHub Actions reliability and engineering practices.
A fix was finally merged and released in 2025, correcting the infinite-loop behavior.
References
-
GitHub Actions Runner issue #3792
https://github.com/actions/runner/issues/3792 -
GitHub Actions Runner issue #2380
https://github.com/actions/runner/issues/2380 -
Lobsters discussion: GitHub Actions safe_sleep.sh
https://lobste.rs/s/l4rowa/github_actions_safe_sleep_sh -
The Register: Zig quits GitHub over Microsoft’s AI obsession
https://www.theregister.com/2025/12/02/zig_quits_github_microsoft_ai_obsession/ -
AIbase News coverage
https://news.aibase.com/news/23310