What is a GitHub Actions 'ephemeral' self-hosted runner and what problem does it solve?
Select an answer to reveal the explanation.
Short Explanation and Infographic
Ephemeral runners solve the contamination problem: with persistent runners, job A can leave files or environment changes that affect job B. Ephemeral runners start clean for each job and get disposed of after. It's the cloud VM model applied to CI runners.
Full explanation below image
Full Explanation
Ephemeral self-hosted runners are configured to handle exactly one job and then terminate. This solves several security and reliability problems with persistent self-hosted runners: (1) Clean environment — each job starts with a fresh, unmodified runner with no artifacts or state from previous jobs. (2) Security isolation — secrets or sensitive data from one job cannot leak to another. (3) No runner poisoning — a compromised or modified job cannot affect future jobs. Ephemeral runners are configured using the '--ephemeral' flag in the runner configuration script. They require an external orchestration system to register new runners as needed (e.g., Kubernetes operators, cloud auto-scaling, Actions Runner Controller). GitHub's Just-in-Time (JIT) runner registration supports ephemeral runners. GitHub-hosted runners are always ephemeral by design.