Undo a release that landed buggy. Reverts the git tag, demotes the GitHub Release from "Latest", and notifies the homebrew tap to pin to the previous version.
# Roll back a bad release
nself release-rollback v1.0.14
# Preview what would happen without executing
nself release-rollback v1.0.14 --dry-runnself release-rollback <VERSION> [FLAGS]nself release-rollback undoes the effects of a nself release run for the given version. It takes three actions:
git tag -d {VERSION} + git push origin :refs/tags/{VERSION}). The underlying commits are not touched.Rollback requires ANTHROPIC_RELEASE_KEY for the same reason as nself release — it authorizes write operations on the release infrastructure.
Rollback does not revert commits or force-push to main. Code fixes should land as a new patch release after the rollback is confirmed.
| Argument | Required | Description |
|---|---|---|
VERSION | Yes | The version to roll back, e.g. v1.0.14. Must be an existing tag. |
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print all steps without executing any of them |
--no-homebrew | bool | false | Skip the homebrew tap notification step |
--keep-release | bool | false | Skip the GitHub Release demotion (tag is still deleted) |
--json | bool | false | Emit JSON progress events |
ANTHROPIC_RELEASE_KEY — Required. Same key used by nself release.GITHUB_TOKEN — Used to delete the tag and update the GitHub Release. Falls back to ~/.nself/auth.json.nself release-rollback v1.0.14
# Deletes tag v1.0.14
# Demotes GitHub Release from Latest
# Opens homebrew PR pinning to v1.0.13nself release-rollback v1.0.14 --no-homebrewnself release-rollback v1.0.14 --dry-runOnce the rollback is confirmed via nself release-status, fix the bug on a branch, land the fix on main, and ship a new patch release:
# After the fix lands on main
nself release-check
nself release v1.0.150 — rollback completed1 — rollback failed mid-way (see output for which step)2 — invalid version argument or tag does not exist3 — ANTHROPIC_RELEASE_KEY not set or invalid