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
- Run `pulumi plugin install language <runtime>` (or `pulumi plugin ls` to inspect what's present).
- Check the `runtime:` name in Pulumi.yaml for typos (nodejs, python, go, dotnet, yaml).
- Remove corrupted plugin directories under ~/.pulumi/plugins and let the CLI re-download.
- 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
- Pre-warm language plugins in CI images (`pulumi plugin install language <rt>`).
- Spell the `runtime:` name exactly (nodejs, python, go, dotnet, yaml).
- Keep the CLI and SDKs on matching versions to avoid plugin incompatibilities.
- Configure HTTPS_PROXY on restricted networks so plugin downloads succeed.
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
- installing `packages` from PulumiPlugin.yaml: %w
- installing dependencies: %w
- failed to load language plugin %s: %w
- failed to load language plugin %s: %w
- installing `packages` from Pulumi.yaml: %w
AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31).
Data as JSON: /api/errors/9a4604f5d41508a2.
Report an issue: GitHub.