# Pulumi v3.260.0 - Product: Pulumi (https://whatsnew.fyi/product/pulumi) - Vendor: Pulumi - Date: 2026-08-28 - Version: v3.260.0 - Original notes: https://github.com/pulumi/pulumi/releases/tag/v3.260.0 - Permalink: https://whatsnew.fyi/product/pulumi/releases/v3.260.0 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **added** — 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 - **added** — Support Go 1.27 - **added** — Add `pulumi state promote` to turn stateful snippets into Pulumi program code - **fixed** — Replace resources whose deletedWith target is being replaced, instead of leaving them orphaned in state - **fixed** — Serialize typed object stack outputs with their wire-format (camelCase) property names, matching other language SDKs - **fixed** — Cancelling a task now interrupts a running local tool call instead of waiting for it to finish - **fixed** — Access schema properties whose names contain hyphens as attributes under their Python names instead of subscripting - **fixed** — Generate valid struct field names for properties whose names contain hyphens - **fixed** — Quote property names that are not legal identifiers (e.g. kebab-case) in generated declarations and use bracket access for them - **fixed** — Cancelling a local tool call no longer leaves the TUI stuck on "Thinking..." with input blocked - **fixed** — Use resolved environment names when evaluating ESC imports - **fixed** — Allow output-typed values for the id attribute of a read resource - **fixed** — Register resolvers for output-only properties in generated Resource.get so they resolve as unknown during preview when the id is unknown - **fixed** — Avoid replacing imported resources when an input changes from plain to a secret or output-wrapped value with the same inner value - **fixed** — Keep DIY backend stacks readable when checkpoint compression transitions fail - **fixed** — Give a clearer error message when selecting a stack by name outside a directory with a Pulumi.yaml project file - **fixed** — Propagate runtime context across thread boundaries - **fixed** — Name plain function input object types without the Args suffix, matching the name the generated SDK exports - **fixed** — Reject zip template entries that resolve outside the extraction directory - **fixed** — Keep a package's pluginDownloadURL in SDKs regenerated by `pulumi install` ##### 3.260.0 (2026-08-28) ###### Features - [cli/deployment] 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 [#24284](https://github.com/pulumi/pulumi/pull/24284) - [sdk/go] Support Go 1.27 [#24401](https://github.com/pulumi/pulumi/pull/24401) - [cli/state] Add `pulumi state promote` to turn stateful snippets into Pulumi program code [#24453](https://github.com/pulumi/pulumi/pull/24453) ###### Bug Fixes - [engine] Replace resources whose deletedWith target is being replaced, instead of leaving them orphaned in state [#23818](https://github.com/pulumi/pulumi/pull/23818) - [sdk/python] Serialize typed object stack outputs with their wire-format (camelCase) property names, matching other language SDKs [#24246](https://github.com/pulumi/pulumi/pull/24246) - [cli/neo] Cancelling a task now interrupts a running local tool call instead of waiting for it to finish [#24268](https://github.com/pulumi/pulumi/pull/24268) - [programgen/python] Access schema properties whose names contain hyphens as attributes under their Python names instead of subscripting [#24300](https://github.com/pulumi/pulumi/pull/24300) - [programgen/go] Generate valid struct field names for properties whose names contain hyphens [#24300](https://github.com/pulumi/pulumi/pull/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](https://github.com/pulumi/pulumi/pull/24300) - [cli/neo] Cancelling a local tool call no longer leaves the TUI stuck on "Thinking..." with input blocked [#24318](https://github.com/pulumi/pulumi/pull/24318) - [sdk/go] Use resolved environment names when evaluating ESC imports [#24375](https://github.com/pulumi/pulumi/pull/24375) - [codegen/pcl] Allow output-typed values for the id attribute of a read resource [#24386](https://github.com/pulumi/pulumi/pull/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](https://github.com/pulumi/pulumi/pull/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](https://github.com/pulumi/pulumi/pull/24387) - [backend/diy] Keep DIY backend stacks readable when checkpoint compression transitions fail [#24383](https://github.com/pulumi/pulumi/pull/24383) - [cli/stack] Give a clearer error message when selecting a stack by name outside a directory with a Pulumi.yaml project file [#24394](https://github.com/pulumi/pulumi/pull/24394) - [sdk/python] Propagate runtime context across thread boundaries [#24403](https://github.com/pulumi/pulumi/pull/24403) - [programgen/python] Name plain function input object types without the Args suffix, matching the name the generated SDK exports [#24440](https://github.com/pulumi/pulumi/pull/24440) - [cli/new] Reject zip template entries that resolve outside the extraction directory [#24447](https://github.com/pulumi/pulumi/pull/24447) - [cli/package] Keep a package's pluginDownloadURL in SDKs regenerated by `pulumi install` [#24432](https://github.com/pulumi/pulumi/pull/24432) - [sdk/python] Preserve all providers passed to remote components in Python programs [#24443](https://github.com/pulumi/pulumi/pull/24443) - [sdkgen] Apply schema defaults to generated Python and Node.js function inputs [#24452](https://github.com/pulumi/pulumi/pull/24452) - [programgen/python] Mark required component inputs as required in generated Python TypedDicts [#24459](https://github.com/pulumi/pulumi/pull/24459) - [programgen/python] Add type annotations for config variables default values coming from invokes [#24464](https://github.com/pulumi/pulumi/pull/24464) - [programgen/python] Ge _[Truncated at 4000 characters — full notes: https://github.com/pulumi/pulumi/releases/tag/v3.260.0]_