# 0.25.3 (Unreleased)

DEPENDENCIES:

* build(deps): bump github.com/go-git/go-billy/v5 from 5.8.0 to 5.9.0 ([#589](https://github.com/hashicorp/terraform-exec/pull/589))
* build(deps): bump github.com/go-git/go-git/v5 from 5.18.0 to 5.19.2 ([#588](https://github.com/hashicorp/terraform-exec/pull/588), [#591](https://github.com/hashicorp/terraform-exec/pull/591), [#604](https://github.com/hashicorp/terraform-exec/pull/604))
* build(deps): bump github.com/hashicorp/terraform-json from 0.27.2 to 0.28.0 ([#598](https://github.com/hashicorp/terraform-exec/pull/598))
* build(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 ([#597](https://github.com/hashicorp/terraform-exec/pull/597))
* build(deps): bump golang.org/x/net from 0.53.0 to 0.55.0 ([#595](https://github.com/hashicorp/terraform-exec/pull/595))

# 0.25.2 (April 29, 2026)

NOTES:

- go.mod: Lower compatibility constraint from 1.25.8 to 1.25.0 ([#581](https://github.com/hashicorp/terraform-exec/pull/581))

DEPENDENCIES:

- build(deps): bump github.com/hashicorp/hc-install from 0.9.4 to 0.9.5 ([#585](https://github.com/hashicorp/terraform-exec/pull/585))

# 0.25.1 (April 22, 2026)

DEPENDENCIES:

- build(deps): bump github.com/zclconf/go-cty from 1.17.0 to 1.18.0 ([#568](https://github.com/hashicorp/terraform-exec/pull/568))
- build(deps): bump github.com/hashicorp/go-version from 1.8.0 to 1.9.0 ([#574](https://github.com/hashicorp/terraform-exec/pull/574))
- build(deps): bump github.com/go-git/go-git/v5 from 5.16.5 to 5.17.1 ([#573](https://github.com/hashicorp/terraform-exec/pull/573))
- build(deps): bump github.com/zclconf/go-cty from 1.18.0 to 1.18.1 ([#576](https://github.com/hashicorp/terraform-exec/pull/576))
- build(deps): bump github.com/hashicorp/hc-install from 0.9.3 to 0.9.4 ([#578](https://github.com/hashicorp/terraform-exec/pull/578))

# 0.25.0 (February 16, 2026)

NOTES:

- bump Go compatibility from 1.23 to 1.24 (in-line with Go's support policy) ([#548](https://github.com/hashicorp/terraform-exec/pull/548), [#557](https://github.com/hashicorp/terraform-exec/pull/557))

ENHANCEMENTS:

- tfexec: Added provider reattach support to all `terraform workspace` subcommands ([#556](https://github.com/hashicorp/terraform-exec/pull/556))
- tfexec: Add `-generate-config-out` to the `(Terraform).Plan()` method ([#563](https://github.com/hashicorp/terraform-exec/pull/563))
- Add support for `providers mirror` subcommand ([#551](https://github.com/hashicorp/terraform-exec/pull/551))

DEPENDENCIES:

- build(deps): bump golang.org/x/crypto from 0.36.0 to 0.45.0 ([#547](https://github.com/hashicorp/terraform-exec/pull/547))
- build(deps): bump github.com/hashicorp/go-version from 1.7.0 to 1.8.0 ([#552](https://github.com/hashicorp/terraform-exec/pull/552))
- build(deps): bump github.com/hashicorp/hc-install from 0.9.2 to 0.9.3 ([#566](https://github.com/hashicorp/terraform-exec/pull/566))
- build(deps): bump github.com/hashicorp/terraform-json from 0.27.1 to 0.27.2 ([#542](https://github.com/hashicorp/terraform-exec/pull/542))
- build(deps): bump github.com/zclconf/go-cty from 1.16.4 to 1.17.0 ([#535](https://github.com/hashicorp/terraform-exec/pull/535))

# 0.24.0 (September 17, 2025)

ENHANCEMENTS:

* Implement `QueryJSON` and introduce new way for consuming Terraform's structured logging ([#539](https://github.com/hashicorp/terraform-exec/pull/539))

INTERNAL:

* bump actions/setup-go from 5.5.0 to 6.0.0 ([#536](https://github.com/hashicorp/terraform-exec/pull/536))

# 0.23.1 (August 27, 2025)

BUG FIXES:

* Avoid closing stdio pipes early on graceful (SIGINT-based) cancellation ([#527](https://github.com/hashicorp/terraform-exec/pull/527))
  - This enables correct handling of graceful cancellation for recent versions of Terraform (1.1+). Older versions should use `SetEnableLegacyPipeClosing(true)` to avoid hanging on cancellation.

INTERNAL:

* bump github.com/cloudflare/circl from 1.6.0 to 1.6.1 ([#524](https://github.com/hashicorp/terraform-exec/pull/524))
* bump github.com/hashicorp/terraform-json from 0.24.0 to 0.26.0 ([#520](https://github.com/hashicorp/terraform-exec/pull/520) & [#529](https://github.com/hashicorp/terraform-exec/pull/529))
* bump github.com/zclconf/go-cty from 1.16.2 to 1.16.4 ([#522](https://github.com/hashicorp/terraform-exec/pull/522) & [#532](https://github.com/hashicorp/terraform-exec/pull/532))
* bump golang.org/x/net from 0.36.0 to 0.38.0 ([#515](https://github.com/hashicorp/terraform-exec/pull/515))

# 0.23.0 (April 10, 2025)

ENHANCEMENTS:
* Context cancellation on Unix systems will now send Terraform process SIGINT instead of killing it (which is otherwise default `os/exec` behaviour) ([#512](https://github.com/hashicorp/terraform-exec/pull/512))
  * You can change the default `60s` [`WaitDelay`](https://pkg.go.dev/os/exec#Cmd) via `SetWaitDelay(time.Duration)`
* error type returned from individual commands now implements `Unwrap` making it possible to pass it into [`errors.As`](https://pkg.go.dev/errors#As) and access lower-level error such as [`exec.ExitError`](https://pkg.go.dev/os/exec#ExitError) ([#512](https://github.com/hashicorp/terraform-exec/pull/512))

NOTES:
* go: Require Go 1.23 (previously 1.22) ([#499](https://github.com/hashicorp/terraform-exec/pull/511))
* Declare support of Terraform 0.12+ ([#510](https://github.com/hashicorp/terraform-exec/pull/510))

# 0.22.0 (January 21, 2025)

ENHANCEMENTS:
* tfexec: Add support for `terraform init --json` via `InitJSON` ([#478](https://github.com/hashicorp/terraform-exec/pull/478))

INTERNAL:
* go: Require Go 1.22 (previously 1.18) ([#499](https://github.com/hashicorp/terraform-exec/pull/499))

# 0.21.0 (May 17, 2024)

ENHANCEMENTS:
- tfexec: Add `-allow-deferral` to `(Terraform).Apply()` and `(Terraform).Plan()` methods ([#447](https://github.com/hashicorp/terraform-exec/pull/447))

# 0.20.0 (December 20, 2023)

ENHANCEMENTS:
 - Add `JSONNumber` option to `Show` to enable `json.Number` representation of numerical values in returned `tfjson.Plan` and `tfjson.State` values ([#427](https://github.com/hashicorp/terraform-exec/pull/427))

# 0.19.0 (August 31, 2023)

ENHANCEMENTS:
 - Add support for `terraform test` command ([#398](https://github.com/hashicorp/terraform-exec/issues/398))
 - Add support for `-refresh-only` flag for `Plan` and `Apply` methods. ([#402](https://github.com/hashicorp/terraform-exec/issues/402))
 - Add support for `-destroy` flag for `Apply` ([#292](https://github.com/hashicorp/terraform-exec/issues/292))

BUG FIXES:

 - Fix bug in which the `TF_WORKSPACE` env var was set to an empty string, instead of being unset as intended. ([#388](https://github.com/hashicorp/terraform-exec/issues/388))

# 0.18.1 (March 01, 2023)

BUG FIXES:

 - Fix bug in which errors returned from commands such as `(Terraform).Apply()` were missing stderr output from Terraform. ([#372](https://github.com/hashicorp/terraform-exec/issues/372))

# 0.18.0 (February 20, 2023)

BREAKING CHANGES:

 - The following error types have been removed. These errors were based on regex parsing of Terraform CLI's human-readable output into custom error cases. ([#352](https://github.com/hashicorp/terraform-exec/issues/352))
   - `ErrConfigInvalid`
   - `ErrLockIdInvalid`
   - `ErrMissingVar`
   - `ErrNoConfig`
   - `ErrNoInit`
   - `ErrNoWorkspace`
   - `ErrStateLocked`
   - `ErrStatePlanRead`
   - `ErrTFVersionMismatch`
   - `ErrWorkspaceExists`

ENHANCEMENTS:

- tfexec: Add `(Terraform).ApplyJSON()`, `(Terraform).DestroyJSON()`, `(Terraform).PlanJSON()` and `(Terraform).RefreshJSON()` methods ([#354](https://github.com/hashicorp/terraform-exec/pull/354))
- tfexec: Add `(Terraform).MetadataFunctions()` method ([#358](https://github.com/hashicorp/terraform-exec/issues/358))

# 0.17.3 (August 31, 2022)

Please note that terraform-exec now requires Go 1.18.

BUG FIXES:

 - Fix bug in which `terraform init` was always called with the `-force-copy` flag ([#268](https://github.com/hashicorp/terraform-exec/issues/268))
 - Always pass `-no-color` flag when calling `terraform force-unlock` ([#270](https://github.com/hashicorp/terraform-exec/issues/270))

# 0.17.2 (July 01, 2022)

ENHANCEMENTS:

 - tfexec: Add `(Terraform).SetLogCore()` and `(Terraform).SetLogProvider()` methods ([#324](https://github.com/hashicorp/terraform-exec/pull/324))

INTERNAL:

 - Bump github.com/hashicorp/go-version from 1.5.0 to 1.6.0 ([#323](https://github.com/hashicorp/terraform-exec/pull/323))

# 0.17.1 (June 27, 2022)

BUG FIXES:

 - Fix bug in which `StatePush` would fail with "Exactly one argument expected" ([#316](https://github.com/hashicorp/terraform-exec/issues/316))

# 0.17.0 (June 22, 2022)

FEATURES:

 - Add `SetLog()` method for `Terraform` ([#291](https://github.com/hashicorp/terraform-exec/pull/291))
 - Add support for `state pull` and `state push` ([#215](https://github.com/hashicorp/terraform-exec/pull/215))
 - Add support for running e2e tests against a local Terraform executable with `TFEXEC_E2ETEST_TERRAFORM_PATH` ([#305](https://github.com/hashicorp/terraform-exec/pull/305))

BUG FIXES:

 - Avoid data race conditions ([#299](https://github.com/hashicorp/terraform-exec/pull/299))

INTERNAL:

 - Bump github.com/hashicorp/go-version from 1.4.0 to 1.5.0 ([#306](https://github.com/hashicorp/terraform-exec/pull/306))

# 0.16.1 (April 13, 2022)

This patch version removes some unnecessary dependencies, and bumps Go module compatibility to 1.17.

# 0.16.0 (January 31, 2022)

This release removes the experimental `tfinstall` package. We recommend users of `tfinstall` switch to https://github.com/hashicorp/hc-install.

Please note also terraform-exec's Go version support policy, which, like Go's own release policy, commits to supporting the last two major releases. This means that currently terraform-exec requires Go 1.17 or later.

BREAKING CHANGES:

 - Remove `tfinstall` and `cmd/tfinstall` packages ([#235](https://github.com/hashicorp/terraform-exec/issues/235))
 - Remove support for `add` command ([#232](https://github.com/hashicorp/terraform-exec/issues/232))

FEATURES:

 - Add support for `workspace delete` command ([#212](https://github.com/hashicorp/terraform-exec/issues/212))
 - Add support for `workspace show` command ([#245](https://github.com/hashicorp/terraform-exec/issues/245))
 - Add support for `force-unlock` command ([#223](https://github.com/hashicorp/terraform-exec/issues/223))
 - Add support for `graph` command ([#257](https://github.com/hashicorp/terraform-exec/issues/257))
 - Add support for `taint` command ([#251](https://github.com/hashicorp/terraform-exec/issues/251))
 - Add support for `untaint` command ([#251](https://github.com/hashicorp/terraform-exec/issues/251))
 - Add `ErrStatePlanRead`, returned when Terraform cannot read a given state or plan file ([#273](https://github.com/hashicorp/terraform-exec/issues/273))

# 0.15.0 (October 05, 2021)

FEATURES:

 - Add support for `providers lock` command ([#203](https://github.com/hashicorp/terraform-exec/issues/203))
 - Add support for `add` command ([#209](https://github.com/hashicorp/terraform-exec/issues/209))
 - Add support for `Plan`/`Apply` `Replace` option ([#211](https://github.com/hashicorp/terraform-exec/issues/211))

ENHANCEMENTS:

 - Introduce `tfexec.ErrStateLocked` to represent locked state error ([#221](https://github.com/hashicorp/terraform-exec/issues/221))
 - Account for upcoming init error message change ([#228](https://github.com/hashicorp/terraform-exec/issues/228))

INTERNAL:

 - deps: Bump terraform-json to `0.13.0` to address panic & support v1 JSON format ([#224](https://github.com/hashicorp/terraform-exec/issues/224))

# 0.14.0 (June 24, 2021)

FEATURES:
 - Add `ProtocolVersion` to `ReattachConfig` struct, enabling provider protocol v6 support in reattach mode, provided that Terraform and the provider plugin are both using go-plugin v1.4.1 or later. This change is backwards-compatible, as zero values for this field are interpreted as protocol v5. ([#182](https://github.com/hashicorp/terraform-exec/issues/182))
 - Introduce `tfexec.Get()` for downloading modules ([#176](https://github.com/hashicorp/terraform-exec/issues/176))
 - Introduce `tfexec.Upgrade013()` ([#178](https://github.com/hashicorp/terraform-exec/issues/178))

INTERNAL:

 - Update `terraform-json` to account for changes in state & plan JSON output in Terraform v1.0.1+ ([#194](https://github.com/hashicorp/terraform-exec/issues/194))
 - Improve error message for incompatible Terraform version ([#191](https://github.com/hashicorp/terraform-exec/issues/191))

# 0.13.3 (April 23, 2021)

SECURITY:
 - `tfinstall`: The HashiCorp PGP signing key has been rotated ([HCSEC-2021-12](https://discuss.hashicorp.com/t/hcsec-2021-12-codecov-security-event-and-hashicorp-gpg-key-exposure/23512)). This key is used to verify downloaded versions of Terraform. We recommend all users of terraform-exec upgrade to v0.13.3 for this security fix. ([#166](https://github.com/hashicorp/terraform-exec/issues/166))

N.B. Versions of terraform-exec prior to v0.13.3 will continue to verify older versions of Terraform (up to and including v0.15.0) for a limited period. **Installation of Terraform using older versions of terraform-exec will stop working soon, and we recommend upgrading as soon as possible to avoid any interruption.**

# 0.13.2 (April 06, 2021)

BUG FIXES:
 - Update `terraform-json` to support 0.15 changes in plan & config JSON output ([#153](https://github.com/hashicorp/terraform-exec/issues/153))
 - Update `go-getter` to prevent race conditions where consumers would require `go-cleanhttp` `>=0.5.2` (which tfexec itself didn't depend on until now) ([#154](https://github.com/hashicorp/terraform-exec/issues/154))

# 0.13.1 (March 29, 2021)

BUG FIXES:
 - Bump version of terraform-json library to handle latest Terraform 0.15 output format ([#143](https://github.com/hashicorp/terraform-exec/issues/143))

NOTES:
 - This release no longer supports Go 1.12 (1.13+ is required)

# 0.13.0 (February 05, 2021)

Please note that this is the first release of terraform-exec compatible with Terraform 0.15. Running Terraform 0.15 commands with previous versions of terraform-exec may produce unexpected results.

FEATURES:
 - Compatibility checks for CLI flags removed in Terraform 0.15 ([#120](https://github.com/hashicorp/terraform-exec/issues/120))
 - Introduce `StateRm` method ([#122](https://github.com/hashicorp/terraform-exec/issues/122))

# 0.12.0 (December 18, 2020)

BREAKING CHANGES:
 - Move Git ref installation to subpackage so that consumers can limit dependencies ([#98](https://github.com/hashicorp/terraform-exec/issues/98))

FEATURES:
 - Improve error handling for formatting command on unsupported version (`<0.7.7`) ([#88](https://github.com/hashicorp/terraform-exec/issues/88))
 - Introduce `Format` method with `io.Reader`/`io.Writer` interfaces ([#96](https://github.com/hashicorp/terraform-exec/issues/96))
 - Introduce `Validate` method with `tfjson` defined diagnostic types. Those types reflect exactly the types used in `terraform validate -json` output ([#68](https://github.com/hashicorp/terraform-exec/issues/68))
 - Introduce `StateMv` method ([#112](https://github.com/hashicorp/terraform-exec/issues/112))
 - Introduce `Upgrade012` method ([#105](https://github.com/hashicorp/terraform-exec/issues/105))

BUG FIXES:
 - Fix issue in tfinstall.GitRef where it assumed a `vendor` directory was present ([#89](https://github.com/hashicorp/terraform-exec/issues/89))
 - Use `json.Number` instead of `float64` when parsing state ([#113](https://github.com/hashicorp/terraform-exec/issues/113))
 - Support long variable names in `ErrMissingVar` ([#110](https://github.com/hashicorp/terraform-exec/issues/110))

# 0.11.0 (September 23, 2020)

FEATURES:
 - Added Terraform fmt support with the ability to format and write files/folders, check if files/folders need formatting, and format strings directly ([#82](https://github.com/hashicorp/terraform-exec/issues/82))
 - Added support for refs in the tfinstall CLI ([#80](https://github.com/hashicorp/terraform-exec/issues/80))

N.B. tfinstall binaries for all supported platforms are now available via GitHub Releases.

# 0.10.0 (September 15, 2020)

FEATURES:
 - Added the ability to customize the `User-Agent` header for some `tfinstall` finders ([#76](https://github.com/hashicorp/terraform-exec/issues/76))
 - Added well known error for a mismatch for `required_version` ([#66](https://github.com/hashicorp/terraform-exec/issues/66))
 - Added new `ShowPlanFileRaw` function to obtain the human-friendly output of a plan ([#83](https://github.com/hashicorp/terraform-exec/issues/83))

# 0.9.0 (September 09, 2020)

BREAKING CHANGES:
 - `context.Context` added to `tfinstall.Find` to allow for cancellation, timeouts, etc ([#51](https://github.com/hashicorp/terraform-exec/issues/51))
 - You can no longer use `TF_WORKSPACE` for workspace management, you must use `Terraform.WorkspaceSelect` ([#75](https://github.com/hashicorp/terraform-exec/issues/75))

FEATURES:
 - Add `ErrWorkspaceExists` for when workspaces with the same name already exist when calling `Terraform.WorkspaceNew` ([#67](https://github.com/hashicorp/terraform-exec/issues/67))
 - Added `tfinstall.GitRef` to support installation of Terraform from a git ref instead of by released version ([#51](https://github.com/hashicorp/terraform-exec/issues/51))
 - Created the **tfinstall** CLI utility (this is mostly for use in things like CI automation) ([#29](https://github.com/hashicorp/terraform-exec/issues/29))
 - Added `ReattachOption` for plugin reattach functionality ([#78](https://github.com/hashicorp/terraform-exec/issues/78))

# 0.8.0 (August 29, 2020)

BREAKING CHANGES:
 - Add `-detailed-exit-code` to `Terraform.Plan` calls, `Terraform.Plan` now also returns a bool indicating if any diff is present ([#55](https://github.com/hashicorp/terraform-exec/issues/55))

FEATURES:
 - Added `Terraform.SetAppendUserAgent` for User-Agent management from consuming applications ([#46](https://github.com/hashicorp/terraform-exec/issues/46))
 - Added `Terraform.WorkspaceList`, `Terraform.WorkspaceNew`, and `Terraform.WorkspaceSelect` along with the `ErrNoWorkspace` error to indicate a workspace does not exist ([#56](https://github.com/hashicorp/terraform-exec/issues/56))
 - Added support for using multiple `VarFile` options ([#61](https://github.com/hashicorp/terraform-exec/issues/61))

BUG FIXES:
 - Fix bug with checking for empty path before executing version command ([#62](https://github.com/hashicorp/terraform-exec/issues/62))

# 0.7.0 (August 20, 2020)

FEATURES:
 - Added `Terraform.Refresh` method ([#53](https://github.com/hashicorp/terraform-exec/issues/53))
 - Added `Terraform.ShowStateFile` and `Terraform.ShowPlanFile` ([#54](https://github.com/hashicorp/terraform-exec/issues/54))
 - Added support for `DIR` positional arg in init, destroy, and plan ([#52](https://github.com/hashicorp/terraform-exec/issues/52))
 - Relaxed logger interface ([#57](https://github.com/hashicorp/terraform-exec/issues/57))
 - Added error for missing required variable ([#57](https://github.com/hashicorp/terraform-exec/issues/57))

BUG FIXES:
 - Fixed logging issue for error cmd ([#57](https://github.com/hashicorp/terraform-exec/issues/57))

# 0.6.0 (August 14, 2020)

FEATURES:
 - Added `Terraform.SetStdout` and `Terraform.SetStderr` to let consumers log CLI output ([#49](https://github.com/hashicorp/terraform-exec/issues/49))

BUG FIXES:
 - Fixed miscategorization of `ErrNoInit` on Terraform 0.13 ([#48](https://github.com/hashicorp/terraform-exec/issues/48))

# 0.5.0 (August 14, 2020)

FEATURES:
 - Version compatibility testing for `terraform show` ([#41](https://github.com/hashicorp/terraform-exec/issues/41))

BUG FIXES:
 - Tolerate reversed `terraform version` output order ([#47](https://github.com/hashicorp/terraform-exec/issues/47))

# 0.4.0 (July 30, 2020)

FEATURES:
  - Added `Terraform.SetLogPath` method to set `TF_LOG_PATH` environment variable, and prevented manual setting of programmatically supported environment variables ([#32](https://github.com/hashicorp/terraform-exec/issues/32))
  - Added `Terraform.Version` method to get executable version information ([#7](https://github.com/hashicorp/terraform-exec/issues/7))

BUG FIXES:
  - Fixed `-var` handling issue ([#34](https://github.com/hashicorp/terraform-exec/issues/34))

# 0.3.0 (July 17, 2020)

BREAKING CHANGES:
  - Stop exporting `exec.Cmd` versions of methods ([#25](https://github.com/hashicorp/terraform-exec/issues/25))
  - Require `address` and `id` arguments in `Import()` ([#24](https://github.com/hashicorp/terraform-exec/issues/24))
  - Rename `StateShow()` to `Show()` ([#30](https://github.com/hashicorp/terraform-exec/issues/30))

BUG FIXES:
  - Fix bug in `Import()` config argument ([#28](https://github.com/hashicorp/terraform-exec/issues/28))

# 0.2.2 (July 13, 2020)

BUG FIXES:
  - Version number is now correctly reported by the tfinstall package. Please note that `tfinstall.Version` was incorrect between versions 0.1.1 and 0.2.1 inclusive.

# 0.2.1 (July 10, 2020)

BUG FIXES:
  - Minor code changes to allow for compilation in Go 1.12 ([#21](https://github.com/hashicorp/terraform-exec/pull/21))

# 0.2.0 (July 8, 2020)

FEATURES:
  - add `Import()` function ([#20](https://github.com/hashicorp/terraform-exec/pull/20))

# 0.1.1 (July 7, 2020)

BUG FIXES:
 - Downgrade `github.com/hashicorp/go-getter` dependency, which added a requirement for Go 1.13.

# 0.1.0 (July 3, 2020)

Initial release.

This Go module contains two packages, `github.com/hashicorp/terraform-exec/tfexec`, and `github.com/hashicorp/terraform-exec/tfinstall`, which share the same version.
