GitHub Actions Has a Package Manager, and It Might Be the Worst

https://news.ycombinator.com/rss Hits: 15
Summary

After putting together ecosyste-ms/package-manager-resolvers, I started wondering what dependency resolution algorithm GitHub Actions uses. When you write uses: actions/checkout@v4 in a workflow file, you’re declaring a dependency. GitHub resolves it, downloads it, and executes it. That’s package management. So I went spelunking into the runner codebase to see how it works. What I found was concerning. Package managers are a critical part of software supply chain security. The industry has spent years hardening them after incidents like left-pad, event-stream, and countless others. Lockfiles, integrity hashes, and dependency visibility aren’t optional extras. They’re the baseline. GitHub Actions ignores all of it. Compared to mature package ecosystems: Feature npm Cargo NuGet Bundler Go Actions Lockfile βœ“ βœ“ βœ“ βœ“ βœ“ βœ— Transitive pinning βœ“ βœ“ βœ“ βœ“ βœ“ βœ— Integrity hashes βœ“ βœ“ βœ“ βœ“ βœ“ βœ— Dependency tree visibility βœ“ βœ“ βœ“ βœ“ βœ“ βœ— Resolution specification βœ“ βœ“ βœ“ βœ“ βœ“ βœ— The core problem is the lack of a lockfile. Every other package manager figured this out decades ago: you declare loose constraints in a manifest, the resolver picks specific versions, and the lockfile records exactly what was chosen. GitHub Actions has no equivalent. Every run re-resolves from your workflow file, and the results can change without any modification to your code. Research from USENIX Security 2022 analyzed over 200,000 repositories and found that 99.7% execute externally developed Actions, 97% use Actions from unverified creators, and 18% run Actions with missing security updates. The researchers identified four fundamental security properties that CI/CD systems need: admittance control, execution control, code control, and access to secrets. GitHub Actions fails to provide adequate tooling for any of them. A follow-up study using static taint analysis found code injection vulnerabilities in over 4,300 workflows across 2.7 million analyzed. Nearly every GitHub Actions user is running third-party code with ...

First seen: 2025-12-08 09:25

Last seen: 2025-12-09 00:27