Lesstep
GitHub Actions · Checked November 3, 2026

GitHub Actions: "The runner has received a shutdown signal"

The machine running the job was told to stop, so it stopped the step that was running and gave up the job. Your step did not fail on its own. On GitHub-hosted runners this usually comes with memory running out; on self-hosted runners, with the runner service being stopped or restarted.

What it looks like

The last lines of the log, from a public job on November 2, 2026 (runs-on: ubuntu-latest):

##[error]Process completed with exit code 143.
##[error]The runner has received a shutdown signal. This can happen when the runner service is stopped, or a manually started runner is canceled.

On GitHub-hosted runners: usually memory

A standard Linux or Windows runner has 16 GB of memory in a public repository and 8 GB in a private one; ubuntu-slim has 5 GB, and the arm64 macOS runners 7 GB (GitHub's runner reference, November 3, 2026). Reports from late October and November 2026:

The same overload can instead end with "The hosted runner lost communication with the server", and then the log can be lost too (funcd #1362).

On self-hosted runners: the runner service stopped

The message names it: the runner service was stopped, or a runner started by hand (./run.sh) was cancelled. Anything that stops or restarts the service in the middle of a job does the same. In chdb-core #309, unattended upgrades ran on the runner machines at 06:00 UTC and restarted the runner service, which killed the builds running then: all four builds of one pull request between 06:04 and 06:22 UTC, and three of the four builds of one nightly. The fix belongs on the machine: ephemeral runners, or no restarts while jobs can run.

What to do

on:
  workflow_run:
    workflows: [CI]
    types: [completed]
permissions:
  actions: write
jobs:
  rerun:
    if: github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.run_attempt == 1
    runs-on: ubuntu-latest
    steps:
      - env:
          GH_TOKEN: ${{ github.token }}
          REPO: ${{ github.repository }}
          RUN: ${{ github.event.workflow_run.id }}
        run: |
          for id in $(gh api "repos/$REPO/actions/runs/$RUN/jobs?per_page=100" --jq '.jobs[] | select(.conclusion == "failure") | .id'); do
            gh api "repos/$REPO/actions/jobs/$id/logs" > job.log || exit 0
            grep -q "The runner has received a shutdown signal" job.log || exit 0
          done
          gh run rerun "$RUN" --failed --repo "$REPO"

Telling it apart

See jobs that lost their runner from IntelliJ IDEA

Pipeline Inbox for GitHub Actions Workflows, a plugin by Lesstep for JetBrains IDEs 2024.1 or later, lists the runs of all your repositories in an IDE tool window, with their jobs and steps, so a failed job stands out next to the ones that passed, and your current branch's runs are in the status bar. Reading is free; re-running failed jobs, cancelling, running workflows and reviewing deployments are Pro (US$1.50 a month, with a 30-day trial).

GitHub and GitHub Actions are trademarks of GitHub, Inc.; IntelliJ IDEA is a trademark of JetBrains s.r.o. This page is not affiliated with, sponsored or endorsed by GitHub, Inc. or JetBrains.

More: "The job has exceeded the maximum execution time" · "The job was not acquired by Runner of type hosted" · Re-running jobs with debug logging · GitHub Actions plugins for IntelliJ IDEA compared · 日本語