pulumi/pulumi · error

load language plugin %s: %w

Error message

load language plugin %s: %w

What it means

After installing project packages, the install command loads the language runtime plugin (nodejs, python, go, dotnet, yaml, ...) via the plugin host because it is needed to discover and install required resource plugins. If the language plugin cannot be loaded (missing, wrong version, or download failure), the error is wrapped with the runtime name and this message.

Source

Thrown at pkg/cmd/pulumi/install/install.go:175

			registry := cmdCmd.NewDefaultRegistry(
				cmd.Context(), cmdBackend.DefaultLoginManager, pkgWorkspace.Instance, proj, pctx.Diag, env.Global())
			continuation, err := newcmd.InstallPackagesFromProject(cmd.Context(), proj, root,
				registry, parallel, useLanguageVersionTools, cmd.OutOrStdout(), cmd.ErrOrStderr(), env.Global(),
			)
			if err != nil {
				return fmt.Errorf("installing `packages` from Pulumi.yaml: %w", err)
			}

			if proj.Runtime.Name() == "" {
				return nil
			}

			// First make sure the language plugin is present.  We need this to load the required resource plugins.
			// TODO: we need to think about how best to version this.  For now, it always picks the latest.
			runtime := proj.Runtime
			lang, err := pctx.Host.LanguageRuntime(pctx, runtime.Name())
			if err != nil {
				return fmt.Errorf("load language plugin %s: %w", runtime.Name(), err)
			}

			programInfo := plugin.NewProgramInfo(pctx.Root, pwd, main, runtime.Options())

			if !noDependencies {
				err = pkgCmdUtil.InstallDependencies(ctx, lang, plugin.InstallDependenciesRequest{
					Info:                    programInfo,
					UseLanguageVersionTools: useLanguageVersionTools,
					IsPlugin:                false,
				}, cmd.OutOrStdout(), cmd.ErrOrStderr())
				if err != nil {
					return fmt.Errorf("installing dependencies: %w", err)
				}
			}

			if !noPlugins {
				// Pass the continuation from InstallPackagesFromProject so the packages it
				// already installed and linked are not reinstalled or regenerated here.

View on GitHub (pinned to 793f7b2e16)

Solutions

  1. Run `pulumi plugin install language <runtime>` (or `pulumi plugin ls` to inspect what's present).
  2. Check the `runtime:` name in Pulumi.yaml for typos (nodejs, python, go, dotnet, yaml).
  3. Remove corrupted plugin directories under ~/.pulumi/plugins and let the CLI re-download.
  4. Verify network/proxy access to plugin sources; set HTTPS_PROXY if behind a proxy.

Example fix

// before: Pulumi.yaml
runtime: node   // invalid
// after
runtime: nodejs
// and if plugin is missing:
pulumi plugin install language nodejs
Defensive patterns

Strategy: retry

Validate before calling

pulumi plugin ls | grep -q "language" || pulumi plugin install language nodejs

Try / catch

if ! pulumi install; then
  pulumi plugin rm --all --yes && pulumi plugin install language nodejs && pulumi install  # re-download plugins
fi

Prevention

When it happens

Trigger: Running `pulumi install` in a project whose runtime's language plugin is not installed, cannot be fetched from the plugin marketplace, or whose binary is corrupt/incompatible — `pctx.Host.LanguageRuntime(ctx, runtime.Name())` fails.

Common situations: Fresh machine or CI without the language plugin cached and no network access; project `runtime:` name misspelled in Pulumi.yaml; SDK/CLI version mismatch leaving a broken plugin under ~/.pulumi/plugins; proxy/firewall blocking plugin download.

Related errors


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