ubuntu-latest moves to Ubuntu 26.04 on October 19 — 22 toolset differences that can break your CI
Description and use
GitHub’s shift from Ubuntu 24.04 to 26.04 in ubuntu‑latest introduces 22 toolset changes that can break CI. The runner‑drift‑audit script detects these changes, enabling pinning of a specific runner image and tool versions.
Problem
GitHub’s shift of the ubuntu-latest runner from Ubuntu 24.04 to 26.04 introduces 22 toolset changes that can silently break or alter CI workflows.
Outcome
Using runner-drift-audit and pinning runner labels and tool versions prevents CI failures caused by the 22 toolset changes introduced with Ubuntu 26.04.
Workflow
- 1. Identify if workflow uses ubuntu-latest or a pinned runner label.
- 2. Run runner-drift-audit on the repository to detect floating labels, removed tools, default-version drift, and mutable action tags.
- 3. Review audit output: HIGH findings indicate critical issues (e.g., missing tools, version drift).
- 4. If HIGH findings exist, pin the runner label (e.g., ubuntu-24.04) and pin tool versions using setup actions (e.g., actions/setup-java, actions/setup-node).
- 5. Re-run audit to confirm no HIGH findings remain.
- 6. Commit changes and re-run CI to ensure stability.
Evidence
Between October 19 and November 19, 2026, GitHub moves the ubuntu-latest runner label from Ubuntu 24.04 to Ubuntu 26.04.
I diffed the official actions/runner-images toolsets (toolset-2404.json vs toolset-2604.json) on 2026-10-10 and found 22 differences.
The CMake row deserves attention: on 24.04 it was deliberately held at 3.31.6 to avoid CMake 4.0 compatibility issues. On 26.04 it tracks latest, so CMake 4 behaviour may apply to projects that never opted in.
I packaged the toolset diff as a small open-source scanner, runner-drift-audit (MIT, single-file Python, standard library only, no dependencies).
- Record date: 2026-10-10T00:40:52.638Z