GitHub Actions: Error: Unable to download artifact(s): Artifact not found for name: build
download-artifact could not find an artifact with that name in the run (or repository) — it was never uploaded, named differently, expired or lives in another run.
Unable to download artifact(s): Artifact not found for nameArtifact not found for nameUnable to find any artifacts for the associated workflowError: Unable to download artifact(s)download-artifact not found Meaning
Artifacts belong to a workflow run. A job can only download artifacts uploaded earlier in the same run (and the uploading job must have finished — use needs). Names are case-sensitive, retention defaults to 90 days, and in v4 artifacts from other runs need a token and run-id.
Common causes
- Upload step skipped or failed (nothing to upload, wrong
path) - Name differs between upload and download
- Download job runs before the upload job finishes (missing
needs:) - Artifact expired or deleted
- Trying to download from another workflow run without
run-idand token
⚡ Quick fix
- Check the Artifacts section of the run for the exact name
- Add
needs: buildto the download job - Set
if-no-files-found: erroron upload to catch empty uploads
Detailed fix by platform
GitHub Actions
- Cross-run:
uses: actions/download-artifact@v4withrun-id: ${{ github.event.workflow_run.id }}andgithub-token: ${{ secrets.GITHUB_TOKEN }}
Code examples
Upload then download in order
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: mkdir dist && echo hi > dist/a.txt
- uses: actions/upload-artifact@v4
with: { name: build, path: dist/, if-no-files-found: error }
test:
needs: build # wait for the upload
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
with: { name: build }How to diagnose
- Name — Exact artifact name uploaded?
- Order — Does the job depend on the uploader?
- Run — Same workflow run?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- API rate limit exceeded GitHub Actions: HttpError: API rate limit exceeded for installation ID 123456 / secondary rate limit
- Cache not found / Unable to reserve cache GitHub Actions: Cache not found for input keys: npm-Linux-abc123 / Failed to save: Unable to reserve cache with key, another job may be creating this cache
- Cannot perform an interactive login from a non TTY device GitHub Actions: Error: Cannot perform an interactive login from a non TTY device
Most viewed in CI/CD
- The process '/usr/bin/git' failed with exit code 128 GitHub Actions: Error: The process '/usr/bin/git' failed with exit code 128
- This job is stuck because you don't have any active runners GitLab CI: This job is stuck because you don't have any active runners online or available with any of these tags assigned to them
- Resource not accessible by integration GitHub Actions: Error: Resource not accessible by integration (403)
Other ways to find it
Where this error sits
Origin: Build & delivery. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 25 Oct 2026