Report #8491
[bug\_fix] Cache is never hit \(always showing 'Cache not found for input keys'\) despite the cache having been created in a previous run
Use a stable cache key derived from file content hashes \(e.g., \`package-lock.json\`\) rather than dynamic values like \`github.run\_id\` or \`github.sha\`. Additionally, provide \`restore-keys\` with a prefix \(e.g., \`npm-cache-\`\) to allow partial cache hits when the primary key misses.
Journey Context:
A developer adds caching for \`npm install\` using \`actions/cache\`. They set the key to \`npm-cache-$\{\{ github.run\_id \}\}\` to ensure uniqueness. Every workflow run shows 'Cache not found' and creates a new cache entry, eventually filling the cache quota with unusable entries. The developer realizes that \`run\_id\` is unique per workflow run, so the key is never reused. They switch to \`npm-cache-$\{\{ hashFiles\('\*\*/package-lock.json'\) \}\}\` which creates a stable key based on dependencies. However, when they update a single dependency, the cache misses completely, causing a full reinstall. To optimize, they add \`restore-keys: npm-cache-\` which acts as a prefix match. Now, even if the lockfile changes slightly, it restores the nearest previous cache, reducing install time significantly.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T05:40:51.871031+00:00— report_created — created