---
description: >-
  The tofu show command can inspect various OpenTofu artifacts and produce
  either human-readable or machine-readable descriptions.
---

# Command: show

The `tofu show` command can inspect various OpenTofu artifacts and produce
either human-readable or machine-readable descriptions.

For example, you can use `tofu show` to inspect a saved plan file to check
that the planned operations are acceptable, or to inspect the latest state
snapshot.

:::note
When using the `-json` command-line flag, any sensitive values in
OpenTofu state will be returned in plain text. For more information, see
[Sensitive Data in State](../../language/state/sensitive-data.mdx).
:::

## Usage

Usage: `tofu show [target-selection-option] [other-options]`

Use one of the following target selection options to specify the artifact
to inspect:

- `-state`: Inspect the latest state snapshot, if any.
- `-plan=FILENAME`: Inspect the plan stored in the given saved plan file.
- `-config`: Inspect the current configuration (requires `-json`).

The `-state` option is the default if none of these options are used. The
target-selection options are mutually-exclusive.

This command also accepts the following additional options:

- `-no-color`: Disables the use of terminal escape sequences in
  human-oriented output.
- `-json`: Selects the machine-readable JSON output format, instead
  of the default human-oriented output.
- `-var` and `-var-file`: Specifies values for any input variables
  used in module source addresses or backend settings in the
  current configuration.

This command relies on schema information from provider plugins to fully
understand the provider-specific data structures in state, plan, and
configuration artifacts. If you are currently using different provider
versions than were used when creating the selected artifact then
you may need to use `tofu apply` (or similar) to allow OpenTofu to
upgrade the stored data to match the latest provider schemas.

## JSON Output

When using the `-json` option, the structure of the machine-readable output
depends on the selected artifact type:

- `-state` returns [the JSON state representation](../../internals/json-format.mdx#state-representation).
- `-plan=FILENAME` returns the [the JSON plan representation](../../internals/json-format.mdx#plan-representation),
  which also includes information about the configuration and
  prior state that the plan was based on.
- `-config` returns [the JSON configuration representation](../../internals/json-format.mdx#configuration-representation),
  providing exactly the same configuration-related information that the plan representation would include,
  but without requiring a plan to be created first.

## Legacy Usage

For backward compatibility with older versions of OpenTofu, this
command also supports a different usage pattern:

`tofu show [other-options] <filename>`

In this style, none of the explicit target selection options can be used
and instead OpenTofu inspects the given file and reacts in the following
ways:

- If the file can be loaded as a saved plan file, behaves like `-plan=FILENAME`
  with the same file.
- If the file can be parsed as a local state snapshot file such as those
  created by `tofu state pull`, inspects the content of that state file
  using the same output format as would normally be used to inspect the
  latest state snapshot.

    The selected state snapshot file must be one associated with the
    configuration in the current working directory, or else the results
    are unspecified because the available providers might not match
    those that were used to create the data in the state snapshot.

Unless you need the legacy behavior of inspecting an arbitrary state
snapshot file, we recommend using the new explicit target selection
options to make it clearer to OpenTofu what artifact type you wish to
inspect.
