v3.260.0
Added 3
- Make `pulumi deployment settings get` render every source kind and show environment variable values, changing the `--output=json` shape of `environmentVariables` from a list of names to a list of objects
- Support Go 1.27
- Add `pulumi state promote` to turn stateful snippets into Pulumi program code
Fixed 17
- Replace resources whose deletedWith target is being replaced, instead of leaving them orphaned in state
- Serialize typed object stack outputs with their wire-format (camelCase) property names, matching other language SDKs
- Cancelling a task now interrupts a running local tool call instead of waiting for it to finish
- Access schema properties whose names contain hyphens as attributes under their Python names instead of subscripting
- Generate valid struct field names for properties whose names contain hyphens
- Quote property names that are not legal identifiers (e.g. kebab-case) in generated declarations and use bracket access for them
- Cancelling a local tool call no longer leaves the TUI stuck on "Thinking..." with input blocked
- Use resolved environment names when evaluating ESC imports
- Allow output-typed values for the id attribute of a read resource
- Register resolvers for output-only properties in generated Resource.get so they resolve as unknown during preview when the id is unknown
- Avoid replacing imported resources when an input changes from plain to a secret or output-wrapped value with the same inner value
- Keep DIY backend stacks readable when checkpoint compression transitions fail
- Give a clearer error message when selecting a stack by name outside a directory with a Pulumi.yaml project file
- Propagate runtime context across thread boundaries
- Name plain function input object types without the Args suffix, matching the name the generated SDK exports
- Reject zip template entries that resolve outside the extraction directory
- Keep a package's pluginDownloadURL in SDKs regenerated by `pulumi install`
From Pulumi
3.260.0 (2026-08-28)
Features
- [cli/deployment] Make
pulumi deployment settings getrender every source kind and show environment variable values, changing the--output=jsonshape ofenvironmentVariablesfrom a list of names to a list of objects #24284 - [sdk/go] Support Go 1.27 #24401
- [cli/state] Add
pulumi state promoteto turn stateful snippets into Pulumi program code #24453
Bug Fixes
- [engine] Replace resources whose deletedWith target is being replaced, instead of leaving them orphaned in state #23818
- [sdk/python] Serialize typed object stack outputs with their wire-format (camelCase) property names, matching other language SDKs #24246
- [cli/neo] Cancelling a task now interrupts a running local tool call instead of waiting for it to finish #24268
- [programgen/python] Access schema properties whose names contain hyphens as attributes under their Python names instead of subscripting #24300
- [programgen/go] Generate valid struct field names for properties whose names contain hyphens #24300
- [sdkgen/nodejs] Quote property names that are not legal identifiers (e.g. kebab-case) in generated declarations and use bracket access for them #24300
- [cli/neo] Cancelling a local tool call no longer leaves the TUI stuck on "Thinking..." with input blocked #24318
- [sdk/go] Use resolved environment names when evaluating ESC imports #24375
- [codegen/pcl] Allow output-typed values for the id attribute of a read resource #24386
- [sdkgen/nodejs] Register resolvers for output-only properties in generated Resource.get so they resolve as unknown during preview when the id is unknown #24386
- [engine] Avoid replacing imported resources when an input changes from plain to a secret or output-wrapped value with the same inner value #24387
- [backend/diy] Keep DIY backend stacks readable when checkpoint compression transitions fail #24383
- [cli/stack] Give a clearer error message when selecting a stack by name outside a directory with a Pulumi.yaml project file #24394
- [sdk/python] Propagate runtime context across thread boundaries #24403
- [programgen/python] Name plain function input object types without the Args suffix, matching the name the generated SDK exports #24440
- [cli/new] Reject zip template entries that resolve outside the extraction directory #24447
- [cli/package] Keep a package's pluginDownloadURL in SDKs regenerated by
pulumi install#24432 - [sdk/python] Preserve all providers passed to remote components in Python programs #24443
- [sdkgen] Apply schema defaults to generated Python and Node.js function inputs #24452
- [programgen/python] Mark required component inputs as required in generated Python TypedDicts #24459
- [programgen/python] Add type annotations for config variables default values coming from invokes #24464
- [programgen/python] Generate valid Python when a component with inputs instantiates another component #24466
- [cli/neo] Stop the running local tool immediately when a Neo task is cancelled and report it as cancelled #24470
- [programgen/python] Support final argument expansion for min and max in Python programs #24471
Improvements
- [cli] Treat adjacent character swaps as a single typo when suggesting commands #23899
- [sdk/python] Correctly resolve discriminated unions by their tag #24352
- [sdk/python] Allow transforms to be mocked #24406
- [sdk/nodejs] Allow transforms to be mocked #24415
- [sdk/go] Allow transforms to be mocked #24416
- [sdkgen] Allow hyphens in the member segment of tokens, so resource, object type and function names can be kebab-case #24440
- [cli] Print secret provider information with other stack information #24430
- [auto/python] Allow
refresh,preview_refresh, andpreview_destroyto request rich diffs #24445 - [engine] Cache provider mapping results on disk so repeated plans do not boot a provider to re-fetch an unchanged mapping #24462
- [sdk/python] Improve stack traces for providers #24465