Learn / GitHub Actions / release-action tag exists
GitHub Actions ncipollo/release-action "tag already exists"
By Kaveh Alemi · Latchkey
ncipollo/release-action creates a release for a tag. If a release or tag with that name already exists and allowUpdates is not enabled, the create call is rejected as a duplicate.
What this error means A release-action step fails saying the release or tag already exists, typically on a re-run or when the tag was created elsewhere.
github-actions
Error: Validation Failed: {"resource":"Release","code":"already_exists","field":"tag_name"}Common causes Duplicate tag from a re-run Re-running a release workflow for the same tag hits an existing release.
Tag created out of band A tag already pushed manually or by another job conflicts with the new release.
How to fix it Allow updates or use a unique tag
Set allowUpdates: true to update the existing release instead of failing.
Or compute a unique tag per run.
Use replacesArtifacts: true if re-uploading assets.
.github/workflows/release.yml
- uses : ncipollo/release-action@v1
with :
tag : ${{ github.ref_name }}
allowUpdates : true This will hit your next GitHub Actions build too
The fix you just applied is mechanical, and nothing about it needed a human. On Latchkey managed runners this failure is detected, repaired, and the job retried automatically, so the time you just spent is not spent again. Start free - 30-day trial, no credit card required - or see how self-healing works .
How to prevent it
Enable allowUpdates for idempotent release jobs.
Avoid creating the tag manually if the action will create it.
Frequently asked questions What causes ""Release/tag already exists""? Re-running a release workflow for the same tag hits an existing release.
How do I fix "Release/tag already exists"? Allow updates or use a unique tag
Related guides References
Start free on self-healing runners
Workflow YAML breaks in ways that only show up on the runner. Latchkey runs your GitHub Actions on managed runners that detect, fix, and retry transient failures automatically. Switching is one line: change runs-on: and the rest of the workflow is untouched. Up to 70% cheaper than GitHub-hosted, with free minutes on every plan.
30-day free trial · No credit card required · Set up in minutes
Previous concurrency scope mismatchNext OIDC audience mismatch