pulumi/pulumi · error

unknown setting name: %s

Error message

unknown setting name: %s

What it means

`pulumi esc env get-settings` takes an optional setting name argument which must match a name registered in the settings registry (e.g. "deletion-protected"). If the provided name is not found in the registry, the command fails with this error rather than querying the API.

Source

Thrown at pkg/cmd/esc/cli/env_settings_get.go:82

			if len(args) == 0 {
				if format == outputJSON {
					all := map[string]any{}
					for _, setting := range registry.Settings {
						all[setting.KebabName()] = setting.GetValue(settings)
					}
					return writeJSON(env.esc.stdout, all)
				}
				for _, setting := range registry.Settings {
					fmt.Fprintf(env.esc.stdout, "%s %v\n", setting.KebabName(), setting.GetValue(settings))
				}
				return nil
			}

			rawSettingName := args[0]
			setting, ok := registry.GetSetting(rawSettingName)
			if !ok {
				return fmt.Errorf("unknown setting name: %s", rawSettingName)
			}

			value := setting.GetValue(settings)
			if format == outputJSON {
				return writeJSON(env.esc.stdout, map[string]any{setting.KebabName(): value})
			}
			fmt.Fprintln(env.esc.stdout, value)

			return nil
		},
	}

	addOutputFlag(cmd, &output)

	return cmd
}

View on GitHub (pinned to 793f7b2e16)

Solutions

  1. Use the exact kebab-case name: `pulumi esc env get-settings my-env deletion-protected`
  2. Run without a setting name (`pulumi esc env get-settings my-env`) to list all settings and see valid names
  3. Check `pulumi esc env set-settings --help` for the list of supported setting names

Example fix

// before
$ pulumi esc env get-settings my-env deletionProtection
// after
$ pulumi esc env get-settings my-env deletion-protected
Defensive patterns

Strategy: validation

Validate before calling

const KNOWN_SETTINGS = ["deletion-protected"];
if (!KNOWN_SETTINGS.includes(settingName)) {
  throw new Error(`unknown setting "${settingName}"; valid: ${KNOWN_SETTINGS.join(", ")}`);
}

Type guard

const isKnownSetting = (name, registry) =>
  typeof name === "string" && registry.some((s) => s.kebabName === name);

Prevention

When it happens

Trigger: Running `pulumi esc env get-settings <env> <name>` where <name> is not a registered setting — typos like "deletionProtection", "deletion_protected", or a name that exists only conceptually but is not in the registry.

Common situations: Guessing setting names from API docs instead of the CLI's kebab-case registry names; using camelCase or snake_case variants of "deletion-protected".

Related errors


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