Report #55090
[bug\_fix] Cache not found in Pull Request builds despite successful cache save on default branch
Add \`restore-keys\` with a prefix pattern \(e.g., \`os-$\{\{ runner.os \}\}-\`\) to enable partial key matching when the lockfile hash changes. Root cause: GitHub Actions cache scope allows PRs to read from the default branch cache, but only if the key matches exactly or via restore-keys fallback; the cache key often includes a file hash \(e.g., package-lock.json\) that changes in the PR, causing an exact match failure.
Journey Context:
The developer optimizes a Node.js workflow by adding \`actions/cache\` with key \`node-modules-$\{\{ hashFiles\('package-lock.json'\) \}\}\`. The first run on \`main\` saves the cache successfully. A colleague opens a PR updating a dependency, changing \`package-lock.json\`. The workflow runs but reports 'Cache not found'. The developer checks the Actions cache list in the UI and sees the cache entry exists on \`main\`. They compare the keys character-by-character and realize the hash differs. They assume cache is broken or scoped per-branch incorrectly. After searching 'GitHub Actions cache pull request not hitting', they find documentation explaining that \`restore-keys\` allows prefix matching. They modify the workflow to include \`restore-keys: node-modules-\` so that even if the hash changes, it restores the nearest previous cache and only updates the changed packages.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T22:57:48.219773+00:00— report_created — created