Skip to content

Roll back an activation

Use kix rollback to reapply the manifests from a Superseded Activation. A direct rollback requires that Activation’s build output to remain available in the local Nix store.

Start with the read-only history view:

Run in kix-examples/
❱ kix rollback how-to-application --list
Rollback: activation history for 'how-to-application'

  ● active   how-to-application-lchxmwcma8ca (lchxmwcm...)  ← you are here
    source:   /nix/store/si2fnvbjp2lz0mhp7rpi885pyzqmpgki-k8s-activation-how-to-application

  Superseded (most recent first):

  [1] how-to-application-aq1zdgf9gsnb (aq1zdgf9...)  deployed 2026-09-10T00:22:07.560031+00:00  [store path missing]
      source:   /nix/store/c5lyxiwp2v311kpm3z9gr699ffrm5riq-k8s-activation-how-to-application

  Run `kix rollback <cluster>` (or `--yes` for most recent) to switch activations.

The output marks the current Activation and lists Superseded Activations from most recent to oldest. Check the deployment time and the local availability of each target. A target marked store path missing cannot be restored by a direct rollback on this machine.

Use structured output when a script needs the history:

Run in kix-examples/
❱ kix rollback how-to-application --list --output json Show output
{
  "cluster": "how-to-application",
  "current": {
    "built_via": "/nix/store/si2fnvbjp2lz0mhp7rpi885pyzqmpgki-k8s-activation-how-to-application",
    "identity_hash": "lchxmwcma8cav513dw9d0002b5qpax6v",
    "name": "how-to-application-lchxmwcma8ca"
  },
  "superseded": [
    {
      "available_locally": false,
      "built_via": "/nix/store/c5lyxiwp2v311kpm3z9gr699ffrm5riq-k8s-activation-how-to-application",
      "deployed_at": "2026-09-10T00:22:07.560031+00:00",
      "identity_hash": "aq1zdgf9gsnbdpc8hwkma69l8ipalqpx",
      "name": "how-to-application-aq1zdgf9gsnb",
      "previous_activation": null
    }
  ]
}

Run a dry run and select a target from the numbered history:

Run in kix-examples/
❱ kix rollback how-to-application --dry-run

Kix compares the active Activation with the selected target and prints the package and resource changes. The dry run stops before applying anything.

Run the command again without --dry-run:

Run in kix-examples/
❱ kix rollback how-to-application

Select the Activation, review the plan, and confirm it. Kix applies the target through the normal dependency scheduler and readiness checks.

Resources present only in the current Activation are reported but kept by default. Add --prune when the rollback must also remove them:

Run in kix-examples/
❱ kix rollback how-to-application --prune

Review those removals carefully, especially for stateful resources.

--yes selects the most recent Superseded Activation and skips confirmation:

Run in kix-examples/
❱ kix rollback how-to-application --yes

Use it only when the automation is intended to restore the immediately previous Activation. The command does not accept an Activation name on the command line.

For an operator-managed cluster, add --operator:

Run in kix-examples/
❱ kix rollback how-to-application --operator

Kix selects the rollback target and updates the Activation for the operator to reconcile.

Rollback history is bounded by Activation retention. If the required target has already been retired, restore it from source and deploy it as a new Activation instead.