Skip to content
Latchkey

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

  1. Disable buffering where possible (for example stdbuf -oL, PYTHONUNBUFFERED=1).
  2. Emit periodic progress so the log stream stays active.
  3. Split very long steps so progress is visible and recoverable.
.github/workflows/ci.yml
- run: |
    export PYTHONUNBUFFERED=1
    stdbuf -oL ./long_task.sh

How 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

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →