pulumi/pulumi · error

install %q: %w

Error message

install %q: %w

What it means

In `LoadConverterPlugin` (pkg/cmd/pulumi/convert/io.go:54), when `plugin.NewConverter` reports a `*workspace.MissingError` and auto plugin acquisition is enabled, the CLI calls `pkgWorkspace.InstallPlugin` to fetch the converter. This error wraps any failure of that install — download failure, no matching version in the registry, checksum mismatch, or network issues.

Source

Thrown at pkg/cmd/pulumi/convert/io.go:54

	pluginSpec, err := workspace.NewPluginDescriptor(ctx.Request(), name, apitype.ConverterPlugin, nil, "", nil)
	if err != nil {
		return nil, fmt.Errorf("could not load converter plugin: %w", err)
	}

	// Try and load the converter plugin for this
	converter, err := plugin.NewConverter(ctx, pluginSpec.Name, pluginSpec.Version)
	if err != nil {
		// If NewConverter returns a MissingError, we can try and install the plugin if it was missing and try again,
		// unless auto plugin installs are turned off.
		_, ok := errors.AsType[*workspace.MissingError](err)
		if !ok || env.DisableAutomaticPluginAcquisition.Value() {
			// Not a MissingError, return the original error.
			return nil, fmt.Errorf("load %q: %w", name, err)
		}

		_, err = pkgWorkspace.InstallPlugin(ctx.Base(), pluginSpec, log, schema.NewLoaderServerFromContext)
		if err != nil {
			return nil, fmt.Errorf("install %q: %w", name, err)
		}

		converter, err = plugin.NewConverter(ctx, pluginSpec.Name, pluginSpec.Version)
		if err != nil {
			return nil, fmt.Errorf("load %q: %w", name, err)
		}
	}
	return converter, nil
}

View on GitHub (pinned to 793f7b2e16)

Solutions

  1. Check network access to the plugin registry (PULUMI_GET_WILY / downloads.pulumi.com) and proxy env (HTTPS_PROXY)
  2. Pre-install the plugin: `pulumi plugin install converter <name> <version>` and confirm the version exists with `pulumi plugin ls --help` / registry
  3. Free disk space in ~/.pulumi/plugins (prune old plugins: `pulumi plugin rm --all --yes` for unused)
  4. If behind a corporate proxy, configure the proxy or mirror the plugin manually into ~/.pulumi/plugins
  5. Retry — transient registry/network errors are common in CI

Example fix

// before: proxied CI
pulumi convert --from terraform --out ./proj  # install "terraform": download failed
// after
curl -I https://api.github.com  # verify egress, set proxy
export HTTPS_PROXY=http://proxy.corp:8080
pulumi plugin install converter terraform && pulumi convert --from terraform --out ./proj
Defensive patterns

Strategy: retry

Validate before calling

pulumi plugin install converter terraform 2>&1 || { echo "pre-flight install failed; check network/proxy"; exit 1; }

Prevention

When it happens

Trigger: Converter plugin not installed locally and `InstallPlugin` fails: no network/proxy blocks downloads.pulumi.com, requested version doesn't exist, disk full in ~/.pulumi/plugins, or download verification failure.

Common situations: Air-gapped or proxied CI environments; requesting a nonexistent plugin version; full home partition preventing plugin extraction; corporate TLS interception breaking downloads.

Related errors


AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31). Data as JSON: /api/errors/91a787b8e415817c. Report an issue: GitHub.