Skip to content

Releases: pulumi/pulumi

v3.256.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 19:34
dc5427b

3.256.0 (2026-08-04)

Features

  • [cli] Add --ignore-protect flag to pulumi up, pulumi preview and pulumi destroy to allow deleting protected resources without unprotecting them in the state first #24053
  • [cli/env] Add an optional --export-env-vars flag to the env provider {aws,azure,gcp}-login commands to also set the standard SDK environment variables referencing the login outputs #24055
  • [cli] Add a --server flag to pulumi package add, publish, get-schema, get-mapping, gen-sdk, info and pulumi schema check that skips package resolution and uses the given URL as the plugin download URL #24107

Bug Fixes

  • [backend/service] Fix pulumi login --insecure not 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 fmt when 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 provider no 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 NewPolicyAnalyzer when ConfigureStack fails 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, as pulumi install does #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 --stack into the converter's arguments when converter args are passed #24146
  • [auto/go] Fix ImportResources when GenerateCode(false) is set #24147
  • [sdk/go] Fix hooks and transforms causing panics with mocks #24161
  • [programgen/go] Fix plain invokes emitting nonexistent ...ArgsArgs argument types #24172

Improvements

  • [cli/import] Error when running pulumi import --from terraform in a Pulumi HCL project #23744
  • [programgen] Add ID type to PCL #22702
  • [engine] Give the resource monitor's Invoke its 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 --provider argument 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_target on ConvertStateRequest, so converters can resolve package specifications the same way the CLI does #24174

Miscellaneous

  • [cli] Retire the Pulumi AI mode of pulumi new (interactive choice and --ai/--language flags). The backing service has been shut down; use pulumi neo instead. #24116
  • [sdk/dotnet] Upgrade dotnet to v3.110.0 #24175
  • [yaml] Upgrade yaml to v1.38.1 #24175

v3.255.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 13:37
7a0dcea

3.255.0 (2026-07-28)

Features

  • [cli] Add an --extension flag to package commands for extension-parameterized packages, reinstalled from Pulumi.yaml on pulumi 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 providers option of the parent named on the request, matching the resolution applied to resource registrations #24016
  • [cli/do] Add --resources to refer to existing resources in state in do input 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 providers option of a component block to the resources and invokes it declares #24016
  • [cli/import] Fix import file generation when parent resources share names #24069
  • [cli] Fix parallel pulumi install processes sharing a PULUMI_HOME intermittently 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 --summary flag to pulumi stack history events that reduces a past update's events to the same summary shape as a live pulumi 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-update or pulumi neo --debug-preview to investigate the failed operation #24075
  • [sdk/python] Allow UV_PROJECT_ENVIRONMENT to override the virtualenv path if uv is used #24077
  • [cli] Allow otel traces to be sent over https #24078

v3.254.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 15:10
656b954

3.254.0 (2026-07-23)

Features

  • [cli] Add pulumi logs share command for sharing logs with Pulumi #22546
  • [cli] Add pulumi stack migrate to 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-env flag to up, preview, destroy, and refresh to substitute imported environments for a single run without editing the stack config #23562
  • [cli] Add pulumi neo acp to 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 neo stream and message-send failures, and add pulumi neo resume with 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 upsert to do, allowing resources to be statefully created or updated in a stack #23813
  • [sdk/python] Add pulumi.run for 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-options to pulumi 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 neo connected 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, create and setup aliases to list/remove/move/edit/new commands and making state remove and package remove the canonical names with delete kept 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 pulumi is run without a command, matching the behavior of other group commands #23848
  • [programgen] Support onError resource 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> --logflow no 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

  • [sdk] Move RetrieveGitFolder to the gitutil package #23955
  • [sdk] Move template helpers from workspace to pkg/cmd/pulumi/templates #23963

v3.253.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 11:30
94536e5

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

  • [cli] Add a --version flag to the pulumi command that prints the version, same as pulumi version #23898
  • [cli] Align env commands with the CLI naming guidelines, making list, remove and move the canonical names with ls, rm, delete and mv kept as aliases #23901

v3.252.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 12:34
3199718

3.252.0 (2026-07-13)

Features

  • [auto] Add import to 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 --reason flag to pulumi env open-request to explain the request to approvers #23802
  • [cli/state] Improve the error message when a resource URN is not found in the state for pulumi state commands, suggesting close-matching URNs and how to list the URNs in the stack #23812
  • [pcl] Allow binding hooks to a resource's onError option #23838
  • [sdk/nodejs] Add a production runtime option for Node.js projects. When set to true in Pulumi.yaml, pulumi install skips devDependencies (npm --production, pnpm --production, yarn --production). #23849

Bug Fixes

  • [cli] Exit with a non-zero code when a command group such as pulumi env is 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 about no 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-request so 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

  • [sdk/nodejs] Report the TypeScript version in pulumi about #23850
  • [sdk/nodejs] Update OpenTelemetry dependencies #23855

v3.251.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 12:41
aff0ffa

3.251.0 (2026-07-08)

Bug Fixes

  • [cli] Show a retain marker for retain-on-delete resources in --diff output #23754
  • [cli] Don't miscopy out archives #23798

Miscellaneous

  • [cli] Add pulumi neo --debug-update and pulumi neo --debug-preview flags to investigate a failed update or preview, suggested in the failure output #23499

Improvements

  • [cli/convert] Add an ecosystem field 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 settings no longer writes the local Pulumi.<stack>.deploy.yaml file: the experimental init, pull, configure, and env subcommands have been removed, and the CLI no longer calls the deployment-settings encrypt endpoint. get/edit/destroy continue to manage settings directly in Pulumi Cloud #23480
  • [cli/deployment] The deployment settings file (Pulumi.<stack>.deploy.yaml) has been removed entirely. The experimental pulumi deployment settings push (update/up) command, the --config-file flag, and the SDK helpers that read the file have been removed. Manage deployment settings directly in Pulumi Cloud with pulumi deployment settings get, edit, and destroy #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 esc are 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 TargetSnippets to 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

Choose a tag to compare

@github-actions github-actions released this 02 Jul 00:47
7549635

3.250.0 (2026-07-01)

Bug Fixes

  • [cli/engine] Fix recursive property log marshaling #23773

v3.249.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 14:20
825b24b

3.249.0 (2026-07-01)

Bug Fixes

  • [backend/diy] Fix pulumi stack tag rm not 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-validation flag 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 Output values #23703
  • [cli] Use display resource type names in policy violation output #23705

Improvements

  • [cli] Add --output $format flag to pulumi stack {list,history,tag list} #23686
  • [cli] Add --output $format to pulumi policy list and pulumi policy group list #23698
  • [cli] Add --output $format to pulumi project list #23699
  • [cli] Add --output $format flag to pulumi config env list #23706
  • [cli] pulumi login will warn if the given login differs from PULUMI_BACKEND_URL #23716
  • [cli/convert] Error when converting a Terraform program to the hcl language #23742
  • [cli/engine] Fix TestDebuggerAttach for dlv@1.27 #23693
  • [cli/plugin] Add --output $format to pulumi plugin list #23688

Features

  • [cli/policy] Add a --file flag to pulumi policy analyze to analyze a state file (as produced by pulumi 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 range loops 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 fdir and picomatch dependencies; the Node.js SDK now requires Node.js 22 or later #23722

Bug Fixes

  • [sdk/python] Fix deletedWith and replaceWith resource options in Python component resource providers #23710
  • [sdkgen/python] Cache package references per-deployment in generated SDKs #22459

v3.248.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 14:50
a88168d

3.248.0 (2026-06-24)

Bug Fixes

  • [cli] Fix a panic in pulumi package get-schema when binding a schema that references an uninstalled plugin #23647

Improvements

  • [cli] Add options to pulumi stack get for parity with bare pulumi stack #23623
  • [cli] Add --output flag 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 range resource collections as key-indexed maps in Python and NodeJS so they can be indexed by key #23639

Features

  • [sdk/nodejs] Add Output.recover to 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

Choose a tag to compare

@github-actions github-actions released this 18 Jun 14:11
21bf19b

3.247.0 (2026-06-18)

Features

  • [cli/config] Add --raw flag to pulumi config set to avoid stripping newlines when input is piped through stdin #23593
  • [cli/do] Add --provider flag 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-integrations flag to pulumi neo that 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.recover to 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.json carries 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.Host interface is now stateless with respect to workspaces; host methods that boot or resolve plugins take a plugin.Context carrying the workspace state, and closing a plugin.Context no 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 logout clears 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 add failing with pnpm when the generated SDK has a scoped package name (@-prefix), caused by pnpm's pkg set rejecting @ 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

Miscellaneous

  • [cli/plugin] Document the pulumi plugin run command by including it in the generated CLI docs #23559
  • [sdkgen] Modules can no longer be nested under the index module, this was never well supported and is now a strict bind error #23436