# What changed in @pulumi/pulumi

> 883 changes in @pulumi/pulumi 3 from its official release notes, upgrade guides and advisories: 78 breaking, 3 deprecations, 11 security, 277 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/@pulumi/pulumi/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @pulumi/pulumi 3

### Breaking changes

- pulumi logs now errors by default ahead of its removal. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- pulumi watch now errors by default ahead of its removal. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Schemas defining a root-module resource named provider are rejected during SDK generation instead of causing a panic. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Go and Python SDK resources from extension packages now use an explicit provider instead of falling back to a default provider. (3.266.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.266.0)
- workspace.Credentials.AccessTokens was removed; stored logins are now read only from the accounts object of credentials.json. (3.266.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.266.0)
- PCL reports a type mismatch when a resource input property is not also declared as an output. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- PCL reports errors when number or bool literals are not admitted by a property's schema constant or enum. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Go policy remediations now run only at the remediate enforcement level. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- policyx.ResourceValidationArgs.DryRun has been removed because it was never correctly set. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Accepts --path-filter once per filter instead of splitting filter values on commas. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- Errors sooner when string values cannot be cast to numeric or boolean inputs. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- The branch and commit settings now replace one another instead of being combined. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- The command now rejects `--oidc-*-clear=false` instead of silently ignoring it. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- pulumi new now errors on ambiguous template names instead of failing silently. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Templates downloaded from URLs outside the configured service now have their TLS certificates verified. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- The --output=json value changes from a list of names to objects containing environment variable values. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Python names plain function input object types without the Args suffix, matching exported SDK names. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Typed object stack outputs now use camelCase wire-format property names, matching other language SDKs. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Zip template entries resolving outside the extraction directory are rejected. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- `pulumi import` now rejects files that contain unknown values. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Repeated header values with the same name are all sent instead of silently overwriting the last value. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- The DIY backend deprecation warning became an error, and the environment variable was renamed accordingly. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Generated SDKs now require pulumi SDK v3.255.0 or later because output-form invoke arguments are passed without resolving them first. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- A Python resource depending on its own parent now reports an error instead of hanging. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Extension-parameterized packages namespace resource and function tokens under their own package name instead of the base provider's. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Now exits non-zero when the deployment fails. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Now errors when run in a Pulumi HCL project. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- The Pulumi AI mode and its --ai flag are retired because the backing service has been shut down; use pulumi neo instead. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- The --language flag associated with Pulumi AI mode is retired because the backing service has been shut down; use pulumi neo instead. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Now exits non-zero when the remote deployment fails. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Unknown or missing subcommands now produce a non-zero exit code. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Failed resource registrations now return faulted outputs instead of unknown outputs. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- The deployment settings configuration file flag was removed. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- SDK helpers that read the deployment settings file were removed. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- The experimental init, pull, configure, and env subcommands were removed, and settings commands no longer write the local deployment settings file. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- The experimental push command and its update/up aliases were removed. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- The deployment settings file was removed; manage settings directly in Pulumi Cloud. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- The Node.js SDK now requires Node.js 22 or later. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Diffs in Output values are no longer ignored. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Converting a Terraform program to the hcl language now produces an error. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Callers must pass an explicit schema loader when binding PCL programs and package schemas. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Schema modules can no longer be nested under the index module; such nesting is now a strict bind error. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- plugin.Host is stateless regarding workspaces; plugin.Context carries workspace state and closing it no longer closes a constructed host. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Logging out now deletes all backend configuration. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Removes the experimental pulumi ai web command. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Adds --stateless; create, patch, and delete require it for existing direct-provider behavior while stateful engine-driven behavior is planned as the future default. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Schema names containing whitespace or control characters are rejected. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Go Configure calls now require Type. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- Go DiffConfig calls now require Type. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- The Go SDK no longer accepts name in plugin loading functions. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- The stack initialization command is renamed from pulumi stack init to pulumi stack new. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- PCL no longer silently ignores ... in function arguments. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- The plugin ls command is renamed to pulumi plugin list. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- The plugin rm command is renamed to pulumi plugin remove. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- Non-interactive destructive commands now require --yes for confirmation. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- Shows a clear error when --all targets a non-paginatable endpoint instead of emitting an empty array. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Deployments now fail when an after hook fails. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Renames the --format flag to --output on pulumi api and its subcommands. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Renames the pulumi cloud api command to pulumi api. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Schema generation now reports errors eagerly for schemas containing unconstructable types. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Generated Go option helpers now omit the With prefix to match existing optXxx package naming. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Changes verbosity checks to require calling Enabled() on the result of logging.V(x). (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Rejects id in state inputs with an error. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- The PCL element builtin now accepts integer parameters rather than number parameters. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- PCL list and tuple indices are now typed as integers rather than numbers. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- The PCL range builtin now accepts integer parameters rather than number parameters. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- mimeType is removed from PCL in program generation. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- readDir is removed from PCL in program generation. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- PCL now types integer literals as integers rather than numbers. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- PCL programs now typecheck component inputs. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Generated Go SDK go.mod files now target Go 1.25 instead of Go 1.20. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Invoke outputs are automatically marked secret when they have a secret input and the invoke provider lacks secret support. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- pulumiVersionRange was renamed to requiredPulumiVersion in PulumiPlugin.yaml. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- PulumiPlugin.yaml now uses requiredPulumiVersion instead of pulumiVersionRange. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- At verbosity level 1 or higher, the logfile location is written to stderr instead of stdout. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- ProviderHandshakeResponse no longer includes pulumi_version_range. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- Python 3.14 now requires grpcio version 1.75.1 or newer. (3.210.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.210.0)
- The import command now returns errors when an import fails. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)

### Security

- Secrets carried on output values are redacted in plaintext logs and shared logs. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Windows CLI and language host binaries are now Authenticode-signed. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Secret property values are redacted in violates-plan errors unless `--show-secrets` is passed. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Adds opt-in encryption for stored credentials using a key protected by the operating system. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Property values in CLI logs now redact secrets. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Rejects archive entries containing path traversal components during extraction. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Logging out now deletes shared temporary agent credentials. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- Encrypted logging can be enabled for logs stored under ~/.pulumi/logs using this feature flag. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- The about command no longer displays the access token in plain text. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Node.js resource hooks now receive secret values as Output objects, preserving their secretness. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)
- Python resource hooks now receive secret values as Output objects, preserving their secretness. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)

### Deprecations

- Non-project mode for DIY backends is beginning its deprecation process. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Labels on package blocks are deprecated. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- The .NET codegen package is deprecated in favor of the pulumi-language-dotnet package and will be removed soon. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)

### New APIs and options

- Generated Node.js, Python, and Go automation APIs now expose about commands. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Generated Node.js, Python, and Go automation APIs now expose config commands. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Generated Node.js, Python, and Go automation APIs now expose convert operations. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- OPA policy packs run through the language plugin, which the CLI downloads on demand. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- pulumi env commands supporting --draft can set the change request description with --reason. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- The PCL interpreter can recover from failed function calls with recover. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Generated Node.js, Python, and Go automation APIs now expose refresh operations. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Go, Node.js, and Python SDKs can check whether a resource ID exists without adopting the resource into the stack. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Invoke can negotiate dependency-carrying OutputValues in arguments and responses when the provider accepts the new handshake capability. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Generated NodeJS, Python, and Go automation APIs now expose install. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Generated NodeJS, Python, and Go automation APIs now expose version. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Generated NodeJS, Python, and Go automation APIs now expose whoami. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Schema descriptions now support #/provider documentation references. (3.266.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.266.0)
- Adds an option to delete the key encrypting stored credentials from the OS credential store. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Adds the range built-in to the PCL interpreter. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- The command can configure git authentication, dependency caching, template sources and drift remediation. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- The command can configure tag triggers, review stack labels and the version control integration. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Python ResourceOptions now support component state migration callbacks. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Go resource options now support component state migration callbacks. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Node.js resource options now support component state migration callbacks. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Provider schemas can specify a configuration documentation URL used during credential warnings in interactive pulumi new. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- pulumi api list now supports filtering endpoints by keyword. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- The engine now supports importing a Stash resource, adopting the given ID and applying the configured program input as an update. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- The Node.js SDK adds helper methods for transforming ResourceOptions into InvokeOptions. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Provider schemas can opt interactive pulumi new into cloud credential validation. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Adds a command to configure cloud OIDC trust and create ESC environments for AWS, Azure, or GCP. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Python adds helper methods for transforming ResourceOptions into InvokeOptions. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Providers can opt into receiving previously persisted outputs during Check on update through a new handshake capability. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Resource registrations can support state migration callbacks. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Python Automation API preview_destroy can request rich diffs. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python Automation API preview_refresh can request rich diffs. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Adds a command that turns stateful snippets into Pulumi program code. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python Automation API refresh can request rich diffs. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python transforms can be mocked. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Sets the default organization used by Pulumi CLI operations. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Supports parallel plugin installation through the new --parallel flag. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Adds a Go policy helper and connects stack analysis so policy packs can validate the full stack. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Python stack method `preview_destroy` now includes the missing `program` argument. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Python stack method `preview_refresh` now includes the missing `program` argument. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Existing stack resources in pulumi do input expressions receive automatic identifiers, which can be listed with show-resources. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Adds a command to show individual resources from state. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- PCL now provides an ID type. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Stateful operations support the --provider argument, allowing provider selection for those operations. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Can also set standard SDK environment variables referencing login outputs; the option also applies to Azure and GCP login commands. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Skips package resolution and uses the supplied URL as the plugin download URL; also applies to related package, schema, and SDK commands. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Allows deleting protected resources without unprotecting them in state first; also available on preview and destroy. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Can register their own provider resources based on provider inputs supplied on the command line. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- OTel traces can be sent over HTTPS. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Policy packs can point to executable binaries as well as script folders. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- The do command can refer to existing resources in state from input expressions. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Package commands accept extension-parameterized packages, which are reinstalled from Pulumi.yaml during pulumi install. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Past update events can be reduced to the summary shape used by live pulumi up --output json, including diagnostics and failed-resource markers. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- State converters can declare explicit providers and attach imported resources to them. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Resources in import files can supply inputs and outputs, allowing direct state import without a provider read when outputs are provided. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Generated Go, NodeJS, and Python programs and the PCL runtime support resource hooks that retry failed operations after successful hook commands. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Allows imported environments to be substituted for one run without editing stack configuration. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Import files can declare named explicit providers in the resources section and reference them by name. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Adds a command for sharing Pulumi logs with Pulumi. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Runs Neo as an Agent Client Protocol agent over stdio, with read-only and plan modes exposed as session options. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Adds session resumption with chat history and retries transient stream and message-send failures. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Adds runtime options to policy pack creation. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Allows imported environments to be substituted for one run without editing stack configuration. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Allows imported environments to be substituted for one run without editing stack configuration. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Migrates a stack between backends and re-encrypts configuration secrets and state for the target secrets provider. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Allows imported environments to be substituted for one run without editing stack configuration. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Adds natively awaited Python program entrypoints that can return stack outputs. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Adds parent information so state converters can express resource hierarchy. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Adds property filters for state converter resource imports. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Do supports stateful resource creation. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Do supports stateful resource deletion. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Adds stateful creation or updating of resources in a stack. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Go Automation API refresh and preview refresh operations support importing pending creates. (3.253.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.253.0)
- The pulumi command gains --version, which prints the version like pulumi version. (3.253.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.253.0)
- Generated automation APIs for NodeJS, Python, and Go now include import support. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Hooks can now be bound to a resource's onError option. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Adds a flag to explain an environment change request to approvers. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- A production runtime option makes installation skip development dependencies for npm, pnpm, and yarn. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Converter mapping requests can specify the ecosystem whose mappings they consume. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Resources under parameterized providers can now be imported from a converter or import file. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Adds a flag to investigate a failed preview. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Adds a flag to investigate a failed update. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Deployment options can target snippets by UUID. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Configuration environment listing supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Plugin listing supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Policy analysis can analyze an exported state file without requiring a stack or backend login. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Policy group listing supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Policy listing supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Project listing supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Stack history supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Stack listing supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Stack tag listing supports selecting an output format. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Preview, up, refresh, and destroy can skip stack configuration validation against the project configuration schema. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Resource providers receive the address of a package resolver service during the provider handshake. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Adds the `--output` flag to the about command. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Adds options to `pulumi stack get` for parity with the bare `pulumi stack` command. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Adds the `--output` flag to the whoami command. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Resource providers receive the address of a schema loader service during the provider handshake. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Supports blocks of PCL kept in state to track ad-hoc resources. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- pulumi neo can run tasks without integration credentials. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- The package schema model supports extension parameterization. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Generated Go and Python functions can use multiArgumentInputs. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Adds `Output.recover` to catch and recover from exceptions in outputs. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- pulumi do can use provider configuration pulled from existing provider state. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Resource providers receive the active login API address and access token through PULUMI_API and PULUMI_ACCESS_TOKEN. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- pulumi config set can preserve newlines from stdin when --raw is used. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Schema markdown descriptions can use language-agnostic cross references to other schema components. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Registered resources can be retrieved from the Node.js mock monitor for test assertions. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Adds a read timeout setting for resource read operations. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Adds a command to list automatic log files. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Adds a command to remove automatic log files. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- PCL input files can access the selected stack's organization and short name when running pulumi do inside a project. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- Coding agents can create claimable temporary accounts when unauthenticated. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- The Go plugin.Provider interface now exposes List through the streaming ResourceProvider.List RPC. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- The pulumi do command now supports resources. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- Adds dedicated command-line flags for each deployment setting. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Adds a command to retrieve details for a specific deployment. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Introduces the initial pulumi do command. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Adds a command to show the full workflow run for one Insights scan. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Adds a command to discover recent Insights scan IDs. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Adds non-interactive single-prompt execution and prints the agent's final response to stdout. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Adds a command to edit organization members. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Adds a command to remove organization members. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Adds a command to export audit logs. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Terminates an in-progress deployment. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Adds JSON output for a structured summary of the destroy operation result. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists Insights accounts in an organization. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Creates a Pulumi Insights account. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Triggers a resource discovery scan for an Insights account. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Fetches log output for a Pulumi Insights scan. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Supports selecting specific versions when using registry-backed templates. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Adds a command to list organization audit logs. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists the members of an organization. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Assigns a custom role to a team. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Updates a custom role's name, description, or permission tree. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists custom roles for an organization. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Creates a custom role from a permission descriptor JSON file. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Deletes a custom role from an organization. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Fetches the resources-under-management summary for an organization. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists recent deliveries for an organization webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Updates an organization webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists all webhooks configured for an organization. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Creates a new organization webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Sends a test ping to an organization webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Deletes an organization webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists compliance results grouped by entity. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Edits policy groups. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Retrieves a policy group. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Creates new policy groups. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Removes policies. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Adds a command to retrieve a policy issue. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Adds a command to list policy issues. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Adds JSON output for a structured summary of the preview operation result. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Adds JSON output for a structured summary of the refresh operation result. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists drift detection runs for a stack. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Shows drift detection status for a stack. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Retrieves engine events for a Pulumi Cloud update. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Updates an existing scheduled deployment action. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Retrieves the configuration of a scheduled action. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists all scheduled actions configured for a stack. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Creates a raw, drift, or TTL deployment schedule for a stack. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Deletes a scheduled deployment action. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Lists recent deliveries for a stack webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Redelivers a webhook event. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Updates an existing stack webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Creates a new stack webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Deletes a stack webhook. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Adds a command to list deployment executions for a stack. (3.239.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.239.0)
- Adds structured JSON output summarizing the import operation. (3.239.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.239.0)
- Adds a command to retrieve detailed information about a stack. (3.239.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.239.0)
- Adds a command to inspect a single stack webhook. (3.239.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.239.0)
- Adds a command to send a test ping to a stack webhook. (3.239.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.239.0)
- Adds a command to look up a single resource discovered by Pulumi Insights. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds a command to search for resources discovered by Pulumi Insights. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds an approval-mode flag and supports switching modes mid-session with Ctrl+A. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds a permission-mode flag and supports switching modes mid-session with Ctrl+R. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds a language flag so the command can run outside a Pulumi project or plugin. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds a command to list all webhooks configured for a stack. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds a command to list registry-backed templates. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds structured JSON output containing a summary of the operation result. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds an option to skip up-front plugin installation. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Python provides register_package to cache package references per deployment. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Adds a command that bootstraps a Pulumi package from a template. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Summary engine events now include a result field. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Bundles the HCL language host so HCL programs can be used with Pulumi. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Adds progress events on stderr for paginated API requests. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Adds pagination that follows continuation cursors and combines items into one JSON envelope. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Adds a command for calling any Pulumi Cloud API endpoint with field, header, input, body, format, and dry-run handling. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Adds a command for viewing decrypted Pulumi logs. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- PCL can read resources by ID and query without registering them. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Adds a command to inspect parameters, request bodies, and response schemas for Pulumi Cloud API operations in text, markdown, or JSON. (3.234.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.234.0)
- Adds a command to browse every endpoint in the Pulumi Cloud OpenAPI specification with table or JSON output. (3.234.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.234.0)
- pulumi neo gains a local literal multi-file replacement tool with file_pattern filtering and dry_run preview support. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- pulumi neo gains a local regex-search tool with optional include filtering, while skipping binary files, hidden directories, and node_modules. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- The provider protocol and schema now support List for provider integrations. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- The experimental pulumi neo agent gains a local pulumi_preview operation tool with streamed resource changes, diagnostics, and operation summaries. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- The experimental pulumi neo agent gains a local pulumi_up operation tool with streamed resource changes, diagnostics, and operation summaries. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- The auto-generated Pulumi CLI interface is exposed through workspace.cli_api for Python automation users. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Adds an experimental command that creates a Pulumi Neo agent task and runs the local tool loop. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Adds terminal approval handling for sensitive agent actions and forwards responses to the Pulumi Console. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Adds an interactive terminal UI that renders agent messages, tool calls, and streaming output alongside the Pulumi Console session. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Adds a Shift+Tab plan-mode toggle that prevents file writes, pulumi up, and PR creation until a plan is approved. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Automation API destroy now supports --diff. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Local policy packs now support ESC environments. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Python adds decorator variants for resource and error hooks. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Adds deployment information retrieval to the resource monitor service. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Import files may now define providers alongside the resources that use them. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Adds the New command to the Automation API. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Adds the new command to the Python Automation API. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- PCL now supports resource hooks. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Inline programs now support --run-program with preview_refresh and destroy in the Node.js and Python Automation APIs. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Python and Node.js providers gain a Cancel handler for cancellation handling. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Policy packs can resolve ESC environments. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- The Node.js Automation API adds the new command to its auto-generated interface. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- The Node.js Automation API adds the org search command. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- The Node.js Automation API adds the org search ai command. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- PCL now supports parameterized providers. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Adds a command to run a policy pack against existing state. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- The Node.js Automation API adds the org get-default command. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- The Node.js Automation API adds the org set-default command. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Adds --urns to display full resource URNs instead of short names in several CLI operations. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Adds a bidirectional streaming RPC to the LanguageRuntime protobuf. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- CLI invocations can use TRACEPARENT to parent Pulumi spans under an existing span. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- The auto-generated Node.js interface exposes a low-level cancel command. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Performance tests can use a configured GRPC endpoint. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Pulumi reads resource attributes from the OTEL_RESOURCE_ATTRIBUTES environment variable. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- The OTLP exporter supports grpcs endpoints and header authentication. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- The command accepts multiple resource URNs and deletes them in dependency-safe order. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Policy packs can now run with bun. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Runs continue after errors when this option is enabled. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Bun is supported as a runtime for Pulumi programs. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Bun is supported as a plugin runtime. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Adds a CLI flag for writing OpenTelemetry traces to a file or directly to a gRPC interface. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- PCL supports resource ranges. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Preview or up failures can automatically open a Neo task. (3.225.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0)
- Implements GetProgramDependencies for Bun and pnpm projects. (3.225.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0)
- PCL can express that configuration values should be read as secrets. (3.225.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0)
- DIY backend state files now support zstd compression. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- Component schema inference now supports the Partial<T> utility type. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Node.js and Python SDKs use new policy plugin support to run policy packs. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Component schema inference now supports the Required<T> utility type. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- RunPluginRequest now includes loader_target. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Provider resources can remap environment variables before passing them to the provider. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- Python supports the OnError resource hook. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Adds a command for installing policy packs. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Pulumi.yaml can specify the required Pulumi CLI version. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- The .NET program generator now emits RequirePulumiVersion. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- The Node.js SDK now supports the OnError resource hook. (3.218.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.218.0)
- The Go SDK now supports the OnError resource hook. (3.217.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.1)
- Implements About in the Python automation API server. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Adds CheckPulumiVersion to the Go SDK. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Adds a resource hook for implementing custom retry policies. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Adds the --plan flag to pulumi up. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Adds require_pulumi_version to the Python SDK. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Adds requirePulumiVersion to the Node.js SDK. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- The Node.js SDK now supports serializing async generators. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- The engine now exposes a CheckPulumiVersion RPC. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- Plugins can specify which CLI version range they support. (3.215.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.215.0)
- Adds an sdkgen flag that prevents functions from emitting their plain variants, allowing generated SDK output to be restricted. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Adds the --config option to destroy so developers can select configuration values during resource destruction. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Adds the --config-path option to destroy so developers can specify the configuration file used during destruction. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Adds the --config option to refresh so developers can select configuration values during resource refresh. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Adds the --config-path option to refresh so developers can specify the configuration file used during refresh. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Adds replacement_trigger support to the Python SDK so Python programs can configure replacement-trigger behavior. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Python component providers can now have their version set. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- The Node.js SDK now supports replacement triggers for resource replacement behavior. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- DIY backends support stack tags, including CRUD operations, system tags, filtering, and compatibility with existing stacks. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- A command was added to delete package versions from the Pulumi Registry. (3.210.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.210.0)
- Pulumi Cloud login supports native OIDC token exchange. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- The protobuf RPC surface now includes Language.Template. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- CLI command flags can now be set through corresponding environment variables, including PULUMI_OPTION_REFRESH for --refresh. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Resources can use replacement_trigger so changing its value between program runs triggers resource replacement, with Go SDK support. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- A builtin resource can now save a value to state. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Adds a resource option allowing one resource's replacement operations to trigger replacement of another resource. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- Invokes receive a preview flag so they can determine whether they are being called during a preview. (3.206.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.206.0)
- This environment variable skips sending component inputs to the engine for diffing and state storage. (3.206.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.206.0)
- An environment variable can add --refresh to preview, update, and destroy operations. (3.206.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.206.0)
- Policy violation severity can now be overridden. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)

### Performance

- All commands now start slightly faster. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Pulumi Cloud startup performance has improved. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Provider mapping results are cached on disk so repeated plans avoid booting a provider to fetch unchanged mappings. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated code deduplicates identical apply arguments, avoiding unnecessary Promise.all, pulumi.all, and Output.All calls. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Caches type metadata and class references to reduce serialization CPU overhead. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Avoids unnecessary S3 bucket HEAD calls, improving DIY backend performance. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- contains_unknowns is faster for large objects. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- Plugin downloads use fewer GitHub API requests. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Analyzer calls now run in parallel. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Required policy packs install in parallel with plugins. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- StackReference performance was optimized. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- Startup performance improves when using the service as a backend. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- Improves the performance of StackReference secrets handling. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)

### Behavior and default changes

- IDInput now satisfies StringInput, allowing it to be used where StringInput is expected. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- The Java language runtime is downloaded on demand instead of bundled with the CLI. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- lookup accepts defaults of any type and types its result as the unification of the element type and default. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- SDKs receive per-value return dependencies from Call operations. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Agent mode now logs in through the browser instead of creating a new agent account. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- npm is marked as the recommended package manager when pulumi new prompts for one. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Tuple literals containing outputs are accepted where functions or properties expect input tuples. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- URNInput now satisfies StringInput, allowing it to be used where StringInput is expected. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Plugins can now be downloaded from Git repositories whose version tags omit the v prefix. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Pulumi Cloud API calls now include the W3C traceparent header when OpenTelemetry tracing is enabled. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Cross-process install waits can now be cancelled with Ctrl-C. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Quoted strings without interpolation are typed as constants for bind-time string constant and enum validation. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Resources can be assigned to plain properties typed as references to their resource type. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Boolean schemas serialize as equivalent object forms so schema-carrying payloads are valid OpenAPI model instances. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- The default plugin version is set when the schema specifies a Go language option. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Interactive login no longer prompts to create a first project. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Skipped reads now return last-known outputs when the resource is already present in state. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- A stack configured against a repository URL can be moved onto a version control integration. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Output no longer includes padding for labels that are not printed. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- The redundant preview step is skipped when pulumi neo runs the pulumi_up tool. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- The credentials preflight now runs for parameterized providers. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Planned and applied state migrations are now reported through user-facing diagnostics. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Python plugin discovery now includes dependencies from the current uv workspace member. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Forwards caller error hooks to remote component providers. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- Prompts for ESC project and environment names, asks how to authenticate before access level, and reports successful completion. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- Automation API project settings can now use any language runtime. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Component state migrations can split managed state using compatible existing resource identities. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Outputs and prompt values can now be marshalled into fields typed as input interfaces such as pulumi.StringInput. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Stack references use the Pulumi Cloud stack outputs endpoint when advertised instead of exporting the whole deployment. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- State migrations now run for aliased remote components. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Generated output types can be used where classes-and-dicts inputs accept an Args class or TypedDict. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Update plan generation and checking now ignore property keys beginning with an underscore. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Command suggestions treat adjacent character swaps as a single typo. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Python accesses hyphenated schema properties through Python attribute names instead of subscripting. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- The id attribute of a read resource accepts output-typed values. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Resource, object type, and function names in tokens may contain hyphens. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python programs support final argument expansion for min and max. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Renders every source kind and shows environment variable values. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Python and Node.js function inputs apply schema defaults. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Stack information output includes secret provider information. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Cancelling a task interrupts a running local tool call instead of waiting for it to finish. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- The Node.js Automation API no longer limits captured output buffer size. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Importing local components now generates a component resource definition. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Interactive pulumi new shows one confirmation for project, stack, and config defaults instead of prompting separately. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Creating a stack against the Pulumi Cloud backend now announces that the stack was created. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Interactive `pulumi new` now asks for a cloud provider and language instead of listing every template. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- The CLI offers to create a first project after logging in to an account with no stacks. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Go program generation now emits for expressions as Go loops. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- When invoked outside a Pulumi project, pulumi do falls back to an auto-created project and stack under PULUMI_HOME. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Diff display shows secrets when --show-secrets is passed. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- The summary output now reports program errors from the language host. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Diff display now shows the value being added when refresh or a provider diff reports an added property. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- No longer writes a new environment revision when the resulting definition is unchanged. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Invokes depending on pending resources are deferred or resolve as unknown during previews, and their results carry inferred resource dependencies. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Import files now generate explicit providers in their resources. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Resolves and installs packages required by the program during project creation, as pulumi install does. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Remote operations no longer require a Pulumi.yaml file to be present. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Third-party S3-compatible backends with custom endpoints default checksum calculation to when_required, fixing 403 write errors. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- State converters can supply resource inputs and outputs in ConvertState responses. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Project files are written to disk and their paths are exposed as environment variables for every output format. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Strings containing non-UTF8 bytes can flow between providers, the engine, state, and opted-in languages. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Provider servers can run Construct and Call methods concurrently. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- A component block's providers option now applies to the resources and invokes it declares. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Neo diagnostics now suggest debug-update or debug-preview commands for investigating failed operations. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- When uv is used, UV_PROJECT_ENVIRONMENT can override the virtualenv path. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Do now accepts expressions for boolean inputs. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Do now accepts expressions for number inputs. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- list, remove and move are canonical env subcommands; ls, rm, delete and mv remain aliases. (3.253.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.253.0)
- The command now reports the TypeScript version for Node.js projects. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Using Pulumi ESC with a DIY backend now suggests logging into Pulumi Cloud in the error message. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Commands that list logs now show the command name, and current-command logs are excluded. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Missing resource URNs now produce suggestions for close matches and instructions for listing stack URNs. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Reading non-secret stack outputs no longer requires the passphrase for passphrase-encrypted stacks. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Diff output now marks resources configured to be retained on deletion. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Resources under extension-parameterized providers can now be imported. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Environment definition updates now report the new revision number. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Automatic logging is now enabled for every command by default. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Policy violation output now uses display resource type names. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- pulumi login warns when the provided login differs from PULUMI_BACKEND_URL. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Generated Python and NodeJS programs represent map `range` resource collections as key-indexed maps. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Resource providers receive the mapper service address during the provider handshake. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- The CLI refreshes expired access tokens on 401 and retries once when credentials.json contains an OAuth refresh token. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Plugin tarballs containing symlinks are now accepted. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Replies such as ok, approve, and go ahead are accepted as approvals at pulumi neo prompts. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- JSON output now includes affected resources and their URN, type, name, operation, and parent. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Provider object outputs may now use string enumerations. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Ctrl+Z suspends a running session and restores its transcript when resumed with fg. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Projects without a runtime are supported across CLI operations and Automation API project settings. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Provider plugins are resolved through the Pulumi Registry when converting from a third-party source. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- The HCL language runtime is downloaded on demand instead of being bundled. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- The command now suggests similar tokens when an unknown token is provided. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- Prompt history can now be scrolled with the up and down arrow keys. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- All provider errors are now forwarded to error hooks, enabling retry behavior. (3.244.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.244.0)
- Installation now distinguishes multiple packages that use the same plugin. (3.244.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.244.0)
- When using uv without a project section, requirements.txt is merged into pyproject.toml. (3.244.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.244.0)
- When both are available, pulumi api now prefers text/markdown over JSON. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- Preview and update diagnostics now suggest pulumi neo. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- Esc clears non-empty input; with an empty box, it still cancels the agent's current turn. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- With -y and no template, the command writes a minimal project file. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- Neo is visible by default because the experimental gate was removed. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Supports multiline input through several key combinations and a trailing backslash. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- integration.ProgramTest now recognizes the hcl runtime. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- integration.ProgramTest now recognizes the pcl runtime. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- GET and HEAD requests automatically receive lang and os query parameters when declared by the matched OpenAPI operation. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Pulumi Cloud API requests now identify the running command and detected AI agent when present. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Automatically installs the HCL converter when converting from HCL. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- The engine caches schemas in PULUMI_HOME/schemas, including schemas for parameterised packages. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Node.js program generation now awaits plain call results and uses an async export wrapper when required by the runtime Promise type. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Adds local execution of the edit filesystem tool with exact replacement validation and empty-file creation support. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Gates the experimental pulumi neo functionality behind an environment variable. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Keeps the thinking spinner active until final events and lets users press Esc to request cancellation. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Node.js and Python component provider hosts warn when components contains a non-ComponentResource class. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- The Python runtime now supports unwrapping Input[Optional[T]] types. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Automatically detects Mercurial repository metadata for updates, matching existing Git support. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Resource options are now passed to hooks through the engine. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Destroy and import preview-only operations no longer retain a state lock for the DIY backend. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- PCL permits key indexing into a map of resources created by range. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Wires the Cancel RPC to language host Run across supported SDKs. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Adds update metadata to the OpenTelemetry root span. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- PCL applies default values defined by resource schemas. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Uses nodenext for the module setting in the Node.js SDK configuration. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Uses nodenext for module resolution in the Node.js SDK configuration. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Additional OpenTelemetry interceptors are added for GRPC clients. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Provider OpenTracing spans are bridged into OpenTelemetry traces. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- The tracing option now accepts relative file paths. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Pulumi package publishing now supports Azure DevOps git URLs. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- The CLI now uses distinct exit codes for different error types. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- The CLI now automatically installs missing policy analyzer plugins. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Python toolchain selection now detects lock files. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Generated Go program go.mod files now target Go 1.25 instead of Go 1.23. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Python program dependency detection reads Poetry and uv lockfiles. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- pulumi about now displays Bun information. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Refreshing a stack's config now includes environments used by that configuration. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- The engine uses provider references from __self__ arguments to calls. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Resource registrations now inherit the provider option automatically. (3.225.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0)
- Journaling is enabled by default and can be disabled with PULUMI_DISABLE_JOURNALING. (3.225.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0)
- The engine now reports policy pack installation errors, making installation failures visible to developers. (3.223.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.223.0)
- Component schema inference now supports enums. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Plugin URLs can now contain underscores in their paths. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Package name resolution now uses the Pulumi Cloud Registry by default. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- The Python SDK relaxes its pip version constraint. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Components can use private packages as local dependencies. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- The Python SDK supports protobuf 6. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Login extracts organization, team, and user from OIDC JWT claims. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Node.js and Python dynamic providers can return inputs from read(), enabling accurate diffs after refresh. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- Login defaults to Pulumi Cloud when an OIDC token is used. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- Pulumi no longer sets PULUMI_ROOT when using mise. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- Boolean configuration values accept different spellings instead of only lowercase true. (3.215.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.215.0)
- Multiple components from the same repository can now be referenced. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- The command now prints Node.js package manager information. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- Update metadata now includes language runtime metadata. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- The command now always prints the schema before any binding errors. (3.210.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.210.0)
- The command now prints Python toolchain information. (3.210.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.210.0)
- The Python SDK allows older grpcio dependencies. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- The Python SDK adds runtime validation checks for PropertyValue. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- The Python SDK allows older protobuf dependencies. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- The --generate-only workflow now creates pyproject.toml for uv and poetry projects. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- pulumi new --generate-only creates pyproject.toml for uv and poetry projects. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- Resources marked as Delete can now be targeted and are included in dependency calculation. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- pulumi install now recursively installs dependencies in local packages. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Python SDK generation now accepts all PEP440 version specifiers. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- Automation APIs retrieve the event log over gRPC instead of reading it from a text file. (3.206.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.206.0)
- The command now includes PULUMI_* environment variables in its output. (3.206.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.206.0)
- Resource state now supports floating-point NaN and Inf values. (3.206.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.206.0)
- The CLI prints replace diffs when replacement is blocked because a resource still has an import ID. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)

### Tooling

- pulumi_preview and pulumi_up tool results now report the console URL and update identifiers. (3.266.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.266.0)
- Messages and help text now reference pulumi env instead of the retired standalone esc CLI. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Generated Python SDKs now use packaging instead of parver. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Generated Python output types are now precise for discriminated unions instead of using broad Any-based types. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Generated Python adds type annotations for config variable defaults supplied by invokes. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- The Go SDK supports Go 1.27. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Node.js transforms can be mocked. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Go transforms can be mocked. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Python type definitions represent constant properties with Literal[value] instead of their primitive type. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Generated Go code uses known map types instead of map[string]interface{} for better typing. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- SDKs and programs can now be generated for extension-parameterized packages. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- OpenTelemetry spans now identify slow snapshot fetches, deserialization, or secret decryption during StackReference reads. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- list and remove are the canonical command names; ls and rm remain aliases. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- The CLI now shows download and unpack progress while installing provider plugins. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- The package name input is reserved for internal use by sdkgen. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- The package name pulumi is reserved for internal use by sdkgen. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- pulumi new is now an alias for pulumi project new. (3.243.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.243.0)
- Adds a pulumi package for npx support. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Shows tool call arguments and results through a ctrl+o overlay. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Help now recommends pulumi cloud api describe for verifying operation parameters before calling. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- When invoked by an AI coding agent, prints pulumi api pointers after the command completes. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- When invoked by an AI coding agent, prints pulumi api pointers after the command completes. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Generated Node.js and Python optional input types now accept undefined or None values. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Node.js codegen now emits unqualified Provider references for a package's own provider resource inside that package. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Generates command methods for the Go Automation API. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Node.js projects using pnpm can now use package.yaml. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- The CLI detects AI agents and includes that information in update metadata. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Generated TypeScript configuration is modernized to align with TypeScript defaults. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Allows TypeScript 6 as a Node.js SDK peer dependency. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Plugin installation emits spans, and dependency installation exposes more attributes. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- The CLI root span includes CLI metadata. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Debugger support is available for the Bun runtime. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- pulumi schema check now supports source-based packages in addition to schema files. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- Go program generation now generates Call requests. (3.222.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.222.0)
- Go 1.26 is supported. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- SDK generation now supports type references to parameterized and third-party packages. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- The CLI now shows environment variables that were set when a snapshot integrity error occurs. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- Codegen creates namespace aliases to avoid Pulumi namespace collisions. (3.214.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.1)
- Go SDK generation now supports three-level nested builtin output types. (3.213.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.213.0)
- Language runtimes for .NET, Java, and YAML are bumped. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- The Java toolchain was updated to v1.18. (3.210.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.210.0)
- Generated SDKs now include a .gitattributes file. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- Generated SDKs now include a .gitignore file. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- The CLI now logs gRPC requests before invoking them, improving visibility when debugging CLI operations. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- The CLI improves how policy violation severity is displayed. (3.205.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.205.0)
- The command now shows functions exposed by a package. (3.203.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.203.0)
- CLI output now displays the severity associated with policy violations. (3.203.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.203.0)

### Fixes and other changes

- Agent previews honor optional refresh settings without persisting refreshed state. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- The PCL entries built-in no longer panics on empty maps or maps whose values have different shapes. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Missing lookup defaults are now reported at bind time instead of when the program runs. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Output.recover now catches faults arriving through apply or after the program body returns. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- The command now correctly adds and removes stacks, Policy Packs, and Insights accounts. (3.269.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.269.0)
- Elided asset contents are restored from prior state when providers echo assets during refresh or update. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Plugin checksum verification no longer rejects valid HTTP/1.1 downloads or ignores trailing archive data. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Project settings now work correctly for projects located in symlinked directories. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- The pulumi new credentials check no longer has a timeout or produces spurious premature provider exit errors. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Dynamic providers fall back to Read inputs when properties is empty, keeping Get working after engine state changes. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Equivalent recursive object types and object maps now resolve consistently to the same finite type without stack overflow. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Ancestor component resource transforms now apply to resources parented under a resource read. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- Snapshot integrity errors are fixed when untargeted steps change dependencies in the program. (3.268.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.268.0)
- pulumi install now works for Python plugins and policy packs using uv with a [build-system] table. (3.267.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.267.0)
- Concurrent pulumi new runs no longer fail when cloning the templates repository. (3.267.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.267.0)
- The credentials warning no longer prints the provider documentation link twice. (3.266.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.266.0)
- Union members are ordered structurally rather than by printed form, making recursive object output complete and diagnostics consistent. (3.266.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.266.0)
- Encrypted credentials in other PULUMI_HOME directories remain readable after logout or login in one directory. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- The PCL length built-in now accepts objects and maps. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Generated programs now handle length on output values and count keys of maps and objects in Node.js. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- min and max are typed as numbers when any argument is a non-integer literal. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- The CLI recovers from partial installs and waits for parallel installs. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Go policy analyzer configuration schemas are now serialized correctly. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Generated Python for output-dependent resource ranges is now valid. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Generated Node.js programs now fill the lists produced by range. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Skipped reads now report Unknown=true after dependency failure during --continue-on-error updates. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Skipped imports now report Unknown=true after dependency failure during --continue-on-error updates. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Generated Node.js SDKs now compile when resource inputs reference themselves. (3.265.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0)
- Informational messages no longer trigger the Neo diagnostic help prompt. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- An OnError retry updates the partially created resource instead of creating another resource. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Resources marked PendingReplacement are no longer incorrectly targeted for deletion. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- The command no longer leaks package processes. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- PCL read blocks now propagate the dependsOn resource option. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Go ReadResource calls now propagate the dependsOn resource option. (3.264.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.264.0)
- Prevents a panic when pnpm config get allowBuilds prints null. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- Stops overwriting stack sources for stacks using providers other than GitHub. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- Reports an unconfigured stack instead of failing. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- Protects retained resources from deletion during a subsequent update before generated code is added. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- Applies remote component provider state migrations when the caller also supplies migrations. (3.263.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.263.0)
- An agent account claim marked unavailable is re-validated instead of trusting the stale marker indefinitely. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Automation API error predicates now match wrapped errors and unwrap the underlying cause. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- disableSSL no longer overrides explicitly specified protocols. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Errors now report the source position of user code calling a generated resource getter instead of the getter body. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- The exclude-dependents option is now propagated through resources read with `.get()`. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- The target-dependents option is now propagated through resources read with `.get()`. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Packages required by a local plugin directory are installed before the plugin is installed and run. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Provider configuration runs during provider creation, associating configuration errors with the provider resource. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- A resource provider attached through PULUMI_DEBUG_PROVIDERS is treated as installed, preventing an unnecessary download. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- pulumi install now works for projects requiring a provider attached through PULUMI_DEBUG_PROVIDERS. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Relative plugin and package paths are resolved against the project directory when starting from a project subdirectory. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Resources are sorted deterministically when repairing a snapshot. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- State migration ordering is corrected for components interleaved with other resources. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Successor references are normalized between chained component state migration callbacks. (3.262.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0)
- Ephemeral agent credentials now show the agent account's claim URL instead of an inaccessible View Live link. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Stacks containing a custom resource with no ID now produce a clear error instead of panicking. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Binding a schema property with an integer constant value no longer crashes. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Policy operations no longer hang when a policy pack fails to start up. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Serialization of secret unknowns is corrected in NodeJS, Python, and PCL. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Union values are resolved by wire shape so members without constant properties serialize and translate with the correct property names. (3.261.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.261.0)
- Generated Python remains valid when a component with inputs instantiates another component. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Resources whose deletedWith target is replaced are replaced too, instead of being left orphaned in state. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python discriminated unions are resolved correctly by their tag. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- DIY backend stacks remain readable when checkpoint compression transitions fail. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Go SDK ESC imports use resolved environment names when evaluated. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Node.js declarations quote illegal property identifiers and use bracket access, including for kebab-case names. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Go uses valid struct field names for schema properties whose names contain hyphens. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Imported resources are not replaced when an input becomes secret or output-wrapped without changing its inner value. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Cancelling a local tool call no longer leaves the TUI stuck on Thinking with input blocked. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Cancelling a Neo task immediately stops its local tool and reports the task as cancelled. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- pulumi install preserves a package's pluginDownloadURL in regenerated SDKs. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python provider stack traces are improved. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python programs preserve all providers passed to remote components. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Python TypedDicts mark required component inputs as required. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Generated Resource.get resolves output-only properties as unknown during preview when the id is unknown. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Python runtime context is propagated across thread boundaries. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Selecting a stack by name outside a Pulumi project directory now produces a clearer error. (3.260.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.260.0)
- Approval replies are no longer silently dropped when the outbound event queue is full. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Serialization always emits the required value and environment keys defined by the ESC OpenAPI contract. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Serialization always emits the required value and environment keys defined by the ESC OpenAPI contract. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- The engine no longer returns extension package references for non-parameterised packages sharing the same base. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Generated Go program code is deterministic for objects mixing null and typed properties. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Generated Python code now uses the correct casing for local component outputs. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Mode changes are no longer silently dropped when the outbound event queue is full. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Uses the configured default organization when listing policy groups. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Snippets are retained when deletion fails so the delete operation can be retried. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Login failures explain which state backend failed, where it was configured, and how to change it. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Cancellation requests rejected by the service are retried, keeping Esc responsive instead of leaving the CLI stuck on cancelling. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Reports every schema validation error when package schema binding fails. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Progress bars now render correctly for parallel plugin installations. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- DIY backend errors report the configured URL, resolved URL when normalization changed it, and identify local paths as state directories. (3.259.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.259.0)
- Generated Go package clauses are now valid when schema module names contain hyphens. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Fixes global project lookup for `pulumi do`. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Template and repository cloning now works in paths containing symlinks with absolute targets. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- `pulumi preview --import-file` no longer emits unknown values. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- The Python SDK now uses the resource monitor's advertised feature set consistently. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Node.js schema modules with hyphens now export under valid sanitized identifiers, including type namespaces. (3.258.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.258.0)
- Commands now exit promptly when cancelled during a retried HTTP request. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Panics in hooks no longer crash the entire process. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- The patch command works in stateful mode and overlays supplied inputs onto the existing snippet. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- The --server value is preserved when adding a package to the packages section of Pulumi.yaml. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Plugin last-used times are tracked accurately on all platforms. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Go program generation renames properties colliding with reserved names, preventing uncompilable output. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Generated Go input types now include deeply nested collections of object types. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- The SDK provides an improved error message when resource registrations remain pending as pulumi exits. (3.257.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.257.0)
- Current stack selection is scoped to the active backend, preventing stale stack errors after switching backends. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- No longer leaks --stack into converter arguments and works when GenerateCode(false) is set. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- The insecure login setting is now reflected in stack service secrets manager state, fixing TLS verification failures with self-signed self-hosted backends. (3.256.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.256.0)
- Invokes written inside a component are parented to that component so they resolve its providers. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- An invoke resolves its provider from the providers option of its parent named in the request. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Parallel pulumi install processes sharing PULUMI_HOME no longer intermittently fail with a missing provider executable error. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Import file generation works correctly when parent resources share names. (3.255.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.255.0)
- Fixes generated Go code for plain properties nested inside non-plain objects. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Generated Go programs now compile when discriminated union members are used as array or list elements. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Ctrl+C clears typed text while Ctrl+A and Ctrl+E line navigation are preserved. (3.254.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.254.0)
- Ignore-pattern matching on macOS precomposes filenames to NFC, so composed patterns match decomposed filenames like Git. (3.253.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.253.0)
- Provider resources declared inside PCL components are now generated correctly for Node.js, Python and Go. (3.253.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.253.0)
- Without -v, only warnings and errors are written to stderr again. (3.253.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.253.0)
- Strings containing non-UTF8 bytes are rendered as base64 in diffs and JSON output. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- Resources whose import identifier differs from the canonical ID are no longer deleted on a subsequent update. (3.252.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.252.0)
- PCL invokes functions declared with multi-argument inputs using positional arguments. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Function serialization no longer includes the package version in module paths when using pnpm. (3.251.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.251.0)
- Fixes recursive property log marshaling in the CLI engine. (3.250.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.250.0)
- The deletedWith resource option now works correctly in Python component resource providers. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Nested FileArchive entries in AssetArchive no longer use backslashes on Windows. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Operations no longer fail solely because logging fails. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Generated Node.js numeric range loops use per-iteration bindings so deferred applies observe the correct index. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Removing the last tag now works on self-managed (DIY) backends. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- The replaceWith resource option now works correctly in Python component resource providers. (3.249.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.249.0)
- Generated Python and NodeJS programs guard references to boolean `range` resources so the generated code type-checks. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Prevents a panic when binding a schema that references an uninstalled plugin. (3.248.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.248.0)
- Local Node.js SDKs can run their postinstall script under npm 12. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- pulumi logout now clears the current tokenless backend in coding agent environments. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- pulumi package add no longer fails with pnpm for generated SDKs using scoped package names. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- The CLI respects PULUMI_SKIP_CONFIRMATIONS for every confirmation prompt. (3.247.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.247.0)
- Local SDKs added with pulumi package add are built correctly with pnpm 10.34.2 or newer. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Applying a resource transformation no longer drops the resource parent from RegisterResource. (3.246.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.246.0)
- Node.js SDK mergeOptions no longer drops onError hooks from ResourceOptions. (3.245.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.245.0)
- Top-level flags such as --logtostderr are now recognized when using pulumi do. (3.244.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.244.0)
- Fixes a snapshot integrity issue when running up with --refresh. (3.244.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.244.0)
- Closes gzip.Writer so archiveTarGZIP produces valid tar.gz output. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Fixes ArgsDict usage in Python typed dictionaries. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Makes --all follow the server's pagination cursor through the end of the log. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Renders --job/--step mode as structured lines instead of an empty raw-string blob. (3.242.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.242.0)
- Editing deployment settings no longer clears settings that were not requested for change. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.262.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Preserves map entries whose values match enum members in union input element types. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Generates PCL for asset and archive inputs when importing resources instead of returning a NYI error. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Preserves asset, archive, and resource-reference values in maps and arrays and escapes template sequences in map keys. (3.241.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.241.0)
- Batch encryption and decryption errors are no longer silently dropped. (3.239.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.239.0)
- Schema names are validated against module paths to prevent conflicts. (3.239.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.239.0)
- Map values with union element types made of Input-wrapped types are no longer dropped during HCL2 import. (3.238.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.238.0)
- Imported resource state generation now preserves provider-defined keys prefixed with double underscores. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Code generation no longer reports false circular references for several resource option entries sharing top-level node names. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Every assistant message now remains visible in TUI scrollback across tool calls. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Neo TUI conversation blocks now have blank-line gaps for clearer separation. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Cancelling a Neo session no longer causes a panic. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Tool results now return the bare stack name and canonical project name instead of raw input values. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- PCL binding no longer panics when a conditional mixes a Promise-typed branch with a try branch. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Component resource argument types now support NotRequired, Required, and total=False TypedDict declarations. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Neo clarifying questions are rendered as questions rather than approval prompts. (3.237.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.237.0)
- Node.js and Python program generation now emits the correct length check for string length. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- The Neo shell tool now honors agent-supplied timeouts and terminates the whole process tree when deadlines fire. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Neo now surfaces task-creation errors and exits instead of leaving the TUI stuck. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Pressing Ctrl+C twice now exits Neo cleanly instead of requiring a third press. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Go code generation now correctly generates slices of pulumi.Asset and pulumi.Archive. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Python RPC deserialization now preserves double-underscore-prefixed keys such as type discriminators. (3.235.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.235.0)
- Reverts parsing changes that caused errors for property paths that were previously valid. (3.234.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.234.0)
- Installed plugins claiming the same default provider package name now produce a clear error instead of a panic. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- PCL no longer wraps plain method call returns in Output<T>, preventing broken generated apply traversals. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Go codegen now emits unqualified Provider references for a package's own provider resource so generated identifiers compile. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Node.js codegen now imports the Provider class name instead of using the title-cased package name. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Python codegen avoids self-imports when referencing a package's own provider resource, preventing circular imports at runtime. (3.233.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.233.0)
- Uses the default organization name instead of the username when listing policies. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Fixes a race condition during parallel delete-before-replace operations. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Signals providers to cancel before closing them during replacement. (3.232.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.232.0)
- Generated Node.js and Python programs now correctly import camelCase modules. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Generated Go, Node.js, and Python programs now handle some name conflicts correctly. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Generated Node.js programs now include necessary casts between types. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Fixes snapshot integrity errors involving component and provider resources during refresh with --run-program. (3.231.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.231.0)
- Node.js component schemas now include inherited input properties from extended args interfaces. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Python component schemas now include inherited input properties from base classes. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Go predeclared identifiers are added to reserved words during generation. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- The Go Automation API places --non-interactive before -- so it is not misinterpreted as a positional argument. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Go union type code generation now handles optional list types. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- state upgrade checks for Pulumi.yaml projects and the backend option. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Go program generation now handles ternary expressions inside apply callbacks. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- unmarshalOutput now handles known outputs with null elements. (3.230.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.230.0)
- Closure serialization now works for cached modules wrapped with __importStar. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.265.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Fixes a deadlock when cancelling an operation. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Fixes OpenTelemetry flushing when providers shut down. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Fixes variable lookup in parent scopes. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- DIY backend refresh --preview-only no longer leaves a state lock. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Fixes --include and --exclude for program-based refresh. (3.229.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.229.0)
- Detailed diffs no longer visually nest changed resources under unrelated visible resources when unchanged parents are hidden. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Tracing spans for GRPC streams now end correctly. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Import code generation correctly creates references to non-standard names. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Generated Node.js and Python code correctly converts literals when calling local components. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- The CLI no longer applies the secrets filter to boolean values true and false, regardless of case. (3.228.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.228.0)
- Bun execution now checks for an SDK version compatible with bun. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Node.js program generation now correctly generates for expressions. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Python program generation now correctly generates list and dictionary comprehensions. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Refresh no longer encounters a snapshot integrity error when parents change. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- The engine now fills in Name and Type for ResourceReference values sent over the wire protocol. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- The error message shown during SAML SSO reauthorization has been improved. (3.227.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.227.0)
- Known output values are serialized correctly in snapshots instead of always being recorded as computed. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Package URLs containing .git are parsed correctly. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- pulumi destroy now displays the parent resource hierarchy. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- package get-schema works correctly for binary providers at relative paths. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Installed packages' pulumi-plugin.json files are located using importlib. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- State moves avoid integrity errors when copied providers depend on resources left in the source stack. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- ReplacementTrigger no longer fires incorrectly because of dependency changes. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Snapshot integrity issues are automatically repaired, with an error event sent to the backend for diagnosis. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Automation StepEventMetadata JSON parsing handles null detailedDiff values. (3.226.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.226.0)
- Default provider inheritance now works across resources from different packages. (3.225.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.1)
- Go code generation no longer panics when schemas contain digit-prefixed properties. (3.225.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.1)
- Python code generation now correctly generates entries calls. (3.225.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.1)
- Go code generation now lifts plain values to input/output values when required. (3.225.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.1)
- Python code generation now correctly generates lookup calls. (3.225.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.1)
- Fixes a panic when importing a service stack into a DIY backend. (3.225.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0)
- The Python Automation API no longer crashes in forked processes. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- Integer component inputs are converted to int. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- Fixes a panic when a new component resource in the program is not targeted. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.225.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- from_json now reads resourceUrn correctly instead of the snake_case name, preventing the field from being None. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- The StackReference schema is corrected. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- Generated files now implement singleOrNone semantics correctly. (3.224.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.224.0)
- Loading policy packs using policy SDK v1.18.1 or older no longer hangs. (3.222.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.222.0)
- Go program generation now handles import paths for nested modules correctly. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- The command no longer panics for non-absolute paths when PulumiPlugin.yaml has a packages section. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- A Pulumi project is now linked only once. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Refresh with --run-program no longer produces snapshot integrity errors with component resources. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- A race condition in refresh with --run-program was fixed. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Errors from uv, poetry, or pip during dependency installation are always surfaced. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Errors from uv, poetry, or pip during linking are now surfaced. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Stack graph output is now deterministic. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- Python package linking with uv now runs in the correct location. (3.221.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.221.0)
- _LazyModule no longer triggers a full module load for introspection attributes. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- Remote components now work correctly when PULUMI_NODEJS_SKIP_COMPONENT_INPUTS is set. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- Replacement triggers are now passed through to Construct. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- Failed yarn install commands are now retried, including during pulumi install. (3.220.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.220.0)
- Generic subclasses of dynamic.Resource now work correctly. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Correctly installs packages that depend on other packages. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Correctly installs packages that depend on other packages. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Python code generation no longer panics when ranging over resource outputs that are arrays of objects. (3.219.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0)
- Package names are now correctly determined for Python and NodeJS packages. (3.218.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.218.0)
- Positional arguments can be passed to pulumi convert again. (3.218.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.219.0), [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.218.0)
- SDK generation now correctly includes git forge organizations as schema namespaces. (3.218.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.218.0)
- The CLI now copies files when linking, improving robustness across file partitions. (3.217.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.1)
- The CLI no longer installs plugins twice when explicit parameterizations are used. (3.217.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.1)
- Fixes alias options being passed to Construct for remote components. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Reconfigures the service-backed secret manager for the target stack when importing state if required. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- Fixes an issue with serialized async generators. (3.217.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.217.0)
- The Node.js SDK avoids a RangeError when error objects are large. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- The message renderer now works correctly on Windows. (3.216.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.216.0)
- Internal properties such as __defaults are filtered from diff display. (3.215.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.215.0)
- Fixes import_resources with a converter failing because of --stack argument placement. (3.215.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.215.0)
- Preserves existing behavior when adding a local provider with pulumi package add. (3.214.1) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.1)
- No-diff updates that resolve initErrors now pass ignoreChanges, preserving configured change-ignoring behavior. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Fixes programgen bindings for invokes from parameterized packages, allowing generated programs to bind those calls correctly. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Fixes plugin download URL overrides when the fallback mechanism is used. (3.214.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.214.0)
- Updates pulumi-yaml to v1.26.1, incorporating bug fixes for users of Pulumi YAML. (3.212.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.212.0)
- Plugin dependencies are no longer reinstalled after load failure for Git plugins with nested paths. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- Parameterized SDKs now generate lifted single-value calls correctly. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- The command now correctly identifies the innermost Project or Plugin. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- Cancellation handling is fixed in several places in the Python language host. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- Generated Go resource creation functions now account for name conflicts. (3.211.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.211.0)
- ComponentResources no longer incorrectly transfers input arguments to output properties automatically. (3.210.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.210.0)
- Local components now use the version from package.json instead of 0.0.0. (3.210.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.210.0)
- The CLI now correctly installs non-standard plugins. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- Node.js SDK serialization errors caused by side-by-side SDK copies are fixed. (3.209.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.209.0)
- Resource snapshots no longer encounter duplicate integrity issues when aliases are present. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Bind errors now include invalid property names. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Previewing an imported resource that deletes and replaces due to diffs no longer panics. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Python resource arguments now accept typeddicts when no language information is specified. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Looking up a nonexistent stack reference output no longer raises an exception in Python. (3.208.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.208.0)
- Avoids cancellations caused by slow request processing in the Python callbacks server. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- Fixes closure serialization on Node.js v25.2.0. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- Fixes resource parenting in some refresh operations that run a program. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- Avoids cancellations caused by slow processing of requests in the SDK. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- Rewriting type-invalid PCL no longer causes a panic. (3.207.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.207.0)
- Fixes duplicate resource snapshot integrity issues during pulumi up --refresh --run-program when a PendingReplacement exists. (3.206.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.206.0)
- Fixes an issue where refresh with --run-program could potentially run forever. (3.205.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.205.0)
- Import errors now include the import ID for non-existent resources. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)
- The Node.js and Python scalar return protocol now allows returning secret maps. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)
- Go code generation for scalar return SDK functions is corrected. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)
- Prevents a potential snapshot integrity error when a dependency fails to be destroyed with destroy --run-program. (3.204.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.204.0)
- Converting parameterized packages for .NET and Node.js now propagates local dependencies to GenerateProject. (3.203.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.203.0)
- Errors from the journaler are no longer displayed to users. (3.203.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.203.0)
- The required flag for resource inputs is now reported correctly. (3.203.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.203.0)
- Python invokes now work correctly for functions returning map types. (3.203.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.203.0)
- Stack imports now use the correct casing for the stack/latest path in the DIY backend. (3.203.0) — [release notes](https://github.com/pulumi/pulumi/releases/tag/v3.203.0)
