GitHub Actions: Error: This request has been automatically failed because it uses a deprecated version of `actions/upload-artifact: v3`
Since January 2025 the v3 artifact actions no longer work — upload and download steps fail until you move to v4.
This request has been automatically failed because it uses a deprecated version of `actions/upload-artifact: v3`deprecated version of actions/upload-artifactdeprecated version of actions/download-artifactactions/upload-artifact@v3 deprecatedLearn more: https://github.blog/changelog/2024-04-16-deprecation-notice-v3-of-the-artifact-actions Meaning
Upgrade actions/upload-artifact and actions/download-artifact to @v4. Behaviour changed: artifact names must be unique per run (matrix jobs need distinct names), artifacts are immutable, and download-artifact v4 only sees artifacts of the same run unless you pass a token and run id. Merge many artifacts with merge-multiple.
Common causes
upload-artifact@v3ordownload-artifact@v3in a workflow- Third-party action that internally uses v3
- Same artifact name uploaded by several matrix legs (not allowed in v4)
- Old self-hosted GHES version without v4 support
⚡ Quick fix
- Change both actions to
@v4 - Give each matrix leg a unique artifact name (
name: build-${{ matrix.os }}) - Download several with
pattern:andmerge-multiple: true
Detailed fix by platform
GitHub Actions
- Upload:
uses: actions/upload-artifact@v4withnameandpath - Download all:
actions/download-artifact@v4withpattern: build-*andmerge-multiple: true
Code examples
v4 with matrix names
- uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.os }} # must be unique per run in v4
path: dist/How to diagnose
- Version — Which artifact action versions are used?
- Names — Unique per matrix leg?
- Source — Own workflow or third-party action?
🔧 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
- Context access might be invalid GitHub Actions: Context access might be invalid: AWS_ACCESS_KEY_ID (editor warning for secrets/vars)
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