Releases: pulumi/pulumi
Releases 路 pulumi/pulumi
Release list
v3.256.0
3.256.0 (2026-08-04)
Features
- [cli] Add
--ignore-protectflag topulumi up,pulumi previewandpulumi destroyto allow deleting protected resources without unprotecting them in the state first #24053 - [cli/env] Add an optional
--export-env-varsflag to theenv provider {aws,azure,gcp}-logincommands to also set the standard SDK environment variables referencing the login outputs #24055 - [cli] Add a
--serverflag topulumi package add,publish,get-schema,get-mapping,gen-sdk,infoandpulumi schema checkthat skips package resolution and uses the given URL as the plugin download URL #24107
Bug Fixes
- [backend/service] Fix
pulumi login --insecurenot being reflected in the stack's service secrets manager state, which caused TLS verification failures against self-hosted backends using self-signed certificates #24134 - [cli] Scope current stack selection to the active backend so switching backends no longer surfaces stale stack errors #23974
- [programgen/go] Parent an invoke written inside a component to that component, lower a component's outputs, and only import
fmtwhen a component needs it #24019 - [programgen/python] Parent an invoke written inside a component to that component, so it resolves the component's providers #24018
- [sdk/nodejs] Defer output-form invokes that depend on a remote component whose resources are pending creation, by declaring invoke dependencies to the engine #24042
- [engine] Gate invokes on the created-ness of their declared dependencies, including the children of remote components, resolving them as unknown during previews that still have to create them #24040
- [sdk/go] Defer output-form invokes that depend on a remote component whose resources are pending creation, by declaring invoke dependencies to the engine #24044
- [pcl] Declare invoke dependencies to the engine so invokes that depend on pending resources, including remote components, resolve as unknown during previews #24041
- [sdk/python] Defer output-form invokes that depend on a remote component whose resources are pending creation, by declaring invoke dependencies to the engine #24043
- [cli/env]
env providerno longer writes a new environment revision when the resulting definition is unchanged #24055 - [sdk/go] Output-form invokes now infer their resource dependencies from their arguments, so they are skipped during preview while a dependent resource is pending creation and their results carry those dependencies #24054
- [sdkgen/go] Fixes nested optional output conversions #24096
- [engine] Fix a plugin process leak in
NewPolicyAnalyzerwhenConfigureStackfails after the plugin has booted #24106 - [programgen/go] Avoid redundant applies when projecting properties from generated Go object outputs #24112
- [backend/diy] Fix 403 errors writing to third-party S3-compatible backends (e.g. IBM COS, MinIO) by defaulting request_checksum_calculation to when_required when the s3:// backend URL sets a custom endpoint #24109
- [programgen/nodejs] Avoid redundant applies when projecting properties from Node.js outputs #24119
- [programgen/python] Avoid redundant applies when projecting properties from Python outputs #24120
- [sdk] Fix apply erroring for skipped resources #24108
- [cli] Retry rate-limited (HTTP 429) API requests when they are safe to retry, honoring the server's Retry-After header #24131
- [cli] Exit non-zero from remote operations (
pulumi up --remote,pulumi deployment run) when the deployment fails #24155 - [cli/new] Resolve and install packages required by the program during
pulumi new, aspulumi installdoes #24126 - [cli] Make --remote not require a Pulumi.yaml file to be present #24128
- [cli/import] Generate explicit providers in the import file
resources#24135 - [sdk/nodejs] Fix trustedDependencies parsing for bun #24145
- [auto/go] ImportResources no longer leaks
--stackinto the converter's arguments when converter args are passed #24146 - [auto/go] Fix
ImportResourceswhenGenerateCode(false)is set #24147 - [sdk/go] Fix hooks and transforms causing panics with mocks #24161
- [programgen/go] Fix plain invokes emitting nonexistent
...ArgsArgsargument types #24172
Improvements
- [cli/import] Error when running
pulumi import --from terraformin a Pulumi HCL project #23744 - [programgen] Add
IDtype to PCL #22702 - [engine] Give the resource monitor's
Invokeits own response message, separating it from the one a provider returns #24100 - [cli/do] Allow stateful resources to register their own provider resources based on provider inputs on the command line #24098
- [cli] Refresh the first-login welcome message to link your Pulumi Cloud console and the Pulumi changelog #24122
- [cli/do] Add support for the
--providerargument for stateful operations #24132 - [programgen/go] Better typing for maps, using known types rather than
map[string]interface{}#24142 - [cli/import] Serve the package-resolver service to state converters via
resolver_targetonConvertStateRequest, so converters can resolve package specifications the same way the CLI does #24174
Miscellaneous
v3.255.0
3.255.0 (2026-07-28)
Features
- [cli] Add an
--extensionflag to package commands for extension-parameterized packages, reinstalled fromPulumi.yamlonpulumi install - [cli] Project files to disk and surface their paths as environment variables for all output formats when opening an ESC environment #23993
- [engine] Resolve an invoke's provider from the
providersoption of the parent named on the request, matching the resolution applied to resource registrations #24016 - [cli/do] Add
--resourcesto refer to existing resources in state indoinput expressions #24037
Bug Fixes
- [programgen/nodejs] Parent an invoke written inside a component to that component, so it resolves the component's providers #24017
- [pcl] Apply the
providersoption of acomponentblock to the resources and invokes it declares #24016 - [cli/import] Fix import file generation when parent resources share names #24069
- [cli] Fix parallel
pulumi installprocesses sharing aPULUMI_HOMEintermittently failing with a missing provider executable error #24080 - [sdk/python] Allow Construct and Call methods to run concurrently in provider servers #24081
Improvements
- [engine] Support strings containing non-UTF8 bytes flowing between providers, the engine, state, and languages that opt in (Go and PCL initially) #23856
- [cli] Add a
--summaryflag topulumi stack history eventsthat reduces a past update's events to the same summary shape as a livepulumi up --output json, extended with error diagnostics and failed-resource markers #23960 - [protobuf] Allow state converters to supply resource inputs and outputs in ConvertState responses #23987
- [engine] Allow policy packs to point to executable binaries, not just script folders #24052
- [cli/display] The Neo diagnostics link now suggests
pulumi neo --debug-updateorpulumi neo --debug-previewto investigate the failed operation #24075 - [sdk/python] Allow
UV_PROJECT_ENVIRONMENTto override the virtualenv path if uv is used #24077 - [cli] Allow otel traces to be sent over https #24078
v3.254.0
3.254.0 (2026-07-23)
Features
- [cli] Add
pulumi logs sharecommand for sharing logs with Pulumi #22546 - [cli] Add
pulumi stack migrateto migrate a stack from another backend to the currently logged-in backend, including re-encrypting config secrets and stack state under the target secrets provider #22902 - [cli/config] Add an
--override-envflag toup,preview,destroy, andrefreshto substitute imported environments for a single run without editing the stack config #23562 - [cli] Add
pulumi neo acpto run Neo as an Agent Client Protocol agent over stdio for ACP-capable editors, with read-only and plan mode exposed as session config options #23886 - [cli/neo] Retry transient
pulumi neostream and message-send failures, and addpulumi neo resumewith chat history #23835 - [cli/neo] Make Ctrl+C clear typed text and preserve Ctrl+A/Ctrl+E line navigation in
pulumi neo#23932 - [cli/do] Add
upsertto do, allowing resources to be statefully created or updated in a stack #23813 - [sdk/python] Add
pulumi.runfor natively awaited Python program entrypoints that can return stack outputs #23945 - [cli/do] Allow expressions for number inputs #23954
- [cli/do] Allow expressions for boolean inputs #23967
- [cli/policy] Add
--runtime-optionstopulumi policy new#23992 - [cli/do] Add support for stateful create #23996
- [cli/do] Add support for stateful delete #24000
Bug Fixes
- [sdkgen/go] Fix Go codegen for plain properties nested inside non-plain objects #22524
- [cli/neo] Keep
pulumi neoconnected during quiet periods when the event stream only receives keep-alive heartbeats #23935 - [engine] Validate snippets before persisting them #23920
- [backend] Fix dangling ReplaceWith references in the journal replayer #23927
- [cli/do] Fix the converter plugin not being called if just attributes needed converting #23948
- [programgen/go] Generate compilable Go for programs that use discriminated union members as array/list elements #23980
Improvements
- [cli] Align commands with the CLI naming guidelines, adding
ls,rm,delete,mv,update,modify,createandsetupaliases to list/remove/move/edit/new commands and makingstate removeandpackage removethe canonical names withdeletekept as an alias #23903 - [cli] Suggest closely-matching commands from the whole command tree when an unknown command is entered #23848
- [cli] Print help but exit with a non-zero code when
pulumiis run without a command, matching the behavior of other group commands #23848 - [programgen] Support
onErrorresource hooks in generated Go, NodeJS, and Python programs and in the PCL runtime, retrying the failed operation when the hook command exits successfully #23839 - [protobuf] Add parent and properties fields to ResourceImport so state converters can express resource hierarchy and property filters #23929
- [protobuf] Allow state converters to declare explicit providers as resources in ConvertState responses and attach imported resources to them via the new provider field #23975
- [cli] Redact secrets in property values in logs #23931
- [cli] Make
-v<n> --logflowno longer produce separate log files for plugins #23938 - [protobuf] Pass a schema loader target to state converters in ConvertStateRequest #23944
- [cli/import] Allow explicit providers to be declared in the resources section of an import file and referenced by name #23972
- [cli] Remove the template count from
pulumi new --help, which required a slow template listing before help could display #23973 - [cli/import] Support inputs and outputs on resources in import files, importing supplied state directly and skipping the provider read when outputs are given #23984
Miscellaneous
v3.253.0
3.253.0 (2026-07-14)
Features
- [auto/go] Support --import-pending-creates for refresh command in Go Automation API for preview refresh and refresh operations #23833
Bug Fixes
- [sdk] Precompose filenames to NFC on macOS when matching ignore patterns during archive creation, mirroring git's core.precomposeunicode so composed patterns match decomposed filenames #23566
- [cli] Respect the -v log level again so that without -v only warnings and errors are written to stderr #23910
- [codegen] Correctly generate provider resources declared inside PCL components for Node.js, Python and Go #23904
Improvements
v3.252.0
3.252.0 (2026-07-13)
Features
- [auto] Add
importto the generated automation APIs for NodeJS, Python and Go #23876 - [cli] Improve the error message when using Pulumi ESC with a DIY backend to suggest logging into Pulumi Cloud #23811
- [cli] Show command name for cli commands when running any command that lists logs #23889
- [cli/display] Render strings containing non-UTF8 bytes as b"" in diffs and JSON output #23870
- [cli/env] Add a
--reasonflag topulumi env open-requestto explain the request to approvers #23802 - [cli/state] Improve the error message when a resource URN is not found in the state for
pulumi statecommands, suggesting close-matching URNs and how to list the URNs in the stack #23812 - [pcl] Allow binding hooks to a resource's
onErroroption #23838 - [sdk/nodejs] Add a
productionruntime option for Node.js projects. When set totrueinPulumi.yaml,pulumi installskipsdevDependencies(npm--production, pnpm--production, yarn--production). #23849
Bug Fixes
- [cli] Exit with a non-zero code when a command group such as
pulumi envis given an unknown subcommand or no subcommand at all #23814 - [cli] Fix a panic when displaying a stack-level policy violation #23692
- [cli] Make reading non-secret stack outputs and running
pulumi aboutno longer require the passphrase for passphrase-encrypted stacks #23820 - [cli] Avoid
pulumi logs <command>showing the log for the currently running command #23887 - [cli/do] Fix calling delete on PF resources that need read called first #23837
- [cli/env] Submit the change request created by
pulumi env open-requestso it is pending approval instead of being left as an unsubmitted draft #23802 - [cli/neo] Fix the initial prompt sometimes rendering above the welcome banner in
pulumi neo#23831 - [engine] Fix importing a resource whose import identifier differs from its canonical ID causes the resource to be deleted on a subsequent update #23834
- [programgen] Deduplicate identical apply arguments to avoid unnecessary Promise.all/pulumi.all/Output.All in generated code #22293
- [sdk] Failed resource registrations will return faulted outputs, not unknown outputs #23844
- [sdk/nodejs] Fix empty node_modules folders in serialized function archives when using pnpm or symlinked workspace packages #23866
Miscellaneous
v3.251.0
3.251.0 (2026-07-08)
Bug Fixes
- [cli] Show a
retainmarker for retain-on-delete resources in--diffoutput #23754 - [cli] Don't miscopy out archives #23798
Miscellaneous
- [cli] Add
pulumi neo --debug-updateandpulumi neo --debug-previewflags to investigate a failed update or preview, suggested in the failure output #23499
Improvements
- [cli/convert] Add an
ecosystemfield to converter mapping requests so a converter can request mappings for the ecosystem it consumes rather than its own name #23804 - [cli/deployment]
pulumi deployment settingsno longer writes the localPulumi.<stack>.deploy.yamlfile: the experimentalinit,pull,configure, andenvsubcommands have been removed, and the CLI no longer calls the deployment-settings encrypt endpoint.get/edit/destroycontinue to manage settings directly in Pulumi Cloud #23480 - [cli/deployment] The deployment settings file (
Pulumi.<stack>.deploy.yaml) has been removed entirely. The experimentalpulumi deployment settings push(update/up) command, the--config-fileflag, and the SDK helpers that read the file have been removed. Manage deployment settings directly in Pulumi Cloud withpulumi deployment settings get,edit, anddestroy#23480
Bug Fixes
- [cli/display] Prevent plugin debug logs from appearing as raw JSON in the CLI's output when logging with
--logtostderr#23633
Improvements
- [cli/env] Report the new revision number when an environment definition is updated (e.g.
pulumi env edit,pulumi env provider,pulumi env version rollback) #23799
Miscellaneous
- [cli/env] Fold the Pulumi ESC engine and CLI into the pulumi/pulumi monorepo, removing the sdk鈫攅sc Go module cycle. Internal refactor with no user-facing behavior change;
pulumi env/pulumi escare unaffected. #23746
Improvements
- [cli/import] Support importing resources under parameterized providers from a converter or import file #23763
- [cli/import] Support importing resources under extension-parameterized providers #23779
Features
- [engine] Add
TargetSnippetsto deployment options to target snippets by UUID. #23745
Improvements
- [engine] Add OpenTelemetry spans to the StackReference read path so performance traces can pinpoint slow snapshot fetches, deserialization, or secret decryption #23787
Features
- [programgen/pcl] Invoke functions declared with multi-argument inputs using positional arguments in PCL #23571
Bug Fixes
- [sdk/nodejs] Don't include the version in module paths when serializing functions when using pnpm #23767
Features
- [sdkgen] Generate SDKs and programs for extension-parameterized packages #23579
v3.250.0
v3.249.0
3.249.0 (2026-07-01)
Bug Fixes
- [backend/diy] Fix
pulumi stack tag rmnot removing the last tag on self-managed (diy) backends #23702 - [backend/service] Don't fail a operation due to a logging failure #23704
Features
- [cli] Add
--skip-config-validationflag to preview, up, refresh, and destroy to skip validation of stack config against the project config schema #23691 - [cli] Enable automatic logging for every command by default #23731
Bug Fixes
- [cli] Don't ignore diffs in
Outputvalues #23703 - [cli] Use display resource type names in policy violation output #23705
Improvements
- [cli] Add
--output $formatflag topulumi stack {list,history,tag list}#23686 - [cli] Add --output $format to
pulumi policy listandpulumi policy group list#23698 - [cli] Add --output $format to
pulumi project list#23699 - [cli] Add
--output $formatflag topulumi config env list#23706 - [cli]
pulumi loginwill warn if the given login differs from PULUMI_BACKEND_URL #23716 - [cli/convert] Error when converting a Terraform program to the
hcllanguage #23742 - [cli/engine] Fix TestDebuggerAttach for dlv@1.27 #23693
- [cli/plugin] Add
--output $formattopulumi plugin list#23688
Features
- [cli/policy] Add a
--fileflag topulumi policy analyzeto analyze a state file (as produced bypulumi stack export) without requiring a stack or backend login #23664
Miscellaneous
- [pkg/testing] Allow ProgramTest to use npm for Node.js tests #23675
Bug Fixes
- [programgen] Generate numeric
rangeloops in NodeJS with a per-iteration binding so deferred applies in the loop body observe the correct index
Improvements
- [sdk] Update the dotnet and java language runtimes #23755
Bug Fixes
- [sdk/go] Fix FileArchive nested in an AssetArchive producing zip/tar entries with backslashes on Windows #23750
Improvements
- [sdk/go] Move provider RPC setup code to the sdk module #23695
- [sdk/nodejs] Use npm as the package manager for the Node.js SDK #23655
- [sdk/nodejs] Remove the
fdirandpicomatchdependencies; the Node.js SDK now requires Node.js 22 or later #23722
Bug Fixes
v3.248.0
3.248.0 (2026-06-24)
Bug Fixes
- [cli] Fix a panic in
pulumi package get-schemawhen binding a schema that references an uninstalled plugin #23647
Improvements
- [cli] Add options to
pulumi stack getfor parity with barepulumi stack#23623 - [cli] Add
--outputflag to about and whoami commands #23651
Features
- [engine] Add support for 'snippets', blocks of PCL kept in state to track ad-hoc resources #23286
- [engine] Send the address of a schema loader service to resource providers as part of the provider handshake #23645
- [engine] Send the address of a package resolver service to resource providers as part of the provider handshake #23654
Bug Fixes
- [programgen] Guard references to conditionally-created (boolean
range) resources in generated Python and NodeJS programs so they type-check #23634 - [programgen] Generate map
rangeresource collections as key-indexed maps in Python and NodeJS so they can be indexed by key #23639
Features
- [sdk/nodejs] Add
Output.recoverto catch and recover from exceptions in outputs #23642
Bug Fixes
- [sdkgen] Fix extra trailing new lines in comments #23619
Improvements
- [sdkgen] Require callers to pass an explicit schema loader when binding PCL programs and package schemas #23672
v3.247.0
3.247.0 (2026-06-18)
Features
- [cli/config] Add --raw flag to
pulumi config setto avoid stripping newlines when input is piped through stdin #23593 - [cli/do] Add
--providerflag to pull provider config to use from existing provider state #23560 - [cli/engine] Resource providers now receive the active login's API address and access token through PULUMI_API and PULUMI_ACCESS_TOKEN #23589
- [cli/neo] Add a
--disable-integrationsflag topulumi neothat runs the task with no integration credentials #23531 - [engine] Send the address of a mapper service to resource providers as part of the provider handshake
- [programgen/go] Support functions with multiArgumentInputs #23554
- [programgen/python] Support functions with multiArgumentInputs #23574
- [sdk/nodejs] Registered resources can now be retrieved from the mock monitor for test assertions #20539
- [sdk/python] Add
Output.recoverto catch and recover from exceptions in outputs #23591 - [sdkgen] Adds support for language agnostic cross references in schemas. Use the form
{{% ref <target> %}}to reference other schema components in markdown descriptions. Such as `{{% ref #21369 - [sdkgen] Add extension parameterization to the package schema model #23536
- [sdkgen/go] Support functions with multiArgumentInputs #23554
- [sdkgen/python] Support functions with multiArgumentInputs #23574
- [cli/auth] When
credentials.jsoncarries an OAuth refresh token, the CLI now auto-refreshes the access token on 401 and retries the request once, instead of returning a "login required" error #23430
Improvements
- [cli] Respect PULUMI_SKIP_CONFIRMATIONS whenever we ask for confirmation #23607
- [cli] Use list and remove as the canonical names for list/remove commands, with ls and rm as aliases #23608
- [docs] Generate redirects for command aliases #23610
- [engine] Serve raw schema bytes from the engine's schema loader service instead of binding and re-marshaling the full schema on every request #23551
- [sdk/go] The
plugin.Hostinterface is now stateless with respect to workspaces; host methods that boot or resolve plugins take aplugin.Contextcarrying the workspace state, and closing aplugin.Contextno longer closes a host that was passed in to its constructor #23508 - [sdk/nodejs] Allow running the postinstall script for local SDKs under npm 12 #23568
- [sdk/python] Add register_package helper to cache package references per deployment #22459
Bug Fixes
- [cli] Ensure
pulumi logoutclears the current tokenless backend in coding agent environments #23540 - [cli] Read Git metadata correctly in repositories that enable the worktreeConfig extension, such as those hosted on Azure DevOps #23535
- [cli/display] Show interrupted steps as interrupted instead of as finished #23510
- [cli/plugin] Allow plugin tarballs containing symlinks #23587
- [sdk/nodejs] Fix
pulumi package addfailing with pnpm when the generated SDK has a scoped package name (@-prefix), caused by pnpm'spkg setrejecting@in dot-notation property paths #23365 - [codegen/pcl] Fix version comparison in NeedsVersionResourceOption to use semver.Version.Equals and reject "v"-prefixed versions #https://github.com/pulumi/pulumi/pull/23441