CircleCI "Skipping cache - error checking cache" in CI
A restore_cache step could not load a cache: either no saved key matched, or the cache service returned an error so CircleCL skipped restoration. The job still runs but reinstalls everything from scratch.
What this error means
The restore step logs "Skipping cache - error checking cache" or "No cache found for key ...", and later steps reinstall dependencies fully.
CircleCI
Found a cache from key reduce-...
Skipping cache - error checking cache: ...
No cache is found for key: deps-v1-{{ checksum "package-lock.json" }}Common causes
The key changed so nothing matched
A checksum over a lockfile that changed produces a new key, so the first run on that lockfile is always a miss.
A transient cache service error
A momentary backend error during the lookup makes CircleCL skip the cache rather than fail the job.
How to fix it
Add a fallback restore key
- Use an exact key plus a broader prefix fallback.
- Save under the same exact key so future runs hit.
- Re-run twice: the second run should restore.
.circleci/config.yml
- restore_cache:
keys:
- deps-v1-{{ checksum "package-lock.json" }}
- deps-v1-
- run: npm ci
- save_cache:
key: deps-v1-{{ checksum "package-lock.json" }}
paths: [~/.npm]Treat a single transient skip as retryable
A one-off "error checking cache" is usually transient; re-run the job, and only investigate if it persists.
How to prevent it
- Always pair an exact key with a prefix fallback.
- Save and restore under matching key templates.
- Bump a cache version prefix when the cache format changes.
Related guides
CircleCI save_cache path not found / nothing to cache in CIFix CircleCI save_cache warnings where a path does not exist - the cache stores nothing because the listed pa…
CircleCI workspace: attach path does not match persist in CIFix CircleCI workspace path mismatches - attach_workspace looks in a different directory than persist_to_work…
CircleCI parallelism set but tests not split across nodes in CIFix CircleCI jobs where parallelism is set but every node runs the whole suite - tests must be divided with c…