Debug-action-cache
[debug] restoreKeys: [ 'Linux-pip-', 'Linux-' ] [debug] GET response for key 'Linux-pip-main-2d711b': 404 [debug] GET response for key 'Linux-pip-': 200 (Stored key: 'Linux-pip-staging-9c4a7b') Your hashFiles('requirements.txt') changed (maybe a whitespace change), causing the exact key to miss. The restore key Linux-pip- matched a cache from the staging branch instead of main . Step 3: Inspect Archive Contents (The Nuclear Option) Sometimes, cache restoration succeeds, but the data is wrong. The debug-action-cache logs won't show file contents. You need to manually inspect.
[debug] Checking cache for key: Linux-node-abc123 [debug] restoreKeys: [ 'Linux-node-' ] [debug] Cache service URL: https://artifactcache.actions.githubusercontent.com/... [debug] Request headers: Authorization: 'Bearer ***', Accept: 'application/json' [debug] GET response: 404 (Not Found) [debug] Trying restore key: Linux-node- [debug] GET response: 200 OK [debug] Cache found: cacheKey: 'Linux-node-def456', archiveLocation: 'https://...' [debug] Downloading 234MB archive... [debug] Extracting to /home/runner/work/repo/node_modules Suddenly, you see why the wrong cache was restored (because the exact key failed, so it fell back to a prefix). Let's simulate a broken pipeline. You have a monorepo with Python and Node.js. Your Python cache keeps restoring a 3-month-old virtual environment. Step 1: Enable Debug Mode Set ACTIONS_STEP_DEBUG=true . Run the workflow. Step 2: Analyze the Cache Restoration Logic Look for the [debug] restoreKeys line: debug-action-cache
That is the difference between guessing and knowing. Happy debugging. [debug] restoreKeys: [ 'Linux-pip-', 'Linux-' ] [debug] GET
A debug-action-cache log says:
[debug] Download speed: 45.2 MB/s [debug] Parallel chunks: 4 [debug] Validation: SHA256 matches expected If you see Validation: SHA256 mismatch , your cache is corrupted (rare, but happens with network proxies). The solution is to delete the cache key. Let's map error symptoms to debug-action-cache insights. The debug-action-cache logs won't show file contents
Then, in a workflow or locally: