GitHub Actions "The runner has not received any logs" (output flushing)
When a process buffers stdout/stderr heavily or the runner loses contact mid-step, the live log can appear empty even though work is happening. The job can fail or stall waiting on logs.
What this error means
A long step shows no live output and the run reports the runner has not received any logs, sometimes ending in a lost-communication failure.
github-actions
The runner has not received any logs from the job for some time and may have lost communication with the server.Common causes
Heavily buffered output
A child process buffers stdout so nothing streams until it flushes or exits.
Transient runner/network blip
A momentary loss of contact between the runner and the service interrupts log delivery.
How to fix it
Flush output and harden the step
- Disable buffering where possible (for example stdbuf -oL, PYTHONUNBUFFERED=1).
- Emit periodic progress so the log stream stays active.
- Split very long steps so progress is visible and recoverable.
.github/workflows/ci.yml
- run: |
export PYTHONUNBUFFERED=1
stdbuf -oL ./long_task.shHow to prevent it
- Stream output line-buffered for long-running commands.
- On Latchkey managed runners, transient log-delivery and runner-communication blips are auto-retried and the job is re-served from a warm pool, so a momentary network glitch does not become a red build.
Related guides
GitHub Actions runner connection lost mid-stepFix a GitHub Actions job that fails when the runner loses its connection to the service partway through a ste…
GitHub Actions "Process completed with exit code 1" in run with set -eFix a GitHub Actions run step that fails with exit code 1 due to the default bash set -e - any failing comman…
GitHub Actions "Workflow file changed during run"Fix a GitHub Actions run that fails because the workflow file changed while it was executing - runs are pinne…