hashicorp/terraform · error · ErrArchNotSupported

ErrArchNotSupported

ErrArchNotSupported

Error message

plugin is not supported by your computer architecture/operating system

What it means

ErrArchNotSupported is a sentinel returned by Release.Select when the fetched plugin manifest contains builds but none match the runtime's GOOS/GOARCH pair. The manifest is reachable and well-formed; the platform you are running on simply has no published artifact for that plugin.

Source

Thrown at internal/pluginshared/errors.go:21

package pluginshared

import (
	"errors"
	"fmt"
)

var (
	// ErrPluginNotSupported is the error returned when the upstream HCP Terraform does not
	// have a manifest.
	ErrPluginNotSupported = errors.New("plugin is not supported by the remote version of Terraform Enterprise")

	// ErrRequestCanceled is the error returned when the context was cancelled.
	ErrRequestCanceled = errors.New("request was canceled")

	// ErrArchNotSupported is the error returned when the plugin does not have a build for the
	// current OS/Architecture.
	ErrArchNotSupported = errors.New("plugin is not supported by your computer architecture/operating system")

	// ErrPluginNotFound is the error returned when the plugin manifest points to a location
	// that was does not exist.
	ErrPluginNotFound = errors.New("plugin download was not found in the location specified in the manifest")
)

// ErrQueryFailed is the error returned when the plugin http client request fails
type ErrQueryFailed struct {
	inner error
}

// ErrCloudPluginNotVerified is the error returned when the archive authentication process fails
type ErrCloudPluginNotVerified struct {
	inner error
}

// Error returns a string representation of ErrQueryFailed
func (e ErrQueryFailed) Error() string {

View on GitHub (pinned to c9def3e214)

Solutions

  1. Check the provider's releases page for the exact GOOS_GOARCH you need; if absent, switch to a provider version/release that publishes it.
  2. Run on a supported OS/architecture, or run Terraform in a container/VM of a supported arch.
  3. If you control the provider, add the missing GOOS/GOARCH to its release build matrix (goreleaser targets).
  4. As a last resort for local dev, build the provider from source for your platform and install it via filesystem mirror (terraform-provider-network).
Defensive patterns

Strategy: validation

Validate before calling

// Validate platform support against the manifest before downloading.
build, err := release.Select(pluginName, runtime.GOOS, runtime.GOARCH)
if err != nil {
    return fmt.Errorf("no %s build for %s/%s: %w", pluginName, runtime.GOOS, runtime.GOARCH, err)
}

Type guard

func isArchNotSupported(err error) bool {
    return errors.Is(err, pluginshared.ErrArchNotSupported)
}

Try / catch

build, err := release.Select(name, goos, arch)
if errors.Is(err, pluginshared.ErrArchNotSupported) {
    // surface a helpful list of supported os_arch from release.Builds
    return supportedPlatforms(release)
}

Prevention

When it happens

Trigger: Returned at internal/pluginshared/client.go:271 inside Release.Select(pluginName, goos, arch) after iterating m.Builds and finding no entry where build.Os==goos && build.Arch==arch. Logged with the list of supported os_arch keys at TRACE.

Common situations: Running Terraform on an uncommon platform (e.g. darwin/arm64 before a provider shipped universal binaries, linux/arm64, freebsd/amd64, windows/arm64). Using a provider that only publishes amd64 builds. A manifest that was generated for a limited target set. Rosetta/qemu environments still report the native arch.

Related errors


AI-assisted analysis of hashicorp/terraform@c9def3e214 (2026-08-07). Data as JSON: /api/errors/bd94fca395e97cc7. Report an issue: GitHub.