| --- | |
| description: |- | |
| The `tofu refresh` command reads the current settings from all managed | |
| remote objects and updates the OpenTofu state to match. | |
| --- | |
| # Command: refresh | |
| The `tofu refresh` command reads the current settings from all managed | |
| remote objects and updates the OpenTofu state to match. | |
| :::warning | |
| This command is deprecated, because its default behavior is | |
| unsafe if you have misconfigured credentials for any of your providers. | |
| See below for more information and recommended alternatives. | |
| ::: | |
| This won't modify your real remote objects, but it will modify the | |
| [OpenTofu state](../../language/state/index.mdx). | |
| You shouldn't typically need to use this command, because OpenTofu | |
| automatically performs the same refreshing actions as a part of creating | |
| a plan in both the | |
| [`tofu plan`](../../cli/commands/plan.mdx) | |
| and | |
| [`tofu apply`](../../cli/commands/apply.mdx) | |
| commands. This command is here primarily for backward compatibility, but | |
| we don't recommend using it because it provides no opportunity to review | |
| the effects of the operation before updating the state. | |
| ## Usage | |
| Usage: `tofu refresh [options]` | |
| This command is effectively an alias for the following command: | |
| ``` | |
| tofu apply -refresh-only -auto-approve | |
| ``` | |
| Consequently, it supports all of the same options as | |
| [`tofu apply`](../../cli/commands/apply.mdx) except that it does not accept a saved | |
| plan file, it doesn't allow selecting a planning mode other than "refresh only", | |
| and `-auto-approve` is always enabled. | |
| :::note | |
| Use of variables in [module sources](../../language/modules/sources.mdx#support-for-variable-and-local-evaluation), | |
| [backend configuration](../../language/settings/backends/configuration.mdx#variables-and-locals), | |
| or [encryption block](../../language/state/encryption.mdx#configuration) | |
| requires [assigning values to root module variables](../../language/values/variables.mdx#assigning-values-to-root-module-variables) | |
| when running `tofu refresh`. | |
| ::: | |
| Automatically applying the effect of a refresh is risky. If you have | |
| misconfigured credentials for one or more providers, OpenTofu may | |
| be misled into thinking that all of the managed objects have been deleted, | |
| causing it to remove all of the tracked objects without any confirmation prompt. | |
| Instead, we recommend using the following command in order to get the same | |
| effect but with the opportunity to review the changes that OpenTofu has | |
| detected before committing them to the state: | |
| ``` | |
| tofu apply -refresh-only | |
| ``` | |
| This alternative command will present an interactive prompt for you to confirm | |
| the detected changes. |