Matched signals
- Cache not found
- Failed to restore cache
- Failed to save cache
- cache miss
- No cache found
Cache restore or save failed but job continued
What this failure means
A cache restore or save step failed (cache not found, restore error, or save error), but the CI job continued without flagging this as a failure. Repeated cache misses degrade CI performance and may indicate a configuration problem or dependency issue.
Symptoms
Faultline looks for one or more of these log fragments:
Cache not found
Failed to restore cache
Failed to save cache
cache miss
No cache found
Diagnosis
Cache steps (actions/cache, GitLab CI cache:, CircleCI restore_cache)
are designed to be non-fatal: a cache miss simply means the job builds from
scratch. However, persistent cache failures can indicate:
- The cache key or path is misconfigured and will never produce a hit.
- The cache backend is experiencing availability issues.
- The cache was invalidated by a dependency change that should itself be investigated.
- Save failures may indicate insufficient storage or permissions on the runner.
While a single cache miss is expected behaviour, repeated non-fatal cache failures mask a real configuration or infrastructure problem.
Fix steps
- Check the cache key expression:
Ensure the key file exists and the hash produces a stable value.key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} - Verify the cache path matches the actual dependency directory
(e.g.,
~/.npmvsnode_modules). - For restore failures: confirm the cache was saved on a previous run and that the key matches.
- For save failures: check runner disk space and storage quota.
- Review CI logs for additional error messages after the cache failure.
Validation
On the next CI run, verify the cache step reports a cache hit or a successful save. Monitor the cache hit rate across recent runs.
Try it locally
Check the cache key expression and confirm the key file path is correct
Review recent CI runs to determine if the cache miss is consistent
How Faultline detects it
Use faultline explain cache-miss-non-fatal to see the full playbook.
faultline analyze build.log
faultline explain cache-miss-non-fatal
Generated from playbooks/bundled/log/silent/cache-miss-non-fatal.yaml. Do not edit directly.