Self-hosted GitHub Actions runners can chew through CPU even when idle — one core locked at 100%, by design. The culprit is a busy-wait loop in the runner’s sleep logic, not your workflows. Digging into the code reveals a simple but costly tradeoff between responsiveness and efficiency.