Table of Contents

The Error

When working with Terraform, you may encounter this error:

Error: Instance cannot be destroyed; Resource has lifecycle.prevent_destroy set

This error can block your entire workflow. Let’s understand why it happens and how to fix it.

What Causes This Error

The resource has prevent_destroy = true in its lifecycle block, blocking any operation that would destroy it.

How to Fix It

Solution 1

Set prevent_destroy = false temporarily, apply, then re-enable it.

Solution 2

Use terraform state rm to remove from state without destroying the actual resource.

Solution 3

If replacing: first remove prevent_destroy, apply the destroy, then create the new resource.

Solution 4

For force-destroying: terraform destroy -target=resource_type.name after removing the lifecycle rule.

Prevention Tips

  • Always run terraform validate before terraform plan
  • Use terraform fmt to keep configuration clean and readable
  • Pin provider versions to avoid unexpected schema changes
  • Review plan output carefully before applying

Learn More

Conclusion

This error is common but straightforward to fix. The key is understanding the root cause and applying the correct solution for your specific situation. Following the prevention tips above will help you avoid this error in future projects.