# deployment_not_rollbackable

> This deployment cannot be rolled back to. That deployment cannot be rolled back to, usually because its image has expired from retention or it never became healthy.

**This deployment cannot be rolled back to.** That deployment cannot be rolled back to, usually because its image has expired from retention or it never became healthy.

- **HTTP status:** `409 Conflict`
- **CLI exit code:** `1` (not signed in)
- **Retry:** not as it is; the same request will fail the same way until the cause is fixed

## How to fix it

Its image has passed the retention period; redeploy from commit {commit_sha} instead.

Words in `{braces}` are filled in from the error response, which names the exact resource.

## What the response looks like

```json
{
  "type": "https://guv.dev/errors/deployment_not_rollbackable",
  "title": "This deployment cannot be rolled back to",
  "status": 409,
  "code": "deployment_not_rollbackable",
  "detail": "That deployment cannot be rolled back to, usually because its image has expired from retention or it never became healthy.",
  "fix": "Its image has passed the retention period; redeploy from commit {commit_sha} instead.",
  "docs_url": "https://guv.dev/errors/deployment_not_rollbackable",
  "request_id": "req_01jbx2m9k7q4r8t5v6w3y0z1rq"
}
```

The `code` field is stable: match on it, not on `title` or `detail`, which may be reworded.
