pulumi/pulumi · error
failed to load language plugin %s: %w
Error message
failed to load language plugin %s: %w
What it means
Thrown when `pulumi new` cannot load the language runtime plugin for the project's runtime (e.g. nodejs, python, go) via pluginCtx.Host.LanguageRuntime. The language host binary could not be found, installed, or started, so follow-up generation/restore steps cannot run.
Source
Thrown at pkg/cmd/pulumi/project/newcmd/new.go:387
ctx,
projinfo,
pluginHost,
cmdutil.Diag(),
cmdutil.Diag(),
false, /* disableProviderPreview */
nil, /* tracingSpan */
nil, /* config */
)
if err != nil {
return err
}
defer pluginCtx.Close()
// If we're creating an empty project we won't have a runtime name
if proj.Runtime.Name() != "" {
lang, err := pluginCtx.Host.LanguageRuntime(pluginCtx, proj.Runtime.Name())
if err != nil {
return fmt.Errorf("failed to load language plugin %s: %w", proj.Runtime.Name(), err)
}
defer lang.Close()
programInfo := plugin.NewProgramInfo(pluginCtx.Root, pluginCtx.Pwd, entryPoint, proj.Runtime.Options())
// Query the language runtime for additional options.
if args.promptRuntimeOptions != nil {
options, err := args.promptRuntimeOptions(pluginCtx, lang, &proj.Runtime, entryPoint, opts,
args.yes, args.interactive, args.prompt)
if err != nil {
return err
}
if len(options) > 0 {
// Save the new options
for k, v := range options {
proj.Runtime.SetOption(k, v)
}
if err = pkgWorkspace.SaveProject(proj); err != nil {View on GitHub (pinned to 793f7b2e16)
Solutions
- Verify the runtime name in Pulumi.yaml is a supported one (nodejs, python, go, dotnet, yaml, ...)
- Ensure the language plugin is installed/available and the CLI can reach the plugin source (network/proxy)
- Clear or repair the plugin cache and reinstall (delete ~/.pulumi/plugins entries for the language host)
- Upgrade the Pulumi CLI so the bundled language host matches your version
- Check the wrapped error for launch details (missing binary, exec format error, etc.)
Example fix
// before (Pulumi.yaml) runtime: nodejss // after runtime: nodejs
Defensive patterns
Strategy: retry
Validate before calling
grep -E '^runtime:' Pulumi.yaml # confirm the runtime is one of: nodejs python go dotnet yaml
Try / catch
pulumi new my-template || pulumi new my-template # retry once to rule out transient plugin fetch failure
Prevention
- Use supported runtime names in Pulumi.yaml
- Ensure network access for plugin downloads in CI
- Keep the CLI and language plugins at compatible versions
- Periodically clean corrupt entries in ~/.pulumi/plugins
When it happens
Trigger: Project runtime set to a language whose plugin is missing/incompatible; plugin install blocked by network; LanguageRuntime call fails at plugin launch.
Common situations: Custom or typo'd runtime name in Pulumi.yaml; offline environment preventing plugin download; corrupted plugin cache; a version of the language plugin incompatible with the CLI.
Related errors
- load language plugin %s: %w
- failed to load language plugin %s: %w
- %w Your new project in %s is incomplete
- installing `packages` from PulumiPlugin.yaml: %w
- installing dependencies: %w
AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31).
Data as JSON: /api/errors/daeb31f1b8ca697d.
Report an issue: GitHub.