---
page_title: Manage Terraform plugins 
description: >-
  Providers are types of plugins for Terraform that manage infrastructure resources. Learn about managing plugins using the Terraform CLI.
---

# Manage plugins overview

This topic provides an overview of the how to manage plugins that Terraform relies on to manage various types
of resources. Providers are the only plugin type Terraform users interact with. Refer to [Providers](/terraform/language/providers) in the Terraform
language docs for additional information about providers.

## Workflow

When you initialize a working directory, Terraform installs any providers the Terraform configuration requires. Refer to 
[Provider Requirements](/terraform/language/providers/requirements) in the Terraform configuration language information about requiring providers. Refer to the [`terraform init` command documentation](/terraform/cli/init) for additional information about how initialize the working directory. 

By default, Terraform initializes the working directory without any additional interaction, but you must have network access to
download providers from their source registry.

You can configure Terraform's provider installation behavior to limit or skip
network access, and to enable use of providers that are not available through a
networked source. Terraform also includes commands that show information
about providers and commands that reduce the effort of installing providers in air-gapped
environments.

## Configuring Plugin Installation

Terraform's configuration file includes options for caching downloaded plugins,
or explicitly specifying a local or HTTPS mirror to install plugins from. For
more information, see [CLI Config File](/terraform/cli/config/config-file).

## Getting Plugin Information

Use the [`terraform providers`](/terraform/cli/commands/providers) command to get information
about the providers required by the current working directory's configuration.

Use the [`terraform version`](/terraform/cli/commands/version) command (or
`terraform -version`) to show the specific provider versions installed for the
current working directory.

Use the [`terraform providers schema`](/terraform/cli/commands/providers/schema) command to
get machine-readable information about the resources and configuration options
offered by each provider.

## Managing Plugin Installation

Use the [`terraform providers mirror`](/terraform/cli/commands/providers/mirror) command to
download local copies of every provider required by the current working
directory's configuration. The directory uses the nested directory layout
that Terraform expects when installing plugins from a local source, so you can
transfer it directly to an air-gapped system that runs Terraform.

Use the [`terraform providers lock`](/terraform/cli/commands/providers/lock) command
to update the lock file that Terraform uses to ensure predictable runs when
using ambiguous provider version constraints.
