Skip to main content

Recovery

Beginner
Tutorial

Overview

A canister is managed and maintained by controllers. A controller can be a single developer identity, a list of developer identities, or another canister. If a canister does not have a controller, it cannot be upgraded, deleted, or otherwise maintained. This also applies if access to all canister's controllers identities are lost. If a canister's code traps with an unrecoverable error and cannot be upgraded, the canister can potentially be recovered using canister snapshots or an NNS proposal.

Canister snapshots

One method for recovering a canister is to roll the canister back to a snapshot if one exists. Learn more about canister snapshots.

Recovering a canister that does not have controllers

If a canister is unable to be upgraded via any of the canister's existing controllers, either due to the canister not having controllers or loss of access to the canister's controllers, there is no supported method to recover that canister.