| --- |
| page_title: 'Command: untaint' |
| description: |- |
| The `terraform untaint` command tells Terraform that an object is functioning |
| correctly, even though its creation failed or it was previously manually |
| marked as degraded. |
| --- |
| |
| # Command: untaint |
| |
| Terraform has a marker called "tainted" which it uses to track that an object |
| might be damaged and so a future Terraform plan ought to replace it. |
| |
| Terraform automatically marks an object as "tainted" if an error occurs during |
| a multi-step "create" action, because Terraform can't be sure that the object |
| was left in a fully-functional state. |
| |
| You can also manually mark an object as "tainted" using the deprecated command |
| [`terraform taint`](/cli/commands/taint), although we no longer recommend that |
| workflow. |
| |
| If Terraform currently considers a particular object as tainted but you've |
| determined that it's actually functioning correctly and need _not_ be replaced, |
| you can use `terraform untaint` to remove the taint marker from that object. |
| |
| This command _will not_ modify any real remote objects, but will modify the |
| state in order to remove the tainted status. |
| |
| If you remove the taint marker from an object but then later discover that it |
| was degraded after all, you can create and apply a plan to replace it without |
| first re-tainting the object, by using a command like the following: |
| |
| ``` |
| terraform apply -replace="aws_instance.example[0]" |
| ``` |
| |
| ## Usage |
| |
| Usage: `terraform untaint [options] address` |
| |
| The `address` argument is a [resource address](/cli/state/resource-addressing) |
| identifying a particular resource instance which is currently tainted. |
| |
| This command also accepts the following options: |
| |
| - `-allow-missing` - If specified, the command will succeed (exit code 0) |
| even if the resource is missing. The command might still return an error |
| for other situations, such as if there is a problem reading or writing |
| the state. |
| |
| - `-lock=false` - Don't hold a state lock during the operation. This is |
| dangerous if others might concurrently run commands against the same |
| workspace. |
| |
| - `-lock-timeout=DURATION` - Unless locking is disabled with `-lock=false`, |
| instructs Terraform to retry acquiring a lock for a period of time before |
| returning an error. The duration syntax is a number followed by a time |
| unit letter, such as "3s" for three seconds. |
| |
| - `-no-color` - Disables terminal formatting sequences in the output. Use this |
| if you are running Terraform in a context where its output will be |
| rendered by a system that cannot interpret terminal formatting. |
| |
| For configurations using the [Terraform Cloud CLI integration](/cli/cloud) or the [`remote` backend](/language/settings/backends/remote) |
| only, `terraform untaint` |
| also accepts the option |
| [`-ignore-remote-version`](/cli/cloud/command-line-arguments#ignore-remote-version). |
| |
| For configurations using |
| [the `local` backend](/language/settings/backends/local) only, |
| `terraform untaint` also accepts the legacy options |
| [`-state`, `-state-out`, and `-backup`](/language/settings/backends/local#command-line-arguments). |