GitHub Actions gives each repository 10 GB of cache. Once the repository passes it, GitHub still saves the new entry and deletes the entries read longest ago until it is back under the limit, and it deletes any entry no job has read for 7 days. A branch reads only its own caches and the default branch's, so a new branch's first run often misses. And a hit is still a download: every job on a GitHub-hosted runner starts on a new VM, so it downloads and unpacks the archive again. You can raise the limit, at $0.07 per GB a month past 10 GB, and tune your keys, but the download stays.
Skipbox removes the download. Your jobs run on your account's own machine, which is kept between jobs, so the npm, pnpm, Gradle, Go and Cargo caches and Docker's layers are still on its disk from the last job (80 GB on S, against 14 GB on GitHub's runner). What actions/cache saves stays next to the machine, so a restore is a local read.…