Update dependency @pulumi/pulumi to v3.246.0 #11

Open
renovate wants to merge 1 commit from renovate/pulumi-pulumi-3.x-lockfile into main
Collaborator

This PR contains the following updates:

Package Change Age Confidence
@pulumi/pulumi (source) 3.184.03.246.0 age confidence

Release Notes

pulumi/pulumi (@​pulumi/pulumi)

v3.246.0

Compare Source

Bug Fixes
  • [backend/diy] Fix backwards incompatible gocloud.dev changes #​23525
Features
  • [cli] Add pulumi logs ls to list automatic log files #​23449
  • [cli] Add pulumi logs rm to remove automatic log files
  • [cli] Include the list of affected resources (urn, type, name, op, parent) in --output json for preview, up, destroy, and refresh
  • [cli] Support Pulumi projects without a runtime across CLI operations and Automation API project settings #​23489
Improvements
  • [cli] Support Ctrl+Z to suspend a running pulumi neo session and restore the transcript on resume with fg #https://github.com/pulumi/pulumi/issues/23394
  • [cli] Remove the experimental pulumi ai web command #​23517
  • [cli/cloud] Improve the interactive pulumi login prompt wording and coloring #​23417
  • [cli/convert] Resolve provider plugins through the Pulumi Registry when converting from a third-party source #​23490
Features
  • [cli/do] Add a --stateless flag to pulumi do. create, patch, and delete now require --stateless for the existing direct-provider behavior; the default will switch to a stateful (engine-driven) implementation in a future release
  • [cli/env] Support ephemeral agent auth instructions for ESC API unauthorized errors in detected agent sessions #​23402
Bug Fixes
  • [cli/neo] The pulumi neo TUI now adapts its colors to the terminal background instead of hardcoding a dark scheme #​23333
  • [cli/neo] Increase the pulumi neo task-creation timeout so backend cold starts no longer fail #​23444
  • [cli/neo] Ensure pulumi neo resolves the same Pulumi access token as pulumi preview when running in-process preview and up operations #​23452
Improvements
  • [cli/neo] Treat affirmative replies such as "ok", "approve" and "go ahead" to pulumi neo approval prompts as approvals #​23450
Bug Fixes
  • [pcl] Recursively fill schema-declared output fields on resources, so PCL programs that traverse into an optional inner field of a nested output object no longer fail at runtime with an "unsupported attribute" error #​23458
  • [pcl] Resolve config variables whose default value is derived from an invoke to the invoke's result instead of an unknown value #​23494
  • [programgen/go] double-wrapping of plain values passed to input types when generating Go programs #​23418
  • [programgen/go] Fix Go program generation to no longer produce **T when an output traversal lands on an optional struct field, and to emit the correct pulumi.<T>ArrayOutput cast for traversals to slice-typed fields #​23458
Features
  • [sdk] Add a read field to customTimeouts so users can configure a timeout for resource read operations #​23459
Bug Fixes
  • [sdk] Reject tar entries with path traversal components when extracting archives #​23485
  • [sdk/go] Applying a transformation to a resource no longer drops the resource's parent in the RegisterResource call #​14826
  • [sdk/nodejs] Fix local SDKs added with pulumi package add not being built when using pnpm 10.34.2 or newer
Miscellaneous
  • [sdk/nodejs] Improve error logs when serialization fails #​21901
Bug Fixes
  • [sdkgen] Validate schema names to not contain whitespace or control characters #​23460
Improvements
  • [sdkgen] Allow provider objects to have string enumerations on their outputs #​23461
Bug Fixes
  • [cli/auth] BREAKING: Delete all backend config when logging out #​23358

v3.245.0

Compare Source

Improvements
  • [backend/diy] Update gocloud.dev to 0.46 and aws sdk to v2 #​23421
  • [cli] Show download and unpack progress when installing provider plugins #https://github.com/pulumi/pulumi/issues/23408
  • [cli/do] Expose the selected stack's organization and short name to PCL input files when running pulumi do inside a project
  • [cli/do] Suggest similar tokens when an unknown token is passed to pulumi do #​23341
  • [cli/neo] Support up/down arrows to scroll through prompt history in pulumi neo #​23425
Bug Fixes
  • [engine] Download the HCL language runtime on demand instead of bundling it #​23356
Miscellaneous
  • [sdk/go] Remove "name" from plugin loading functions and require "Type" on Configure & DiffConfig calls #​23363
Bug Fixes
  • [sdk/nodejs] Fix mergeOptions dropping onError hooks from ResourceOptions in the Node.js SDK
  • [cli/auth] Delete shared temporary agent credentials when logging out
Improvements
  • [cli/stack] Remame pulumi stack init to new #​23422

v3.244.0

Compare Source

Bug Fixes
  • [cli/do] Fix top level flags like --logtostderr being recognized when using pulumi do #​23355
  • [cli/install] Distinguish multiple packages with the same plugin
  • [engine] Fix snapshot integrity issue with up --refresh
  • [engine] Forward all provider errors to error hooks for retry #​23347
  • [engine] Trace cancel RPCs sent to plugins during shutdown as children of the active operation instead of emitting separate root spans #​23362
  • [sdk/python] Merge requirements.txt into pyproject.toml when using uv without a project section #​23340

v3.243.0

Compare Source

Features
  • [cli] Make the pulumi project new -y command write a minimal project file with no template
    #​22847

  • [cli] Allow coding agents to create claimable temporary accounts when not authenticated

  • [cli] Suggest pulumi neo in pulumi preview and pulumi up diagnostics output
    #​23326

  • [sdk] Add List to the Go plugin.Provider interface, wired to the streaming ResourceProvider.List RPC
    #​23287

  • [sdkgen] Reserve the package names 'pulumi' and 'input' for internal use
    #​23321

  • [cli/cloud] Prefer text/markdown over JSON in pulumi api when an endpoint produces both
    #​22963

  • [cli/do] Add resource support to pulumi do
    #​23215

  • [cli/neo] Pressing Esc in pulumi neo now clears the input box when it has text; with an empty box, Esc still cancels the agent's current turn
    #​23299

  • [cli/new] Alias pulumi new to pulumi project new
    #​23265

Bug Fixes
  • [cli] Require --yes to confirm pulumi deployment cancel, pulumi stack schedule remove, pulumi org webhook remove, and pulumi stack webhook remove when running non-interactively
    #​23264

  • [pcl] Don't silently ignore ... in function arguments
    #​23309

  • [sdkgen/nodejs] Cache package references per-deployment in generated SDKs to fix concurrent inline programs
    #​23068

  • [backend/service] Error out when setting up journaler fails
    #​22671

Miscellaneous
  • [cli/package] Update the pulumi package add --agent documentation hint to use <type-token> as the placeholder for the /docs/... URL
    #​23294

  • [cli/plugin] Rename plugin ls to list and rm to remove
    #​23291

v3.242.0

Compare Source

Features
  • [cli] Add a pulumi package for npx support

  • [cli] Add the pulumi org member edit command
    #​23235

  • [cli] Add the pulumi org member remove command
    #​23237

  • [cli/cloud] Add pulumi deployment get to retrieve details for a specific deployment
    #​23238

  • [cli/cloud] Add pulumi insights account scan get <account> <scan-id> to show the full workflow run for a single Insights scan
    #​23255

  • [cli/cloud] Add pulumi insights account scan list <account> to discover recent scan IDs to feed into pulumi insights account scan log
    #​23255

  • [cli/deployment] Add dedicated flags for each deployment setting
    #​23236

  • [cli/do] Add the start of pulumi do
    #​23176

  • [cli/neo] Add --print/-p to pulumi neo to run a single prompt non-interactively and print the agent's final response to stdout
    #​23245

Bug Fixes
  • [cli/cloud] Fix pulumi insights account scan log --all to follow the server's pagination cursor through the end of the log, and render --job/--step mode as structured lines instead of an empty raw-string blob
    #​23256

  • [sdk] Close gzip.Writer in archiveTarGZIP to produce valid tar.gz output
    #​23240

  • [sdkgen/python] Fix usage of ArgsDict types in typed dictionaries
    #​23253

v3.241.0

Compare Source

Features
  • [cli] Add --output json to pulumi preview for a structured JSON summary of the operation result
    #​22927

  • [cli] Add --output json to pulumi refresh for a structured JSON summary of the operation result
    #​22928

  • [cli] Add --output json to pulumi destroy for a structured JSON summary of the operation result
    #​22875

  • [cli] Add pulumi stack schedule get to retrieve the configuration of a scheduled action
    #​23153

  • [cli] Add pulumi stack schedule list to list all scheduled actions configured for a stack
    #​23153

  • [cli] Add pulumi stack schedule new to create a raw, drift, or TTL deployment schedule for a stack
    #​23153

  • [cli] Add pulumi stack webhook delivery list to list recent deliveries for a stack webhook
    #​23116

  • [cli] Add pulumi stack webhook delivery redeliver to redeliver a webhook event
    #​23118

  • [cli] Add pulumi stack webhook edit to update an existing stack webhook
    #​23139

  • [cli] Add pulumi stack webhook new to create a new stack webhook
    #​23101

  • [cli] Add pulumi stack webhook remove to delete a stack webhook
    #​23102

  • [cli] Add pulumi org webhook delivery list to list recent deliveries for an organization webhook
    #​23179

  • [cli] Add pulumi org webhook edit to update an organization webhook
    #​23179

  • [cli] Add pulumi org webhook list to list all webhooks configured for an organization
    #​23174

  • [cli] Add pulumi org webhook new to create a new organization webhook
    #​23172

  • [cli] Add pulumi org webhook ping to send a test ping to an organization webhook
    #​23179

  • [cli] Add pulumi org webhook remove to delete an organization webhook
    #​23177

  • [cli] Add pulumi stack drift list to list drift detection runs for a stack
    #​23159

  • [cli] Add pulumi stack drift status to show the drift detection status for a stack
    #​23161

  • [cli] Add pulumi stack schedule edit to update an existing scheduled deployment action
    #​23153

  • [cli] Add pulumi stack schedule remove to delete a scheduled deployment action
    #​23153

  • [cli] Add pulumi audit-log export command
    #​23212

  • [cli] Add pulumi org audit-log list
    #​23211

  • [cli] Add pulumi policy compliance list to list compliance results grouped by entity
    #​23209

  • [cli] Add pulumi policy group new command to allow creating new policy groups
    #​23202

  • [cli] Add the pulumi policy issue get command
    #​23200

  • [cli/cloud] Add pulumi insights account list to list Insights accounts in an organization
    #​23091

  • [cli/cloud] Add pulumi insights account new to create a Pulumi Insights account
    #​23093

  • [cli/cloud] Add pulumi insights account scan log to fetch log output for a Pulumi Insights scan
    #​23092

  • [cli/cloud] Add pulumi insights account scan to trigger a resource discovery scan for an Insights account
    #​23094

  • [cli/cloud] Implement pulumi stack history events to retrieve engine events for a Pulumi Cloud update
    #​23109

  • [cli/cloud] Add pulumi deployment cancel to terminate an in-progress deployment
    #​23164

  • [cli/cloud] Add pulumi org member list to list the members of an organization
    #​23170

  • [cli/cloud] Add pulumi org usage get to fetch the resources-under-management summary for an organization
    #​23166

  • [cli/cloud] Add pulumi org role assign to assign a custom role to a team
    #​23117

  • [cli/cloud] Add pulumi org role edit to update a custom role's name, description, or permission tree
    #​23117

  • [cli/cloud] Add pulumi org role list to list custom roles for an organization
    #​23117

  • [cli/cloud] Add pulumi org role new to create a custom role from a permission descriptor JSON file
    #​23117

  • [cli/cloud] Add pulumi org role remove to delete a custom role from an organization
    #​23117

  • [cli/env] Update esc to v0.24.0
    #​23213

  • [cli/neo] Show tool call arguments and results in pulumi neo via a ctrl+o overlay
    #​23075

  • [cli/neo] Multi-line input in pulumi neo - Enter sends, Shift+Enter / Alt+Enter / Ctrl+J / trailing \ insert a newline
    #​23151

  • [cli/neo] Make pulumi neo visible by default; the PULUMI_EXPERIMENTAL gate has been removed
    #​23228

  • [cli/policy] Add pulumi policy group edit to edit policy groups
    #​23206

  • [cli/policy] Add pulumi policy group remove command to remove policies
    #​23208

  • [cli/policy] Add the pulumi policy group get command
    #​23203

Bug Fixes
  • [cli] Add pulumi policy issue list command
    #​23198

  • [cli] Fix pulumi org role list to send the uxPurpose query parameter the service requires
    #​23231

  • [engine] Fix pulumi import dropping map entries whose value matched the enum member of a Union<Input<Enum<T>>, ...> element type
    #​23190

  • [cli/cloud] Surface a clear error when pulumi api --all is used against an endpoint whose response is not paginatable, instead of silently emitting an empty array
    #​23191
    #​23128

  • [cli/cloud] pulumi deployment settings edit no longer clears fields that the patch does not mention
    #​23217

  • [cli/import] Generate PCL for asset and archive inputs when importing resources, instead of returning a "NYI" error
    #​22938

  • [cli/import] Preserve asset/archive/resource-reference values inside map and array inputs, and HCL-escape map keys containing ${ or %{ template sequences
    #​23222

  • [cli/install] Hint at adding a .git / _git when VCS URL resolution fails
    #​22831

  • [cli/neo] Transparently reconnect the Neo event stream after a transient network drop, resuming from the last seen event ID
    #​23134

  • [cli/neo] Show preparing in the live preview/up block until the first resource arrives
    #​23155

  • [cli/new] Support specific versions when using registry-backed templates with pulumi new
    #​22909

v3.239.0

Compare Source

Features
  • [cli] Add --output json to pulumi import for a structured JSON summary of the operation result
    #​22929

  • [cli] Add pulumi stack get to retrieve detailed information about a stack
    #​23106

  • [cli] Add pulumi stack webhook get to inspect a single stack webhook
    #​23088

  • [cli] Add pulumi stack webhook ping to send a test ping to a stack webhook

  • [cli/cloud] Add pulumi deployment list to list deployment executions for a stack
    #​23114

  • [sdkgen] Validate that schema names can't conflict with module paths
    #​22956

Bug Fixes
  • [engine] Fix batch encrypt/decrypt errors being silently dropped
    #​23149

  • [cli/cloud] Fix pulumi api help examples that referenced non-existent operation IDs and response fields
    #​23125

v3.238.0

Compare Source

Features
  • [cli] Add a --language flag to pulumi package add to run outside a Pulumi project or plugin
    #​22791

  • [cli] Add --output json to pulumi up for a structured JSON summary of the operation result
    #​22870

  • [cli] Recommend pulumi cloud api describe in pulumi cloud api --help to verify operation parameters before calling
    #​22881

  • [cli] Add pulumi stack webhook list to list all webhooks configured for a stack
    #​23082

  • [cli/cloud] Rename pulumi cloud api to pulumi api
    #​22970

  • [cli/cloud] Add pulumi insights resource get to look up a single resource discovered by Pulumi Insights
    #​23077

  • [cli/cloud] Add pulumi template list to list registry-backed templates
    #​23074

  • [cli/cloud] Rename the --format flag to --output on pulumi api and its subcommands
    #​23072

  • [cli/cloud] Add pulumi insights resource search to search for resources discovered by Pulumi Insights
    #​23087

  • [cli/engine] Add --skip-plugin-pre-install to skip up-front plugin installation

  • [engine] Fail the deployment when an after hook fails
    #​22935

  • [cli/neo] Render the agent's TODO list in the pulumi neo TUI
    #​22864

  • [cli/neo] Add --approval-mode and --permission-mode flags to pulumi neo, with Ctrl+A and Ctrl+R hotkeys to switch modes mid-session
    #​22950

  • [cli/package] When invoked by an AI coding agent, print pulumi api pointers after pulumi package add and pulumi package gen-sdk
    #​22904

  • [pkg/testing] Recognize the hcl and pcl runtimes in integration.ProgramTest
    #​23018

  • [pkg/testing] Add l1-config-types-optional conformance test for PCL's optional type constructor
    #​23108

Bug Fixes
  • [backend/diy] Minify JSON persisted by the DIY backend for checkpoints, history, and stack tags
    #​22245

  • [cli/import] Ignore property values that do not conform to the schema in maps
    #​23076

  • [cli/import] Stop dropping map values whose element type is a union of Input-wrapped types during HCL2 import

  • [cli/neo] Use the selected stack's organization when starting a pulumi neo task instead of the user's default organization
    #​22951

  • [cli/neo] Include the failure reason in pulumi_preview and pulumi_up tool results when they fail, so the agent can react instead of seeing a blank error
    #​22948

  • [cli/neo] Retry pulumi neo task creation without the attached stack when the backend rejects it with an "invalid entities" error
    #​22945

  • [cli/neo] Surface the failure reason when a filesystem tool call fails, instead of returning an empty result to the agent
    #​23019

  • [cli/package] Use --output=markdown (not the renamed-away --format=markdown) in the pulumi api pointers printed by pulumi package add and pulumi package gen-sdk
    #​23098

  • [programgen/pcl] Stop reporting spurious circular references when an ignoreChanges, hideDiffs, replaceOnChanges, or additionalSecretOutputs entry shares a name with a top-level node
    #​22931

  • [sdk/python] Speed up python program resolution by using a set instead of deque to track outputs
    #​22946

Miscellaneous
  • [cli/neo] Tag Neo tasks created from the CLI with a cli source so the service can attribute their origin
    #​23099

  • [sdk/nodejs] Add registerPackage helper to cache package references per deployment
    #​23014

v3.237.0

Compare Source

Features
  • [cli] Include the running command name and detected AI agent (when present) in the User-Agent header on Pulumi Cloud API requests
    #​22908

  • [engine] Include result on the summary engine event
    #​22883

  • [sdkgen] Eagerly error on schemas with unconstructable types
    #​22890

  • [cli/cloud] Auto-fill lang and os query parameters on pulumi cloud api GET/HEAD requests when the matched OpenAPI operation declares them and the caller hasn't supplied them
    #​22726

  • [cli/package] Add pulumi package new to bootstrap a Pulumi package from a template
    #​22837

Bug Fixes
  • [cli] Add blank-line gaps between pulumi neo TUI conversation blocks
    #​22846

  • [cli/import] Preserve __-prefixed keys when generating PCL for imported resource state, so provider-defined payloads round-trip correctly
    #​22856

  • [cli/neo] Render ux__ask_user clarifying questions as questions instead of approval prompts
    #​22862

  • [cli/neo] Fix a panic when cancelling a pulumi neo session
    #​22898

  • [cli/neo] Render every assistant message in the TUI scrollback so multi-turn commentary no longer disappears between tool calls

  • [cli/neo] Return the bare stack name and canonical project name from pulumi_preview and pulumi_up tool results instead of echoing the raw input
    #​22891

  • [codegen/pcl] Stop reporting spurious circular references when an ignoreChanges, hideDiffs, replaceOnChanges, or additionalSecretOutputs entry shares a name with a top-level node
    #​22916

  • [programgen/pcl] Fix PCL binder panic when a conditional mixes a Promise-typed branch with a try() branch
    #​22907

  • [sdk/python] Support NotRequired, Required and total=False in TypedDicts for component resource arg types
    #​22858

Miscellaneous
  • [cli/cloud] Auto-fit pulumi cloud api list table to terminal width and replace the
    tabular table renderer with go-pretty

    #​22874

  • [sdk/nodejs] Test on Node.js 26 and drop 20
    #​22872

v3.236.0

Compare Source

v3.235.0

Compare Source

Features
  • [cli] Add pulumi logs decrypt command for viewing logs
    #​22523

  • [cli] Bundle the hcl language host (from pulumi-labs/pulumi-hcl)
    #​22807

  • [cli] Automatically install the hcl converter from pulumi-labs/pulumi-hcl when running pulumi convert --from hcl
    #​22816

  • [pcl] Add read blocks to PCL to read resources via ID and query instead of registering them
    #​22641

  • [cli/cloud] Add pulumi cloud api <op-or-path> for calling any Pulumi Cloud API
    endpoint, with --field/--header/--input/--body flag handling, path
    template binding, content negotiation via --format, and --dry-run

    #​22771

  • [cli/cloud] Add --paginate to pulumi cloud api: follow continuation cursors,
    accumulate items into a single JSON envelope, and surface progress
    events to stderr with --emit-events (page, complete, truncated,
    partial_failure, cancelled).

    #​22772

Bug Fixes
  • [cli] Fix the pulumi neo shell tool to honor the agent-supplied timeout and to terminate the whole process tree (and unblock cmd.Wait) when the deadline fires, so commands like kubectl logs -f no longer hang Neo indefinitely.
    #​22820

  • [cli] Surface the error and exit when pulumi neo fails to create the underlying task, instead of leaving the TUI stuck in Thinking…
    #​22825

  • [codegen/go] Correctly generate []pulumi.Asset & []pulumi.Archive
    #​22827

  • [cli/neo] Exit cleanly when the user presses Ctrl+C twice in pulumi neo instead of hanging until a third press
    #​22821

  • [engine] The engine now caches schemas at PULUMI_HOME/schemas, and will cache for parameterised packages as well
    #​22812

  • [sdk-python] Preserve __-prefixed keys (e.g. __type discriminators) across RPC deserialization, matching the behavior of the other language SDKs
    #​22834

  • [programgen/{nodejs,python}] Fix programgen to emit the right length check for string length
    #​22802

Miscellaneous
  • [cli] Replace the Pulumipus mascot in the pulumi neo welcome banner with new Neo-branded ASCII art.
    #​22817

v3.234.0

Compare Source

Features
  • [cli/cloud] Add pulumi cloud api describe for inspecting the parameters, request
    body, and response schema of any Pulumi Cloud API operation, with
    text, markdown, and JSON output

    #​22770

  • [cli/cloud] Add pulumi cloud api list for browsing every endpoint exposed by the Pulumi
    Cloud OpenAPI spec, with table and JSON output

    #​22769

Bug Fixes
  • [engine] Revert changes to property path parsing that resulted in errors for currently valid paths

v3.233.0

Compare Source

Features
  • [auto/python] Expose the auto-generated Pulumi CLI interface as workspace.cli_api
    #​22638

  • [cli] Add encrypted logging to ~/.pulumi/logs; use the PULUMI_ENABLE_AUTOMATIC_LOGGING feature flag to turn it on
    #​22494

  • [cli] Implement the filesystem__grep and filesystem__content_replace local tools
    for pulumi neo. grep runs a regex search across files in the project root
    with an optional include glob filter and returns results in path:lineno: line
    form. content_replace performs a literal multi-file search-and-replace with a
    file_pattern glob and dry_run preview mode. Both tools skip binary files,
    hidden directories, and node_modules, and reject paths outside the project
    root. Their input schemas match the cloud-side tool definitions.

    #​22655

  • [cli] Add pulumi_preview and pulumi_up as local tools for the experimental pulumi neo
    agent. The Neo TUI renders a persistent bordered block for each operation that
    streams changed resources and diagnostics as the engine runs and finalizes with a
    summary of the op counts. Hidden behind PULUMI_EXPERIMENTAL.

    #​22697

  • [engine] Add List to the provider protocol and schema
    #​22693

Bug Fixes
  • [engine] Return a clear error when two installed plugins claim the same default provider package name (for example, a native scaleway provider alongside a terraform-provider bridge parameterized as scaleway) instead of panicking with "Should not have seen an older plugin if sorting is correct!"
    #​22679

  • [programgen] Do not wrap a call(...) on a method whose return type is marked plain in an Output. Previously
    PCL bound every method call's return type as Output<T>, which caused downstream program-gen
    to emit broken .apply(...)/.ApplyT(...) traversals against plain struct returns (e.g.
    methods with liftSingleValueMethodReturns=true or ReturnTypePlain=true).

    #​22696

  • [backend/diy] When using a backend url containing creds (e.g. PostgreSQL conn string), mask user:pass as in lock-related error messages
    #​22701

  • [codegen/go] Generate unqualified Provider references for the package's own provider resource. Previously
    the Go codegen always emitted <pkg>.Provider even when the reference appeared inside <pkg>
    itself, producing identifiers that would not compile. Affects generated code for method return
    types (and other schema positions) that reference pulumi:providers:<pkg>.

    #​22696

  • [codegen/nodejs] Generate unqualified Provider references for the package's own provider resource when emitting
    TypeScript code inside that package. Previously the generator always qualified the name as
    <pkg>.Provider, which does not resolve when no <pkg> namespace import is in scope.

    #​22696

  • [codegen/nodejs] Import the correct class name for a provider resource. Imports for pulumi:providers:<pkg> used
    the title-cased package name instead of Provider, producing a phantom identifier that clashed
    with the containing package's component/resource classes.

    #​22696

  • [programgen/nodejs] Emit await for call(...) invocations of methods whose return type is marked plain, and
    force the generated program into an async export = async () => ... wrapper whenever such a
    call is present. The Node SDK returns Promise<T> for plain methods; previously program-gen
    used the result directly, which did not match its runtime type.

    #​22696

  • [codegen/python] Avoid a self-import (import pulumi_<pkg> inside pulumi_<pkg>/<module>.py) when referencing
    the package's own provider resource. Python referenced the Provider as pulumi_<pkg>.Provider
    even inside that package, which caused a circular import at runtime.

    #​22696

  • [sdk/python] Reduce internal Output[T] data to a single asyncio.Future
    #​22661

  • [sdkgen/{nodejs,python}] Generate optional input types that accept undefined/None values
    #​22552

Miscellaneous
  • [auto/go] Drop the "With" prefix from generated option helpers so they match the naming of the existing optXxx packages
    #​22682

v3.232.0

Compare Source

Features
  • [cli] Add an experimental pulumi neo command that creates a Pulumi Neo agent task in CLI
    tool-execution mode and runs the local tool loop. Filesystem and shell tool calls
    issued by the agent run on the user's machine in their working directory; the
    interactive chat continues to happen in the Pulumi Console at the URL the command
    prints. Hidden behind PULUMI_EXPERIMENTAL.

    #​22473

  • [cli] Add support for handling user approval requests in the pulumi neo terminal UI.
    When the agent requests confirmation for a sensitive action, the TUI prompts the
    user and forwards their response back to the Pulumi Console. Hidden behind
    PULUMI_EXPERIMENTAL.

    #​22589

  • [cli] Add an interactive terminal UI for pulumi neo built with bubbletea, rendering
    agent messages, tool calls, and streaming output in the terminal alongside the
    Pulumi Console session. Hidden behind PULUMI_EXPERIMENTAL.

    #​22570

  • [cli] Switch logging library from glog to slog.

BREAKING: any if logging.V(x) { need to be changed to if logging.V(x).Enabled()

#​22548

  • [cli] Add a plan-mode toggle to the pulumi neo TUI, bound to Shift+Tab. When
    plan mode is on, Neo explores and asks questions without writing files,
    running pulumi up, or opening PRs, and surfaces an approved plan via a
    dedicated approval gate. The toggle must be set before the first message
    (plan mode is task-level on the wire); approving the proposed plan exits
    plan mode automatically.

    #​22634

  • [cli] The pulumi neo TUI now drives its "thinking" spinner off a single declarative
    rule (the spinner stays on until a final event — final assistant message, approval
    request, cancellation, or error — lands), so the indicator no longer flickers off
    when the agent hands off tool calls to the CLI or when streaming text arrives
    between tools. Press Esc during a turn to ask the agent to cancel; the label
    switches to "Cancelling..." until the backend acknowledges.

    #​22637

  • [cli] pulumi neo now executes the edit filesystem tool locally, matching the schema
    and response wording of the upstream mcp-claude-code tool so the agent sees
    identical output whether the call ran on Cloud or CLI. edit performs exact-string
    replacement with occurrence-count validation, and creates a new file when the
    target is missing and old_string is empty.

    #​22654

Bug Fixes
  • [cli] Render user messages in the pulumi neo TUI as soon as they're submitted
    instead of waiting for the Pulumi Cloud event stream to echo them back.
    The initial prompt passed on the command line also appears in the
    transcript at startup. Self-echoes from the server are de-duplicated;
    user input that originated from another client (e.g. the web UI on the
    same task) still renders.

    #​22629

  • [cli] Wrap warnings, errors, and user-message bubbles to the terminal width in the
    pulumi neo TUI. Previously these blocks rendered as single long lines that
    were clipped at the right edge of the viewport. On resize, all width-dependent
    transcript blocks (user messages, warnings, errors, assistant messages) now
    reflow to the new terminal width.

    #​22635

  • [cli/policy] Fix policy ls to use the default org name, not username
    #​22656

  • [engine] Fix provider registry race condition in parallel delete-before-replace
    #​21487

  • [engine] Signal providers to cancel before closing them during replacement

  • [sdkgen] Error on 'id' in state inputs
    #​22636

  • [programgen/python] Add necessary casts between types in generated programs
    #​22567

  • [sdkgen/go] Fix caching of package references to be per-deployment not per-process
    #​22170

Miscellaneous
  • [java] Upgrade java to v1.25.0
    #​22673

  • [auto/go] Generate command methods for the Go Automation API codegen
    #​22612

  • [sdk] Clarify docs on the remote parameter of ComponentResource / Resource in the Node and Python SDKs
    #​22603

  • [sdk/dotnet] Upgrade dotnet to v3.103.1
    #​22676

  • [yaml] Upgrade yaml to v1.32.0
    #​22674

v3.231.0

Compare Source

Features
  • [cli] Auto-detect Mercurial repository metadata for pulumi up / pulumi preview updates, mirroring existing Git support
    #​22618

  • [engine] Send Cancel RPC to plugins on host close for graceful shutdown
    #​22569

  • [engine] Pass resource options to hooks through the engine
    #​22582

  • [engine] Add GetDeploymentInfo to the resource monitor service

  • [auto/go] Add New command to Automation API
    #​22439

  • [auto/{go,nodejs,python}] Add --diff to automation api for destroy
    #​22563

  • [auto/python] Add new command to Automation API
    #​22439

  • [pcl] Support for resource hooks in PCL
    #​22365

  • [sdk-nodejs] Warn when a non-ComponentResource class is passed in the explicit components list to componentProviderHost
    #​22619

  • [sdk-python] Warn when a non-ComponentResource class is passed in the explicit components list to component_provider_host
    #​22619

  • [cli/import] Add support for providers to be defined in the same import file as their users
    #​21671

  • [cli/policy] ESC environment support for local policy packs
    #​22495

  • [sdk/nodejs] Support package.yaml when using pnpm
    #​22491

  • [sdk/python] Add function decorator variants for resource and error hooks
    #​22519

Bug Fixes
  • [auto/{nodejs,python}] Support --run-program for inline programs with preview_refresh/destroy

  • [backend/diy] Remove state lock for destroy and import with preview only for diy backend
    #​22561

  • [engine] Fix snapshot integrity error with component/provider resources in refresh --run-program
    #​21817

  • [pcl] Type list and tuple indices as integers not numbers
    #​22592

  • [pcl] Builtin functions element and range take int parameters not numbers
    #​22597

  • [programgen/{go,nodejs,python}] Fix some cases of name conflicts in program gen not being handled correctly
    #​22556

  • [programgen/nodejs] Add necessary casts between types in generated programs
    #​22557

  • [programgen/{nodejs,python}] Fix imports of camelCase modules
    #​22536

  • [sdk/python] Support Input[Optional[T]] in Python runtime type unwrapping
    #​22553

  • [sdkgen] Warn about modules nested under the index module which are not supported
    #​22531

Miscellaneous

v3.230.0

Compare Source

Features
  • [cli] Detect AI agents and send in update metadata
    #​22497

  • [auto/nodejs] Add "org" commands (get-default, set-default, search, search ai) to the auto-generated interface
    #​22395

  • [auto/nodejs] Add "new" command to the auto-generated interface
    #​22421

  • [sdk/{nodejs,python}] Add Cancel handler to Python & Node.js providers
    #​22516

  • [cli/policy] Add ESC environment resolution for policy packs
    #​22425

Bug Fixes
  • [auto/go] Insert --non-interactive flag before "--" positional separator to avoid misinterpretation as a positional argument
    #​22462

  • [ci] Add code coverage collection for Node.js automation tools tests
    #​22412

  • [pcl] Allow key indexing into a map of resources created by range
    #​22498

  • [programgen/go] Fix an issue with formatted index modules not importing correctly

  • [cli/state] Check for Pulumi.yaml projects and backend option in state upgrade
    #​22483

  • [sdk/go] Fix Go program generation for ternary expressions inside apply callbacks, add Go predeclared identifiers to reserved words, handle optional list types in union type codegen, and fix unmarshalOutput for known outputs with null elements.
    #​22460

  • [sdk/nodejs] Fix inherited input properties missing from component schema when args interface extends another interface
    #​22446

  • [sdk/python] Fix inherited input properties missing from component schema when args class inherits from a base class
    #​22484

Miscellaneous
  • [java] Upgrade java to v1.23.0

  • [sdk/dotnet] Upgrade dotnet to v3.102.1

  • [yaml] Upgrade to v1.31.0
    #​22501

  • [programgen/{dotnet,go,java,nodejs,pcl,python,yaml}] Remove mimeType & readDir from PCL
    #​22449

v3.229.0

Compare Source

Features
  • [auto/python] Add org get-default and set-default commands to Automation API

  • [backend/diy] Avoid unnecessary S3 bucket HEAD calls to improve performance
    #​22373

  • [cli] Allow TRACEPARENT to be set for CLI invocations, parenting the pulumi spans under an existing parent span
    #​22369

  • [cli/display] Add --urns flag to display full resource URNs instead of short names in preview, up, destroy, refresh, import, and watch commands
    #​22007

  • [pcl] Type integer literals as integers rather than numbers in PCL
    #​22268

  • [pcl] Support parameterized providers in PCL
    #​22251

  • [protobuf] Add RunPlugin2 bidirectional streaming RPC to LanguageRuntime proto
    #​22389

  • [yaml] Update YAML runtime to 1.30.2
    #​22426

  • [sdk/go] Add org get-default and set-default commands to Automation API

  • [sdk/nodejs] Modernize generated tsconfig.json to align with TypeScript defaults
    #​22370

  • [cli/policy] Add a new policy analyze command to run a policy pack against existing state
    #​22250

Bug Fixes
  • [backend/diy] Remove state lock for refresh --preview-only for diy backend
    #​22385

  • [cli] Fix OTEL flushing on provider shutdown
    #​22358

  • [cli/display] Fix deadlock in message renderer when cancelling an operation
    #​22433

  • [engine] Fix --include and --exclude not working for program-based refresh (RefreshV2)
    #​22404

  • [engine] Parallelize plugin cancellation in SignalCancellation
    #​22431

  • [pcl] Fix looking up variables in parent scopes
    #​22379

  • [pcl] Apply default values from resource schemas
    #​22393

  • [sdk/{bun,go,nodejs,python}] Wire Cancel RPC to language host Run
    #​22397

  • [sdk/nodejs] Allow TypeScript 6 as a peer dependency
    #​22340

  • [sdk/nodejs] Fix closure serialization for __importStar-wrapped modules
    #​22388

  • [sdk/python] Cache type metadata and class references in Python SDK to reduce CPU overhead during serialization
    #​22422

  • [sdk/python] Replace busy-wait polling in wait_for_rpcs with asyncio.wait
    #​22411

Miscellaneous
  • [cli] Add update metadata to the otel root span
    #​22357

  • [java] Update to v1.22.0
    #​22437

  • [sdk/nodejs] Use nodenext for moduleResolution and module
    #​22363

v3.228.0

Compare Source

Features
  • [cli] Don't apply the secrets filter to true and false (case-insensitive)
    #​22269

  • [cli] Add grpcs:// support and header authentication to OTLP exporter
    #​22320

  • [cli] Read OTEL_RESOURCE_ATTRIBUTES
    #​22329

  • [auto/nodejs] Add low-level "cancel" command to the auto-generated interface
    #​22156

  • [cli/state] Allow pulumi state delete to accept multiple resource URNs and delete them in a dependency-safe order

Bug Fixes
  • [cli] Allow relative file paths for --otel-traces
    #​22300

  • [cli] Bridge opentracing spans from providers into OTel
    #​22313

  • [cli] Correctly end spans for GRPC streams
    #​22304

  • [cli/about] Do not include the access token in plain text
    #​22347

  • [display] Fix detailed diff indentation so changed resources are not visually nested under unrelated visible resources when unchanged parents are hidden.
    #​22317

  • [cli/import] Fix import codegen when generating references to non-standard names
    #​22319

  • [engine] Update golang version
    #​22277

  • [pcl] Typecheck component inputs in PCL programs
    #​22292

  • [programgen/{nodejs,python}] Fix literal conversion when calling into local components
    #​22306

Miscellaneous
  • [cli] Add CLI metadata to the root span
    #​22305

  • [cli] Add more OTel interceptors for GRPC clients
    #​22309

  • [cli] Add spans for plugin installation and add more attributes for dependency installation
    #​22303

  • [cli] Allow setting a GRPC endpoint for performance tests
    #​22330

  • [backend/diy] Start deprecation of non-project mode for DIY backends
    #​19625

v3.227.0

Compare Source

Features
  • [engine] The engine will fill in Name and Type for ResourceReference values on the wire protocol
    #​22208

  • [sdk/bun] Add support for running policy packs with bun
    #​22206

  • [cli/policy] Auto-install missing policy analyzer plugins
    #​22196

  • [sdk/python] Add lock file detection for picking the Python toolchain
    #​22234

Bug Fixes
  • [cli] Use distinct exit codes for different types of error
    #​22205

  • [cli] Improve SAML SSO reauthorization error message

  • [engine] Fix snapshot integrity error in refresh v2 with changed parents
    #​22190

  • [pcl] Continue running after errors when running with --continue-on-error
    #​22171

  • [pcl] Deprecate labels on package blocks
    #​22253

  • [programgen] Preserve traversal parts in rewriteRelativeTraversalExpression
    #​22249

  • [sdk/bun] Check for an SDK version compatible with bun
    #​22262

  • [programgen/nodejs] Correctly generate for expressions
    #​22219

  • [sdk/go] Add support for Azure DevOps git URLs in pulumi package publish code paths
    #​22217

  • [programgen/python] Correctly generate list & dictionary comprehension in Python code
    #​22182

Miscellaneous
  • [backend] Move CloudConsoleURL from httpstate to httpstate/client
    #​22258

  • [docs] Move remaining content from /developer-docs to /docs
    #​22225

  • [sdk/bun] Add a test for the function serialization error message when using bun
    #​22207

  • [sdk/bun] Run policy language tests for bun
    #​22209

  • [sdk/bun] Mark pulumi-language-bun as a bundled plugin
    #​22265

  • [sdk/{bun,nodejs}] Use defaultErrorMessage in run-plugin and run-policy-pack
    #​22210

v3.226.0

Compare Source

Features
  • [backend/service] Automatically repair snapshot integrity issues, while sending an error event to the backend for further diagnosis
    #​22179

  • [cli] Add a --otel-traces flag, that allows writing otel traces to a file, or directly to a grpc interface
    #​22129

  • [engine] Engine will use provider references from __self__ arguments to calls
    #​22114

  • [sdk/bun] Support bun as a runtime
    #​22177
    #​22049

  • [sdk/bun] Add debugger support for the bun runtime
    #​22177

  • [sdk/bun] Add support for Bun as a plugin runtime
    #​22189

Bug Fixes
  • [engine] Fix ReplacementTrigger firing due to dependency changes
    #​22119

  • [engine] Correctly serialize output values to the snapshot rather than always recording them as computed even when known
    #​22120

  • [pcl] Support resource ranges in PCL
    #​22144

  • [cli/config] Include environments used when refreshing a stack's config
    #​22103

  • [cli/display] Fix pulumi destroy not showing parent resource hierarchy
    #​22148

  • [cli/package] Correctly parse package URLs with .git in them
    #​22174

  • [cli/plugin] Fix package get-schema for binary providers at relative paths
    #​22107

  • [sdk/python] Handle null detailedDiff in automation StepEventMetadata JSON parsing
    #​22140

  • [cli/state] Fix state move integrity errors when copied providers depend on resources left in source stack
    #​22141

Miscellaneous
  • [cli/about] Show bun information in pulumi about
    #​22121

  • [programgen/go] Target go 1.25 for generated go.mod files (instead of go 1.23)
    #​22070

  • [sdkgen/go] Target go 1.25 for generated go.mod files for SDKs (instead of go 1.20)
    #​22131

  • [sdk/python] Read Poetry and uv lockfiles to determine program dependencies
    #​22072

  • [sdk/python] Use importlib to find pulumi-plugin.json for installed packages
    #​22127

v3.225.1

Compare Source

Bug Fixes
  • [sdk/go] Add per-context packageRef caching for parameterized providers to fix concurrent inline programs

  • [engine] Fix inheritence of default providers across resources of different packages
    #​22101

  • [programgen/go] Fix panic on digit-prefixed schema properties in Go code generation
    #​21917

  • [programgen/go] Fix plain values not always being lifted to input/output values when needed
    #​22084

  • [programgen/python] Fix generation of entries and lookup calls
    #​22086

v3.225.0

Compare Source

Features
  • [engine] Automatically make invoke outputs secret when there is a secret input, and the invoke provider does not support secrets
    #​21959

  • [engine] The engine now handles the inheritance of the provider option in resource registrations
    #​21999

  • [engine] Enable journaling by default. It can still be turned off using the PULUMI_DISABLE_JOURNALING env variable
    #​22041

  • [programgen] PCL can now express config values should be read as secrets
    #​22066

  • [yaml] Update yaml to v1.30.0

  • [cli/engine] Add a flag for automatically opening a Neo task on preview/up failure
    #​21960

  • [cli/package] Support source-based packages in pulumi schema check, not just schema files
    #​21897

Bug Fixes
  • [cli] Fix stack import panicking when importing a service stack into a DIY backend
    #​22076

  • [engine] Fix panic when a new component resource in the program is not targeted
    #​21957

  • [sdk/nodejs] Implement GetProgramDependencies for bun and pnpm
    #​22065

Miscellaneous
  • [cli] Build language plugins with the grpcnotrace tag to reduce the binary size
    #​22012

v3.224.0

Compare Source

Features
  • [backend/diy] Add zstd compression option for DIY backend state files
    #​21877
Bug Fixes
  • [cli/state] state move now correctly handles reparenting of resources

  • [pkg] Correct the schema for "pulumi:pulumi:StackReference"
    #​21895

  • [programgen/nodejs] Correct the semantics of singleOrNone in generated files
    #​21947

  • [sdk/python] Fix StepEventMetadata.from_json reading detailed_diff (snake_case) instead of detailedDiff (camelCase), and PolicyEvent.from_json reading resource_urn instead of resourceUrn, causing both fields to always be None
    #​21714

  • [sdk/python] Convert integer component inputs to int
    #​21944

  • [sdk/python] Fix crash in forked processes using automation API
    #​21937

Miscellaneous
  • [sdk] Update java, dotnet & yaml
    #​21961

  • [sdk/python] Improve the performance of contains_unknowns for large objects
    #​21893

v3.223.0

Compare Source

Bug Fixes
  • [engine] Report policy pack installation errors
    #​21882

v3.222.0

Compare Source

Features
  • [programgen/go] Generate Call requests
    #​21836
Bug Fixes
  • [sdk/{nodejs,python}] Fix hang when loading policy packs that use v1.18.1 or older of the policy SDK
    #​21866

v3.221.0

Compare Source

Features
  • [auto] Support Go 1.26
    #​21835

  • [engine] BREAKING: Rename pulumiVersionRange to requiredPulumiVersion in PulumiPlugin.yaml
    #​21807

  • [cli/plugin] Reduce GitHub API usage when downloading plugins
    #​21774

  • [protobuf] Add loader_target to RunPluginRequest
    #​21763

  • [sdk/nodejs] Support enums when inferring schemas from components
    #​21787

  • [sdk/nodejs] Support the Partial utility type in component schema inference
    #​21802

  • [sdk/nodejs] Support the Required utility type in component schema inference
    #​21803

Bug Fixes
  • [cli] Make stack graph output deterministic
    #​21786

  • [engine] Fix snapshot integrity error in refresh --run-program with component resources
    #​21806

  • [engine] Fix race in refresh --run-program
    #​21815

  • [programgen/go] Correctly handle import paths for nested modules
    #​21812

  • [sdkgen] Support type references to parameterized and third-party packages
    #​21804

  • [sdkgen/go] Do not depend on pulumix against instructions for enums
    #​21818

  • [cli/{install,package}] Don't panic when a non-absolute path is passed to pulumi package get-schema where the PulumiPlugin.yaml has a packages section
    #​21794

  • [cli/{install,package}] Only link a Pulumi project once
    #​21788

  • [cli/{install,package}] Run in the correct location when using uv to link python packages
    #​21796

  • [cli/package] Allow underscores in the path of plugin URLs
    #​21778

  • [sdk/{nodejs,python}] Use new policy plugin support to run policy packs
    #​21684

  • [sdk/python] Surface errors from uv, poetry or pip during linking
    #​21770

  • [sdk/python] Always surface errors from uv, poetry or pip during dependency installation
    #​21814

  • [sdkgen/python] Add missing blank line before :param lists
    #​21789

v3.220.0

Compare Source

Features
  • [cli] Show environment variables that were set if a snapshot integrity error happens
    #​21709

  • [cli/{install,package}] Use the Pulumi Cloud Registry by default to resolve package names

  • [engine] Pass replacement trigger through to Construct
    #​21408

  • [engine] Add EnvVarMappings resource option for provider resources, allowing environment variables to be remapped before being passed to the provider
    #​21572

  • [pkg] BREAKING: Deprecate github.com/pulumi/pulumi/pkg/v3/codegen/dotnet in favor of github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet/v3/codegen. This package will be removed from pulumi/pulumi soon!
    #​21720

Bug Fixes
  • [cli] Retry yarn install when it fails (e.g. during pulumi install)
    #​21707

  • [engine] Deal with errors in elided journal entries correctly
    #​21576

  • [sdk/nodejs] Fix remote components with PULUMI_NODEJS_SKIP_COMPONENT_INPUTS

  • [sdk/python] Fix _LazyModule to not trigger full module load for introspection attributes
    #​21620

  • [sdkgen/python] Remove workaround for slow typechecking with MyPy and PyCharm
    #​21722

Miscellaneous
  • [cli] Write logfile location if verbosity is >= 1 to stderr instead of stdout
    #​21663

v3.219.0

Compare Source

Features
  • [cli] Allow setting requiredPulumiVersion in Pulumi.yaml
    #​21627

  • [cli/{install,package}] Allow using private packages as local dependencies in components
    #​21664

  • [cli/policy] Add pulumi policy install command
    #​21652

  • [engine] Run analyzer calls in parallel
    #​21631

  • [programgen/dotnet] Codegen RequirePulumiVersion for Dotnet
    #​21621

  • [sdk/python] Add support for the OnError resource hook
    #​21644

  • [sdk/python] Add support for protobuf 6
    #​21647

Bug Fixes
  • [cli] Allow positional arguments to be passed to convert again
    #​21604
    #​21614

  • [engine] Download/install required policy packs in parallel with plugins
    #​21651

  • [cli/package] Correctly install packages that depend on other packages for pulumi package add and pulumi package get-schema.
    #​21321

  • [programgen/python] Fix panic when ranging over a resource output that is an array of objects
    #​21679

  • [sdk/python] Fix issue with generic subclasses of dynamic.Resource
    #​21670

Miscellaneous
  • [sdk/python] Relax pip version constraint
    #​21639

v3.218.0

Compare Source

Features
  • [sdk/nodejs] Add support for the OnError resource hook
Bug Fixes
  • [cli] Allow positional arguments to be passed to convert again

  • [cli/install] Correctly include git forge organizations as schema namespaces when generating SDKs
    #​21579

  • [cli/{install,package}] Correctly grab package names for Python & NodeJS
    #​21577

v3.217.1

Compare Source

Features
  • [sdk/go] Add support for the OnError resource hook
    #​21515
Bug Fixes
  • [cli/install] Copy files when linking to be robust to copying across file partitions
    #​21549

  • [cli/install] Do not double install plugins with explicit parameterizations
    #​21548

  • [cli/install] Copy files when linking instead of renaming
    #​21549

Full Changelog: https://github.com/pulumi/pulumi/compare/v3.217.0...v3.217.1

v3.217.0

Compare Source

Features
  • [cli] Extract organization, team, and user from OIDC JWT claims during login
    #​21462

  • [engine] Add the OnError resource hook to allow for custom retry policies
    #​21291

  • [cli/engine] Add --plan up flag
    #​21368

  • [sdk/nodejs] Add requirePulumiVersion to the Node.js SDK
    #​21528
    #​21478

  • [sdk/python] Add require_pulumi_version to the Python SDK
    #​21528
    #​21430

  • [sdk/go] Add CheckPulumiVersion to the Go SDK
    #​21528
    #​21514

Bug Fixes
  • [auto/python] Implement About in Python automation API server
    #​21479

  • [engine] When importing a state file that refers to the service backed secret manager, make stack import reconfigure it for the target stack if required
    #​20966

  • [protobuf] Fix alias options being passed to Construct for remote components
    #​21050

  • [sdk/nodejs] Fix issue with serialized async generators
    #​21484

v3.216.0

Compare Source

Features
  • [build] Don't set PULUMI_ROOT with mise
    #​21457

  • [cli] Default to Pulumi Cloud when using an OIDC token for login
    #​21322

  • [engine] Add CheckPulumiVersion RPC to the engine
    #​21429

  • [protobuf] Remove ProviderHandshakeResponse.pulumi_version_range
    #​21438

  • [sdk/nodejs] Allow dynamic providers to return inputs from read() for accurate diffs after refresh
    #​21315

  • [sdk/nodejs] Add support for serializing async generators
    #​21410

  • [sdk/python] Allow dynamic providers to return inputs from read() for accurate diffs after refresh
    #​21315

Bug Fixes
  • [engine] Optimize StackReference performance
    #​21446

  • [cli/display] Fix message renderer on windows
    #​21401

  • [sdk/nodejs] Fix RangeError in defaultErrorMessage when error objects are large
    #​21409

Miscellaneous
  • [sdk/dotnet] Update dotnet to v3.97.0

v3.215.0

Compare Source

Features
  • [cli/plugin] Allow plugins to specify a supported version range for the CLI
    #​21335
Bug Fixes
  • [cli] Filter internal properties like __defaults from diff display
    #​21359

  • [cli/config] Make config set --type bool accept different spellings of boolean values instead of only lowercase "true"
    #​21314

  • [sdk/python] Fix import_resources with converter failing due to --stack argument placement
    #​21373

Miscellaneous
  • [cli] Update pulumi-dotnet to 3.96.1

  • [cli/package] Remove superfluous version string
    #​21351

v3.214.1

Compare Source

Bug Fixes
  • [cli/package] Preserve existing behavior when pulumi package add is used with a local provider
    #​21350

  • [pkg] Create namespace aliases to avoid Pulumi namespace collisions during codegen
    #​21325

v3.214.0

Compare Source

Features
  • [cli] Add --config and --config-path options to destroy and refresh
    #​21299

  • [sdkgen] Add OutputStyleOnly flag to functions to not emit their plain variants
    #​21198

  • [sdk/python] Add support for replacement_trigger in the Python SDK
    #​20940

Bug Fixes
  • [engine] Pass ignoreChanges when issuing no-diff updates that resolve initErrors
    #​21319

  • [programgen] Fix a bug in programgen binding to invokes from parameterized packages
    #​21284

  • [cli/plugin] Fix plugin download URL overrides for fallback mechanism
    #​21095

Miscellaneous
  • [pkg] Upgrade pulumi-java to 1.20.0

v3.213.0

Compare Source

Bug Fixes
  • [sdkgen/go] Generate three-level nested builtin output types for Go SDK
    #​21248
Miscellaneous
  • [pkg] Move plugin downloading from pkg into sdk
    #​21220

v3.212.0

Compare Source

Bug Fixes
  • [yaml] Update pulumi-yaml to v1.26.1

v3.211.0

Compare Source

Features
  • [cli/about] Print Node.js package manager information in pulumi about
    #​21163

  • [backend/diy] Add stack tags support for DIY backends (S3, Postgres, file-based, etc.).

DIY backends now support stack tags functionality, bringing feature parity with cloud backends.
This includes:

  • Full CRUD operations for stack tags (create, read, update, delete)
  • Automatic system tag injection (e.g., pulumi:project)
  • Tag filtering support in stack listing operations
  • Backward compatibility with existing stacks (no tags file required)
  • Atomic operations with caching for performance
  • Automatic cleanup of tag files when stacks are deleted

Tags are stored as separate .pulumi-tags files alongside stack checkpoints, using a versioned
JSON format. The implementation works across all DIY backend storage types including S3, Azure Blob,
Google Cloud Storage, PostgreSQL, and local file systems.

Example usage:

pulumi stack tag set environment production
pulumi stack tag set owner backend-team
pulumi stack ls --tag-filter environment=production

#​19882

  • [backend/service] Improve startup performance with the service as backend
    #​21176

  • [sdk/nodejs] Add support for replacement_trigger in the NodeJS SDK
    #​20939

  • [sdk/python] Allow setting version for python component providers
    #​21149

Bug Fixes
  • [cli/package] Correctly identify the innermost Project/Plugin when running pulumi package add
    #​21137

  • [engine] Allow referencing multiple git/github/gitlab components from the same repo
    #​21119

  • [programgen/go] Account for name conflicts in resource creation functions
    #​21107

  • [sdk/python] Fix cancellation handling in a few places in the python language host
    #​21145

  • [sdkgen/go] Fix generation of lifted single-value calls in parameterized SDKs
    #​21115

Miscellaneous
  • [cli] Don't attempt to re-install plugin dependencies on load failure for plugins based on git with a nested path
    #​21148

  • [sdk/{dotnet,java,yaml}] Bump language runtimes for dotnet, java, and yaml
    #​21201

  • [cli/engine] Add language runtime metadata to update metadata
    #​21186

v3.210.0

Compare Source

Features
  • [cli/about] Print python toolchain information in pulumi about

  • [sdk/java] Update java to v1.18

  • [components/nodejs] Local components will use the version from package.json rather than 0.0.0
    #​21100

  • [cli/package] Add pulumi package delete command to delete package versions from the Pulumi Registry
    #​21069

  • [cli/package] Always print the schema first in package get-schema, then print any binding errors
    #​21080

  • [sdk/python] Require grpcio>=1.75.1 on Python 3.14
    #​21113

Bug Fixes
  • [sdk/nodejs] Fix ComponentResources transfering input arguments to output properties automatically
    #​21094
Miscellaneous

v3.209.0

Compare Source

Features
  • [cli] Add native support for OIDC token exchange when logging into Pulumi Cloud. Run pulumi login --help for more information.
    #​20974

  • [sdk/python] Allow older grpcio and protobuf dependencies
    #​21007

  • [sdkgen/{dotnet,go,nodejs,python}] Generate .gitignore and .gitattributes files for generated SDKs
    #​21034

Bug Fixes
  • [cli/install] Correctly install non-standard plugins. See #​20953 for more information
    #​20983

  • [cli/new] Create pyproject.toml for uv and poetry projects when using --generate-only
    #​20979

  • [sdk/nodejs] Fix serialization errors due to SxS copies of the SDK
    #​21029

  • [sdk/python] Add PropertyValue runtime validation checks
    #​21058

Miscellaneous
  • [engine] Don't send root directory and runtime options to language plugins as command line arguments
    #​21054

  • [sdk/{dotnet,java,yaml}] Bump language runtimes for yaml, dotnet and java

v3.208.0

Compare Source

Features
  • [cli] Expose all command flags as env vars (e.g. --refresh can now be set with PULUMI_OPTION_REFRESH)
    #​20868

  • [cli/install] Make pulumi install recurse into local packages
    #​20945

  • [engine] Add a replacement_trigger resource option. Any change to this value between program runs will trigger a replace of the resource
    #​20936

  • [engine] Add a new builtin Stash resource which can be used to save a value to state
    #​20819

  • [protobuf] Add Language.Template RPC to protos
    #​20948

  • [sdk/go] Add support for replacement_trigger in the Go SDK
    #​20937

Bug Fixes
  • [engine] Fix duplicate resource snapshot integrity issue with aliases
    #​20926

  • [engine] Allow resources marked as Delete to be targeted, and take them into account for dependency calculation
    #​20962

  • [engine] Fix a panic when previewing and import of a resource that wants to delete and then replace due to diffs
    #​20997

  • [pkg] Include invalid property names in bind errors
    #​20989

  • [sdk/python] Don’t raise when looking up a stack reference output that does not exist
    #​20938

  • [sdkgen/python] Ensure resource args accept typeddicts when no language info is specified
    #​20982

Miscellaneous
  • [cli] Document the [template|url] argument in pulumi up command help text
    #​20996

v3.207.0

Compare Source

Features
  • [cli] Log gRPC requests before invoking them in gRPC debug interceptor
    #​20817

  • [engine] Add ReplaceWith resource option to allow one resource's replace operations to trigger another's
    #​20693

  • [sdkgen/python] Allow all PEP440 version specifiers to be used

Bug Fixes
  • [cli/import] Return errors when an import fails
    #​20904

  • [engine] Fix parenting of resources in some cases in refresh --run-program
    #​20894

  • [engine] Fix StackReference secrets performance
    #​20908

  • [programgen] Do not panic when re-writing type-invalid PCL
    #​20770

  • [sdk/go] Fix import path in instructions when linking a package in Go
    #​20888

  • [sdk/nodejs] Fix closure serialization on Node.js v25.2.0
    #​20913

  • [sdk/{nodejs,python}] Avoid cancellations due to do slow processing of requests

  • [sdk/python] Avoid cancellations due to do slow processing of requests in the callbacks server
    #​20917

Miscellaneous
  • [engine] Stop sending ConfigPropertyMap as part of RunRequest
    #​20887

v3.206.0

Compare Source

Features
  • [protobuf] Pass a preview flag to invokes so they can tell if they're being called during a preview
    #​20827

  • [cli/about] Include PULUMI_* environment variables in the pulumi about output
    #​20855

  • [auto/go] Get event log over gRPC instead of trying to read it from a text file
    #​20822

  • [auto/nodejs] Get event log over gRPC instead of trying to read it from a text file
    #​20824

  • [auto/python] Get event log over gRPC instead of trying to read it from a text file
    #​20833

  • [cli/engine] Add environment variable to add --refresh to preview,update,destroy
    #​20797

  • [sdk/nodejs] Add PULUMI_NODEJS_SKIP_COMPONENT_INPUTS environment variable to skip the new feature of sending component inputs to the engine for diffing and state storage
    #​20842

Bug Fixes
  • [engine] Fix duplicate resource snapshot integrity issue, when running pulumi up --refresh --run-program and when a resource PendingReplacement exists in the snapshot
    #​20812

  • [engine] Support floating point NaN and Inf values in resource state
    #​20843

Miscellaneous
  • [sdk/go] Use Language.Link to link Go packages
    #​20811

v3.205.0

Compare Source

Bug Fixes
  • [cli/display] Improve how the severity is displayed for policy violations
    #​20805

  • [engine] Fix an issue where refresh --run-program could potentially run forever
    #​20781

v3.204.0

Compare Source

Features
  • [cli] Print replace diffs when a resource tries to replace but is blocked by still having an import id set
    #​20762

  • [engine] Support overriding policy severity on violations
    #​20767

  • [backend/service] Send journal entries to the backend if it's supported
    #​20343

Bug Fixes
  • [engine] Fix a potential snapshot integrity error when a resources dependency fails to be destroyed using destroy --run-program
    #​20692

  • [engine] Fix import error to contain the import ID of non-existent resources
    #​20753

  • [sdk/nodejs] Pass secret values as Output objects to resource hooks to properly maintain their secretness. Previously hooks received an internal representation for secret values.
    #​20774

  • [sdk/python] Pass secret values as Output objects to resource hooks to properly maintain their secretness. Previously hooks received an internal representation for secret values.
    #​20769

  • [sdkgen/go] Fix codegen of scalar return SDK functions
    #​20754

  • [sdkgen/{nodejs,python}] Fix scalar return protocol to allow returning secret maps
    #​20747

Miscellaneous
  • [sdk/nodejs] Use Language.Link to link Node.js packages
    #​20715

v3.203.0

Compare Source

Features
  • [cli/display] Display policy severity for violations
    #​20746

  • [cli/package] Show functions in package info
    #​20733

Bug Fixes
  • [engine] Make sure errors from the journaler are not shown to the user
    #​20740

  • [backend/diy] Fix casing of stack/latest when importing stacks
    #​20727

  • [cli/package] Fix 'required' flag for resource inputs in package info
    #​20731

  • [programgen] Revert #​20345
    #​20714

  • [programgen/{dotnet,nodejs}] Propagate local dependencies for parameterized packages during convert down to GenerateProject
    #​20706

  • [sdkgen/python] Fix python invokes for functions returning map types
    #​20719

Miscellaneous
  • [sdk/python] Use Language.Link to link python packages
    #​20612

v3.202.0

Compare Source

Features
  • [auto] Add SetAllConfigJson method to automation APIs
    #​20709

  • [cli/config] Add --json input support to pulumi config set-all
    #​19427

  • [cli/display] Add error summary at the end of Resource changes
    #​20658

  • [components/{go,nodejs}] Send component inputs to be saved in state. This brings NodeJS and Go inline with Python behaviour
    #​20357

  • [sdk/python] Add support for Python 3.14
    #​20433

  • [sdk/python] Add the hide_diffs resource option
    #​20655

Bug Fixes
  • [engine] Fix assert when a resource that's not targeted on a destroy is marked as Delete
    #​20684

  • [sdk/nodejs] Allow compiled local SDKs to be parameterized
    #​20685

  • [sdk/nodejs] Handle RangeErrors from util.inspect stringifying error objects
    #​20705

v3.201.0

Compare Source

Features
  • [sdkgen/go] Support non-object return types in functions
    #​20646
Bug Fixes
  • [backend/service] Fix the --insecure flag in pulumi login

v3.200.0

Compare Source

Features
  • [cli] Look for .cmd and .ps1 extensions as well on Windows when looking for executables
    #​20637

  • [sdk/go] Add a new resource option: HideDiffs
    #​20631

  • [sdk/nodejs] Add a new resource option: hideDiffs
    #​20631

  • [sdkgen/python] Support non-object return types in functions
    #​20624

Bug Fixes
  • [build] Use ruff to auto fix lints in python
    #​20644

  • [sdk/nodejs] Make new arguments to initialize optional
    #​20650

  • [sdkgen/nodejs] Generate a .gitignore file inside local SDKs
    #​20643

  • [cli/state] Treat providers that are marked as parents in a move as providers still instead of as regular resources
    #​20639

  • [cli/state] Exclude root stack correctly when moving resources and when --include-parents is passed

v3.199.0

Compare Source

Features
  • [cli/about] Add pulumi about env to help
    #​20633

  • [cli/{about,new}] Add environment variables to override template repository settings. The new PULUMI_TEMPLATE_GIT_REPOSITORY, PULUMI_TEMPLATE_BRANCH, PULUMI_POLICY_TEMPLATE_GIT_REPOSITORY, and PULUMI_POLICY_TEMPLATE_BRANCH environment variables allow runtime customization of template sources
    #​20615

  • [cli/{install,package}] Add support for package references in plugins
    #​20524

  • [sdk/nodejs] Pass options, name, and type to ComponentResources initialize methods
    #​20618

  • [cli/policy] Send vcs metadata when publishing policy packs
    #​20528

Bug Fixes
  • [cli/display] Always send diag events to stderr in the diff display
    #​20632

  • [components] Stop including auth info in plugin name
    #​20620

  • [engine] Support the import option in resource transforms
    #​20586

  • [programgen] Fix panic in parseProxyApply when encoutering warning diagnostics
    #​20583

  • [sdk/nodejs] Don't attempt to serialise function values for resource inputs/outputs
    #​20621

v3.198.0

Compare Source

Features
  • [engine] Expand snapshot integrity check for resources
    #​20519

  • [sdk/go] Refactor Go policy SDK to have access to a pulumi Context object
    #​20570

  • [sdk/python] Allow registered resources to be retrieved from the mock monitor for test assertions
    #​20540

Bug Fixes
  • [engine] Fix snapshot integrity error with run-program --refresh, when a provider has a dependency that isn't being created
    #​20541

  • [engine] Remove unneeded data from policy summary events
    #​20589

  • [sdk] Fix plugin killing during cancellation
    #​20543

  • [sdk/go] Fix [Unm/M]arshalProperties to return nil when given nil
    #​20544

Miscellaneous
  • [protobuf] Add loader_target to LanguageRuntime.LinkRequest
    #​20552

  • [cli/package] Move InstallPackage from cmd/packagecmd to cmd/packages
    #​20550

  • [cli/package] Move stdout/stderr IO out of GenSDK and LinkPackage
    #​20546

  • [sdk] Move PluginSpec.Install to pkg/workspace.InstallPluginContent
    #​20537

  • [sdk/yaml] Bump pulumi-yaml to 1.23.2
    #​20588

v3.197.0

Compare Source

Features
  • [cli] Send new policy fields when publishing a policy pack

  • [sdk/dotnet] Update dotnet to v3.88
    #​20512

Bug Fixes
  • [engine] Fix a panic in preview, that could happen in some cases when default providers get updated
    #​20511

  • [components/python] Fix parenting of python components
    #​20508

  • [sdk/python] Fix hang when shutting down in certain error conditions
    #​20484

  • [sdk/python] Fix license-files entry for python package
    #​20506

v3.196.0

Compare Source

Miscellaneous
  • [sdk] Add policy summary events apitypes
    #​20443

  • [sdk] Add new policy fields apitypes
    #​20491

  • [protobuf] Add support for indicating "not applicable" policies
    #​20492

  • [protobuf] Add new analyzer policy fields
    #​20494

v3.195.0

Compare Source

Features
  • [engine] Add support for capturing program stack traces as part of resource registration
    #​20430

  • [sdk/go] Registered resources can now be retrieved from the mock monitor for test assertions
    #​20472

  • [sdk/go] The current exports map is now available for unit testing through GetCurrentExportMap
    #​20471

Bug Fixes
  • [pkg/go] Fix an issue where v3.194.0 of the github.com/pulumi/pulumi/pkg/v3 module depends on APIs from github.com/pulumi/pulumi/sdk/v3 that haven't been released
    #​20487

v3.194.0

Compare Source

Features
  • [cli] Log diagnostics to stderr instead of stdout
    #​20461

  • [cli/display] Change the default for --show-full-output from true to false
    #​20467

  • [cli/display] Fix the --show-full-output the flag
    #​20464

  • [sdk/go] Show a message that the Go program is being compiled
    #​20460

Bug Fixes
  • [engine] Make ignoreChanges work better for arrays
    #​20465

  • [programgen] Fix panic in RewriteApplies when encountering warning diagnostics
    #​20453

Miscellaneous
  • [cli] No longer require the PULUMI_EXPERIMENTAL flag for Private Registry template operations (pulumi template publish, registry-based template resolution in pulumi new), while registry-backed template resolution in pulumi new may still be disabled using PULUMI_DISABLE_REGISTRY_RESOLVE=true pulumi new
    #​20458

  • [sdk/yaml] Bump pulumi-yaml to 1.23.1

v3.193.0

Compare Source

Bug Fixes
  • [cli] Use "Private Registry", not cloud or Pulumi registry, in CLI output
    #​20436

  • [cli/display] Avoid printing a double new line when showing secrets in the outputs
    #​20435

  • [cli/display] Fix coloring of cobra error messages on windows

  • [cli/{install,package}] Fix local package resolution when PULUMI_EXPERIMENTAL=true by including local packages in registry fallback logic
    #​20413

  • [cli/new] Fail when running with --language without --ai in non-interactive mode
    #​20415

  • [cli/package] Fix not using already-installed package in 'pulumi package add' when PULUMI_EXPERIMENTAL=1

Miscellaneous
  • [cli] Start the pprof server when receving SIGUSR1
    #​20392

  • [cli/display] Replace ijc/Gotty terminfo package with xo/terminfo
    #​20446

  • [cli/display] Use the passed through writer in ShowProgressOutput instead of loading a new terminfo

v3.192.0

Compare Source

Features
  • [cli/state] Add pulumi state taint/untaint commands to force replacement of resources upon next update
    #​20380

  • [sdk/nodejs] Add previewDestroy to allow dry-runs of destroy commands
    #​20371

Bug Fixes
  • [engine] Fix a bug causing hooks to never pass correctly to remote Go components
    #​20390

  • [sdk/go] Fix source position information
    #​20351

  • [sdk/nodejs] Fix function serialisation that contains minified classes
    #​19345

  • [sdkgen/nodejs] Limit @​types packages used during local SDK generation
    #​20387

  • [sdk/python] Set ThreadPoolExecutor max_workers to parallelism * 4
    #​20362

  • [sdk/python] Handle -v flag passed to policy packs
    #​20373

  • [sdk/python] Forward errors raised in callbacks to the caller
    #​20381

Miscellaneous
  • [cli] Log stack trace when interrupted when using verbose logging
    #​20364

  • [cli] Print the location of the log file when running with the verbose flag
    #​20365

  • [sdk/python] Remove custom typing stubs
    #​20384

v3.191.0

Compare Source

Features
  • [cli] Document the PULUMI_ENABLE_STREAMING_JSON_PREVIEW envvar.
    #​20328
Bug Fixes
  • [engine] Check providers returning 'version' or '__internal' in their inputs
    #​20313

  • [engine] Fix a panic with refresh --run-program
    #​20337

  • [engine] Fix an infinite loop from passing unordered resources to the dependency system when using --refresh

  • [programgen] Emit warnings instead of errors in non-strict mode when binding resource blocks
    #​20347

  • [programgen] Simplify range value types when it is derived from object of objects and warn on unknown properties
    #​20345

  • [programgen] Warn instead of erroring out when traversing a NoneType in PCL
    #​20342

  • [cli/display] Escape non-graphic characters in URNs
    #​20295

  • [cli/import] Disambiguate duplicate resource names by their types when importing
    #​20348

  • [cli/new] Don't prompt for ai or template when passing --yes
    #​20256

Miscellaneous
  • [cli] Log version and CLI metadata
    #​20334

  • [cli/package] Pass ParameterizeParameters to SchemaFromSchemaSource
    #​20324

v3.190.0

Compare Source

Features
  • [engine] Don't error on ignoreChanges paths that are missing old data, there is nothing to ignore in those cases and we just use the new data
    #​20278
Bug Fixes
  • [cli] Fix destroy --exclude-protected --remove returning an error for empty stacks that could safely be removed
    #​20283

  • [cli] Fix pulumi template publish failing with relative paths by normalizing to absolute paths before archive creation
    #​20301

  • [cli/import] Use mapped name instead of logical name for resource references during import code generation
    #​20300

  • [pkg] Make TypeScript code generation use 'declare' keyword instead of definite assertion operator, to avoid setting all fields to undefined when targeting environments new enough
    #​20261

  • [sdkgen/nodejs] Make TypeScript a full dependency of local SDKs
    #​20272

Miscellaneous
  • [build] Updates protobuf and grpc to v5, bumping dependencies in the Go, Node.js, and Python SDKs
    #​19588

  • [build] Update latest Go version to 1.25
    #​20284

  • [sdkgen/nodejs] Target ES2020 for generated SDKs
    #​20276

v3.189.0

Compare Source

Features
  • [sdk] Remove CacheMS from CLIVersionResponse
    #​20264

  • [sdk/go] Calculate PluginInfo.Size on demand
    #​20241

  • [auto/python] Surface json option to pulumi preview calls in Python when using the pulumi.automation package.
    #​20233

Bug Fixes
  • [cli/package] Fix incorrect console URLs being displayed after publishing a policy
    #​20255

  • [engine] Fix race when reading plugin stdout
    #​20242

  • [sdk/nodejs] Fix component providers when using pnpm
    #​20253

Miscellaneous
  • [pkg] Make TypeScript code generation use nullish coalesce operator for required property checks, as well as state and args accessing whenever sensible

  • [sdk/nodejs] Fix swapped stderr/stdout callback comments in PreviewOptions interface
    #​20250

  • [sdkgen] Don’t create empty maps for language specific overrides
    #​20237

v3.188.0

Compare Source

Features
  • [cli] Add --remove-backups flag to pulumi stack rm for DIY backends
    #​20203
Bug Fixes
  • [cli] Fix cancellation when running via some CLI wrapper tools
    #​20195

  • [cli] Fix concurrent read/write during plugin downloads
    #​20223

  • [cli] Restore terminal mode on panic
    #​20224

  • [engine] Fix panic in refreshes due to concurrent map writes
    #​20206

  • [sdkgen] Warn about refs of the form "#/resources/pulumi:providers:"
    #​20192

  • [cli/display] Show changed outputs in preview
    #​20161

  • [cli/engine] Make --exclude correctly handle wildcards in all cases
    #​20158

  • [sdk/go] Fix running against old CLI versions without SignalAndWaitForShutdown
    #​20212

  • [sdk/python] Fix dependency installation in uv workspaces
    #​20218

Miscellaneous

v3.187.0

Compare Source

Features
  • [cli] Support for writing v4 checkpoints/deployments
    #​20159

  • [cli] Add support for qualified registry template names in pulumi new
    #​20138

  • [cli/import] Enable pulumi import to always --generate-resources when converting --from state files
    #​20178

  • [yaml] Allow config values to be parsed with type object
    #​20132

  • [auto/python] Allow for on_error callbacks in commands to capture stderr incrementally
    #​20019

  • [sdk/nodejs] Add option of Bun as a package manager
    #​18412

  • [sdk/nodejs] Copy getRootDirectory to the pulumi module
    #​20173

  • [sdk/python] Copy get_root_directory to the pulumi module
    #​20172

Bug Fixes
  • [cli] Fix un-taring registry-backed templates which come in .tar.gz format
    #​20135

  • [cli] Stop passing Accept: application/x-tar to registry template download URLs to avoid signature mismatch
    #​20133

  • [engine] Fix a panic with up --refresh --run-program and resource replacements
    #​20147

  • [engine] Untargeted resources in destroy now correctly register as same steps
    #​20061

  • [cli/engine] Fix hang when waiting for program that would never complete
    #​20153

  • [sdk/nodejs] Fix delete hooks in inline automation API programs
    #​20143

  • [sdk/python] Set features inside construct
    #​20141

Miscellaneous
  • [sdk/nodejs] Bump TypeScript target to ES2020 for plugins and policy packs
    #​20148

v3.186.0

Compare Source

Features
  • [engine] Send Cancel message to language runtime plugins on engine shutdown
    #​20007

  • [engine] Pass stack tags to policy plugins on startup
    #​20084

  • [yaml] Expose object as a possible config type in preparation for pulumi-yaml support
    #​20129

Bug Fixes
  • [cli/engine] --exclude and --exclude-protected flags now work together correctly for destroy commands
    #​20120

  • [engine] Fix a datarace in the engine event system
    #​20105

  • [engine] Fix a panic in the engine when running up --refresh --run-program and finding a deleted resource

  • [sdk/nodejs] Avoid "Cannot convert object to primitive value" error when running into type errors
    #​20092

  • [sdk/nodejs] Don’t use automatic ESM mode when —import or —require is set
    #​20091

  • [sdk/nodejs] Fix callback server hang & delete hooks in Node.js
    #​20109

  • [sdk/nodejs] Don’t report leaked promises when we exit abnormally
    #​20128

  • [cli/package] Force new style Go modules to be written out when using package add
    #​20011

  • [sdk/python] Run uv sync on uv command
    #​20117

Miscellaneous

v3.185.0

Compare Source

Features
  • [cli/{install,package}] Allow using pulumi package add with registry identifiers
    #​19928
Bug Fixes
  • [engine] Fix a snapshot integrity issue with destroy --run-program and resource reads
    #​20078

  • [sdkgen/python] Remove unnecessary import copy
    #​20089

  • [sdkgen/python] Support properties named "builtins"
    #​20085


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@pulumi/pulumi](https://github.com/pulumi/pulumi) ([source](https://github.com/pulumi/pulumi/tree/HEAD/sdk/nodejs)) | [`3.184.0` → `3.246.0`](https://renovatebot.com/diffs/npm/@pulumi%2fpulumi/3.184.0/3.246.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@pulumi%2fpulumi/3.246.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@pulumi%2fpulumi/3.184.0/3.246.0?slim=true) | --- ### Release Notes <details> <summary>pulumi/pulumi (@&#8203;pulumi/pulumi)</summary> ### [`v3.246.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32460-2026-06-11) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.245.0...v3.246.0) ##### Bug Fixes - \[backend/diy] Fix backwards incompatible gocloud.dev changes [#&#8203;23525](https://github.com/pulumi/pulumi/pull/23525) ##### Features - \[cli] Add `pulumi logs ls` to list automatic log files [#&#8203;23449](https://github.com/pulumi/pulumi/pull/23449) - \[cli] Add `pulumi logs rm` to remove automatic log files - \[cli] Include the list of affected resources (urn, type, name, op, parent) in `--output json` for `preview`, `up`, `destroy`, and `refresh` - \[cli] Support Pulumi projects without a runtime across CLI operations and Automation API project settings [#&#8203;23489](https://github.com/pulumi/pulumi/pull/23489) ##### Improvements - \[cli] Support Ctrl+Z to suspend a running `pulumi neo` session and restore the transcript on resume with `fg` [#https://github.com/pulumi/pulumi/issues/23394](https://github.com/pulumi/pulumi/pull/https://github.com/pulumi/pulumi/issues/23394) - \[cli] Remove the experimental `pulumi ai web` command [#&#8203;23517](https://github.com/pulumi/pulumi/pull/23517) - \[cli/cloud] Improve the interactive `pulumi login` prompt wording and coloring [#&#8203;23417](https://github.com/pulumi/pulumi/pull/23417) - \[cli/convert] Resolve provider plugins through the Pulumi Registry when converting from a third-party source [#&#8203;23490](https://github.com/pulumi/pulumi/pull/23490) ##### Features - \[cli/do] Add a `--stateless` flag to `pulumi do`. `create`, `patch`, and `delete` now require `--stateless` for the existing direct-provider behavior; the default will switch to a stateful (engine-driven) implementation in a future release - \[cli/env] Support ephemeral agent auth instructions for ESC API unauthorized errors in detected agent sessions [#&#8203;23402](https://github.com/pulumi/pulumi/pull/23402) ##### Bug Fixes - \[cli/neo] The `pulumi neo` TUI now adapts its colors to the terminal background instead of hardcoding a dark scheme [#&#8203;23333](https://github.com/pulumi/pulumi/pull/23333) - \[cli/neo] Increase the `pulumi neo` task-creation timeout so backend cold starts no longer fail [#&#8203;23444](https://github.com/pulumi/pulumi/pull/23444) - \[cli/neo] Ensure pulumi neo resolves the same Pulumi access token as pulumi preview when running in-process preview and up operations [#&#8203;23452](https://github.com/pulumi/pulumi/pull/23452) ##### Improvements - \[cli/neo] Treat affirmative replies such as "ok", "approve" and "go ahead" to `pulumi neo` approval prompts as approvals [#&#8203;23450](https://github.com/pulumi/pulumi/pull/23450) ##### Bug Fixes - \[pcl] Recursively fill schema-declared output fields on resources, so PCL programs that traverse into an optional inner field of a nested output object no longer fail at runtime with an "unsupported attribute" error [#&#8203;23458](https://github.com/pulumi/pulumi/pull/23458) - \[pcl] Resolve config variables whose default value is derived from an invoke to the invoke's result instead of an unknown value [#&#8203;23494](https://github.com/pulumi/pulumi/pull/23494) - \[programgen/go] double-wrapping of plain values passed to input types when generating Go programs [#&#8203;23418](https://github.com/pulumi/pulumi/pull/23418) - \[programgen/go] Fix Go program generation to no longer produce `**T` when an output traversal lands on an optional struct field, and to emit the correct `pulumi.<T>ArrayOutput` cast for traversals to slice-typed fields [#&#8203;23458](https://github.com/pulumi/pulumi/pull/23458) ##### Features - \[sdk] Add a `read` field to `customTimeouts` so users can configure a timeout for resource read operations [#&#8203;23459](https://github.com/pulumi/pulumi/pull/23459) ##### Bug Fixes - \[sdk] Reject tar entries with path traversal components when extracting archives [#&#8203;23485](https://github.com/pulumi/pulumi/pull/23485) - \[sdk/go] Applying a transformation to a resource no longer drops the resource's parent in the `RegisterResource` call [#&#8203;14826](https://github.com/pulumi/pulumi/pull/14826) - \[sdk/nodejs] Fix local SDKs added with `pulumi package add` not being built when using pnpm 10.34.2 or newer ##### Miscellaneous - \[sdk/nodejs] Improve error logs when serialization fails [#&#8203;21901](https://github.com/pulumi/pulumi/pull/21901) ##### Bug Fixes - \[sdkgen] Validate schema names to not contain whitespace or control characters [#&#8203;23460](https://github.com/pulumi/pulumi/pull/23460) ##### Improvements - \[sdkgen] Allow provider objects to have string enumerations on their outputs [#&#8203;23461](https://github.com/pulumi/pulumi/pull/23461) ##### Bug Fixes - \[cli/auth] BREAKING: Delete all backend config when logging out [#&#8203;23358](https://github.com/pulumi/pulumi/pull/23358) ### [`v3.245.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32450-2026-06-04) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.244.0...v3.245.0) ##### Improvements - \[backend/diy] Update gocloud.dev to 0.46 and aws sdk to v2 [#&#8203;23421](https://github.com/pulumi/pulumi/pull/23421) - \[cli] Show download and unpack progress when installing provider plugins [#https://github.com/pulumi/pulumi/issues/23408](https://github.com/pulumi/pulumi/pull/https://github.com/pulumi/pulumi/issues/23408) - \[cli/do] Expose the selected stack's organization and short name to PCL input files when running `pulumi do` inside a project - \[cli/do] Suggest similar tokens when an unknown token is passed to `pulumi do` [#&#8203;23341](https://github.com/pulumi/pulumi/pull/23341) - \[cli/neo] Support up/down arrows to scroll through prompt history in `pulumi neo` [#&#8203;23425](https://github.com/pulumi/pulumi/pull/23425) ##### Bug Fixes - \[engine] Download the HCL language runtime on demand instead of bundling it [#&#8203;23356](https://github.com/pulumi/pulumi/pull/23356) ##### Miscellaneous - \[sdk/go] Remove "name" from plugin loading functions and require "Type" on Configure & DiffConfig calls [#&#8203;23363](https://github.com/pulumi/pulumi/pull/23363) ##### Bug Fixes - \[sdk/nodejs] Fix mergeOptions dropping onError hooks from ResourceOptions in the Node.js SDK - \[cli/auth] Delete shared temporary agent credentials when logging out ##### Improvements - \[cli/stack] Remame `pulumi stack init` to `new` [#&#8203;23422](https://github.com/pulumi/pulumi/pull/23422) ### [`v3.244.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32440-2026-05-28) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.243.0...v3.244.0) ##### Bug Fixes - \[cli/do] Fix top level flags like `--logtostderr` being recognized when using `pulumi do` [#&#8203;23355](https://github.com/pulumi/pulumi/pull/23355) - \[cli/install] Distinguish multiple packages with the same plugin - \[engine] Fix snapshot integrity issue with `up --refresh` - \[engine] Forward all provider errors to error hooks for retry [#&#8203;23347](https://github.com/pulumi/pulumi/pull/23347) - \[engine] Trace cancel RPCs sent to plugins during shutdown as children of the active operation instead of emitting separate root spans [#&#8203;23362](https://github.com/pulumi/pulumi/pull/23362) - \[sdk/python] Merge requirements.txt into pyproject.toml when using uv without a project section [#&#8203;23340](https://github.com/pulumi/pulumi/pull/23340) ### [`v3.243.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32430-2026-05-22) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.242.0...v3.243.0) ##### Features - \[cli] Make the `pulumi project new -y` command write a minimal project file with no template [#&#8203;22847](https://github.com/pulumi/pulumi/pull/22847) - \[cli] Allow coding agents to create claimable temporary accounts when not authenticated - \[cli] Suggest `pulumi neo` in `pulumi preview` and `pulumi up` diagnostics output [#&#8203;23326](https://github.com/pulumi/pulumi/pull/23326) - \[sdk] Add `List` to the Go `plugin.Provider` interface, wired to the streaming `ResourceProvider.List` RPC [#&#8203;23287](https://github.com/pulumi/pulumi/pull/23287) - \[sdkgen] Reserve the package names 'pulumi' and 'input' for internal use [#&#8203;23321](https://github.com/pulumi/pulumi/pull/23321) - \[cli/cloud] Prefer text/markdown over JSON in `pulumi api` when an endpoint produces both [#&#8203;22963](https://github.com/pulumi/pulumi/pull/22963) - \[cli/do] Add resource support to `pulumi do` [#&#8203;23215](https://github.com/pulumi/pulumi/pull/23215) - \[cli/neo] Pressing Esc in `pulumi neo` now clears the input box when it has text; with an empty box, Esc still cancels the agent's current turn [#&#8203;23299](https://github.com/pulumi/pulumi/pull/23299) - \[cli/new] Alias `pulumi new` to `pulumi project new` [#&#8203;23265](https://github.com/pulumi/pulumi/pull/23265) ##### Bug Fixes - \[cli] Require `--yes` to confirm `pulumi deployment cancel`, `pulumi stack schedule remove`, `pulumi org webhook remove`, and `pulumi stack webhook remove` when running non-interactively [#&#8203;23264](https://github.com/pulumi/pulumi/pull/23264) - \[pcl] Don't silently ignore `...` in function arguments [#&#8203;23309](https://github.com/pulumi/pulumi/pull/23309) - \[sdkgen/nodejs] Cache package references per-deployment in generated SDKs to fix concurrent inline programs [#&#8203;23068](https://github.com/pulumi/pulumi/pull/23068) - \[backend/service] Error out when setting up journaler fails [#&#8203;22671](https://github.com/pulumi/pulumi/pull/22671) ##### Miscellaneous - \[cli/package] Update the `pulumi package add --agent` documentation hint to use `<type-token>` as the placeholder for the `/docs/...` URL [#&#8203;23294](https://github.com/pulumi/pulumi/pull/23294) - \[cli/plugin] Rename plugin ls to list and rm to remove [#&#8203;23291](https://github.com/pulumi/pulumi/pull/23291) ### [`v3.242.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32420-2026-05-19) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.241.0...v3.242.0) ##### Features - \[cli] Add a `pulumi` package for npx support - \[cli] Add the `pulumi org member edit` command [#&#8203;23235](https://github.com/pulumi/pulumi/pull/23235) - \[cli] Add the `pulumi org member remove` command [#&#8203;23237](https://github.com/pulumi/pulumi/pull/23237) - \[cli/cloud] Add `pulumi deployment get` to retrieve details for a specific deployment [#&#8203;23238](https://github.com/pulumi/pulumi/pull/23238) - \[cli/cloud] Add `pulumi insights account scan get <account> <scan-id>` to show the full workflow run for a single Insights scan [#&#8203;23255](https://github.com/pulumi/pulumi/pull/23255) - \[cli/cloud] Add `pulumi insights account scan list <account>` to discover recent scan IDs to feed into `pulumi insights account scan log` [#&#8203;23255](https://github.com/pulumi/pulumi/pull/23255) - \[cli/deployment] Add dedicated flags for each deployment setting [#&#8203;23236](https://github.com/pulumi/pulumi/pull/23236) - \[cli/do] Add the start of `pulumi do` [#&#8203;23176](https://github.com/pulumi/pulumi/pull/23176) - \[cli/neo] Add `--print`/`-p` to `pulumi neo` to run a single prompt non-interactively and print the agent's final response to stdout [#&#8203;23245](https://github.com/pulumi/pulumi/pull/23245) ##### Bug Fixes - \[cli/cloud] Fix `pulumi insights account scan log --all` to follow the server's pagination cursor through the end of the log, and render `--job/--step` mode as structured lines instead of an empty raw-string blob [#&#8203;23256](https://github.com/pulumi/pulumi/pull/23256) - \[sdk] Close gzip.Writer in archiveTarGZIP to produce valid tar.gz output [#&#8203;23240](https://github.com/pulumi/pulumi/pull/23240) - \[sdkgen/python] Fix usage of ArgsDict types in typed dictionaries [#&#8203;23253](https://github.com/pulumi/pulumi/pull/23253) ### [`v3.241.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32410-2026-05-18) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.239.0...v3.241.0) ##### Features - \[cli] Add `--output json` to `pulumi preview` for a structured JSON summary of the operation result [#&#8203;22927](https://github.com/pulumi/pulumi/pull/22927) - \[cli] Add `--output json` to `pulumi refresh` for a structured JSON summary of the operation result [#&#8203;22928](https://github.com/pulumi/pulumi/pull/22928) - \[cli] Add `--output json` to `pulumi destroy` for a structured JSON summary of the operation result [#&#8203;22875](https://github.com/pulumi/pulumi/pull/22875) - \[cli] Add `pulumi stack schedule get` to retrieve the configuration of a scheduled action [#&#8203;23153](https://github.com/pulumi/pulumi/pull/23153) - \[cli] Add `pulumi stack schedule list` to list all scheduled actions configured for a stack [#&#8203;23153](https://github.com/pulumi/pulumi/pull/23153) - \[cli] Add `pulumi stack schedule new` to create a raw, drift, or TTL deployment schedule for a stack [#&#8203;23153](https://github.com/pulumi/pulumi/pull/23153) - \[cli] Add `pulumi stack webhook delivery list` to list recent deliveries for a stack webhook [#&#8203;23116](https://github.com/pulumi/pulumi/pull/23116) - \[cli] Add `pulumi stack webhook delivery redeliver` to redeliver a webhook event [#&#8203;23118](https://github.com/pulumi/pulumi/pull/23118) - \[cli] Add `pulumi stack webhook edit` to update an existing stack webhook [#&#8203;23139](https://github.com/pulumi/pulumi/pull/23139) - \[cli] Add `pulumi stack webhook new` to create a new stack webhook [#&#8203;23101](https://github.com/pulumi/pulumi/pull/23101) - \[cli] Add `pulumi stack webhook remove` to delete a stack webhook [#&#8203;23102](https://github.com/pulumi/pulumi/pull/23102) - \[cli] Add `pulumi org webhook delivery list` to list recent deliveries for an organization webhook [#&#8203;23179](https://github.com/pulumi/pulumi/pull/23179) - \[cli] Add `pulumi org webhook edit` to update an organization webhook [#&#8203;23179](https://github.com/pulumi/pulumi/pull/23179) - \[cli] Add `pulumi org webhook list` to list all webhooks configured for an organization [#&#8203;23174](https://github.com/pulumi/pulumi/pull/23174) - \[cli] Add `pulumi org webhook new` to create a new organization webhook [#&#8203;23172](https://github.com/pulumi/pulumi/pull/23172) - \[cli] Add `pulumi org webhook ping` to send a test ping to an organization webhook [#&#8203;23179](https://github.com/pulumi/pulumi/pull/23179) - \[cli] Add `pulumi org webhook remove` to delete an organization webhook [#&#8203;23177](https://github.com/pulumi/pulumi/pull/23177) - \[cli] Add `pulumi stack drift list` to list drift detection runs for a stack [#&#8203;23159](https://github.com/pulumi/pulumi/pull/23159) - \[cli] Add `pulumi stack drift status` to show the drift detection status for a stack [#&#8203;23161](https://github.com/pulumi/pulumi/pull/23161) - \[cli] Add `pulumi stack schedule edit` to update an existing scheduled deployment action [#&#8203;23153](https://github.com/pulumi/pulumi/pull/23153) - \[cli] Add `pulumi stack schedule remove` to delete a scheduled deployment action [#&#8203;23153](https://github.com/pulumi/pulumi/pull/23153) - \[cli] Add `pulumi audit-log export` command [#&#8203;23212](https://github.com/pulumi/pulumi/pull/23212) - \[cli] Add `pulumi org audit-log list` [#&#8203;23211](https://github.com/pulumi/pulumi/pull/23211) - \[cli] Add `pulumi policy compliance list` to list compliance results grouped by entity [#&#8203;23209](https://github.com/pulumi/pulumi/pull/23209) - \[cli] Add `pulumi policy group new` command to allow creating new policy groups [#&#8203;23202](https://github.com/pulumi/pulumi/pull/23202) - \[cli] Add the `pulumi policy issue get` command [#&#8203;23200](https://github.com/pulumi/pulumi/pull/23200) - \[cli/cloud] Add `pulumi insights account list` to list Insights accounts in an organization [#&#8203;23091](https://github.com/pulumi/pulumi/pull/23091) - \[cli/cloud] Add `pulumi insights account new` to create a Pulumi Insights account [#&#8203;23093](https://github.com/pulumi/pulumi/pull/23093) - \[cli/cloud] Add `pulumi insights account scan log` to fetch log output for a Pulumi Insights scan [#&#8203;23092](https://github.com/pulumi/pulumi/pull/23092) - \[cli/cloud] Add `pulumi insights account scan` to trigger a resource discovery scan for an Insights account [#&#8203;23094](https://github.com/pulumi/pulumi/pull/23094) - \[cli/cloud] Implement `pulumi stack history events` to retrieve engine events for a Pulumi Cloud update [#&#8203;23109](https://github.com/pulumi/pulumi/pull/23109) - \[cli/cloud] Add `pulumi deployment cancel` to terminate an in-progress deployment [#&#8203;23164](https://github.com/pulumi/pulumi/pull/23164) - \[cli/cloud] Add `pulumi org member list` to list the members of an organization [#&#8203;23170](https://github.com/pulumi/pulumi/pull/23170) - \[cli/cloud] Add `pulumi org usage get` to fetch the resources-under-management summary for an organization [#&#8203;23166](https://github.com/pulumi/pulumi/pull/23166) - \[cli/cloud] Add `pulumi org role assign` to assign a custom role to a team [#&#8203;23117](https://github.com/pulumi/pulumi/pull/23117) - \[cli/cloud] Add `pulumi org role edit` to update a custom role's name, description, or permission tree [#&#8203;23117](https://github.com/pulumi/pulumi/pull/23117) - \[cli/cloud] Add `pulumi org role list` to list custom roles for an organization [#&#8203;23117](https://github.com/pulumi/pulumi/pull/23117) - \[cli/cloud] Add `pulumi org role new` to create a custom role from a permission descriptor JSON file [#&#8203;23117](https://github.com/pulumi/pulumi/pull/23117) - \[cli/cloud] Add `pulumi org role remove` to delete a custom role from an organization [#&#8203;23117](https://github.com/pulumi/pulumi/pull/23117) - \[cli/env] Update esc to v0.24.0 [#&#8203;23213](https://github.com/pulumi/pulumi/pull/23213) - \[cli/neo] Show tool call arguments and results in `pulumi neo` via a `ctrl+o` overlay [#&#8203;23075](https://github.com/pulumi/pulumi/pull/23075) - \[cli/neo] Multi-line input in `pulumi neo` - Enter sends, Shift+Enter / Alt+Enter / Ctrl+J / trailing `\` insert a newline [#&#8203;23151](https://github.com/pulumi/pulumi/pull/23151) - \[cli/neo] Make `pulumi neo` visible by default; the `PULUMI_EXPERIMENTAL` gate has been removed [#&#8203;23228](https://github.com/pulumi/pulumi/pull/23228) - \[cli/policy] Add `pulumi policy group edit` to edit policy groups [#&#8203;23206](https://github.com/pulumi/pulumi/pull/23206) - \[cli/policy] Add `pulumi policy group remove` command to remove policies [#&#8203;23208](https://github.com/pulumi/pulumi/pull/23208) - \[cli/policy] Add the `pulumi policy group get` command [#&#8203;23203](https://github.com/pulumi/pulumi/pull/23203) ##### Bug Fixes - \[cli] Add `pulumi policy issue list` command [#&#8203;23198](https://github.com/pulumi/pulumi/pull/23198) - \[cli] Fix `pulumi org role list` to send the `uxPurpose` query parameter the service requires [#&#8203;23231](https://github.com/pulumi/pulumi/pull/23231) - \[engine] Fix `pulumi import` dropping map entries whose value matched the enum member of a `Union<Input<Enum<T>>, ...>` element type [#&#8203;23190](https://github.com/pulumi/pulumi/pull/23190) - \[cli/cloud] Surface a clear error when `pulumi api --all` is used against an endpoint whose response is not paginatable, instead of silently emitting an empty array [#&#8203;23191](https://github.com/pulumi/pulumi/pull/23191) [#&#8203;23128](https://github.com/pulumi/pulumi/pull/23128) - \[cli/cloud] `pulumi deployment settings edit` no longer clears fields that the patch does not mention [#&#8203;23217](https://github.com/pulumi/pulumi/pull/23217) - \[cli/import] Generate PCL for asset and archive inputs when importing resources, instead of returning a "NYI" error [#&#8203;22938](https://github.com/pulumi/pulumi/pull/22938) - \[cli/import] Preserve asset/archive/resource-reference values inside map and array inputs, and HCL-escape map keys containing `${` or `%{` template sequences [#&#8203;23222](https://github.com/pulumi/pulumi/pull/23222) - \[cli/install] Hint at adding a `.git` / `_git` when VCS URL resolution fails [#&#8203;22831](https://github.com/pulumi/pulumi/pull/22831) - \[cli/neo] Transparently reconnect the Neo event stream after a transient network drop, resuming from the last seen event ID [#&#8203;23134](https://github.com/pulumi/pulumi/pull/23134) - \[cli/neo] Show `preparing` in the live preview/up block until the first resource arrives [#&#8203;23155](https://github.com/pulumi/pulumi/pull/23155) - \[cli/new] Support specific versions when using registry-backed templates with `pulumi new` [#&#8203;22909](https://github.com/pulumi/pulumi/pull/22909) ### [`v3.239.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32390-2026-05-14) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.238.0...v3.239.0) ##### Features - \[cli] Add `--output json` to `pulumi import` for a structured JSON summary of the operation result [#&#8203;22929](https://github.com/pulumi/pulumi/pull/22929) - \[cli] Add `pulumi stack get` to retrieve detailed information about a stack [#&#8203;23106](https://github.com/pulumi/pulumi/pull/23106) - \[cli] Add `pulumi stack webhook get` to inspect a single stack webhook [#&#8203;23088](https://github.com/pulumi/pulumi/pull/23088) - \[cli] Add `pulumi stack webhook ping` to send a test ping to a stack webhook - \[cli/cloud] Add `pulumi deployment list` to list deployment executions for a stack [#&#8203;23114](https://github.com/pulumi/pulumi/pull/23114) - \[sdkgen] Validate that schema names can't conflict with module paths [#&#8203;22956](https://github.com/pulumi/pulumi/pull/22956) ##### Bug Fixes - \[engine] Fix batch encrypt/decrypt errors being silently dropped [#&#8203;23149](https://github.com/pulumi/pulumi/pull/23149) - \[cli/cloud] Fix `pulumi api` help examples that referenced non-existent operation IDs and response fields [#&#8203;23125](https://github.com/pulumi/pulumi/pull/23125) ### [`v3.238.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32380-2026-05-13) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.237.0...v3.238.0) ##### Features - \[cli] Add a `--language` flag to `pulumi package add` to run outside a Pulumi project or plugin [#&#8203;22791](https://github.com/pulumi/pulumi/pull/22791) - \[cli] Add `--output json` to `pulumi up` for a structured JSON summary of the operation result [#&#8203;22870](https://github.com/pulumi/pulumi/pull/22870) - \[cli] Recommend `pulumi cloud api describe` in `pulumi cloud api --help` to verify operation parameters before calling [#&#8203;22881](https://github.com/pulumi/pulumi/pull/22881) - \[cli] Add `pulumi stack webhook list` to list all webhooks configured for a stack [#&#8203;23082](https://github.com/pulumi/pulumi/pull/23082) - \[cli/cloud] Rename `pulumi cloud api` to `pulumi api` [#&#8203;22970](https://github.com/pulumi/pulumi/pull/22970) - \[cli/cloud] Add `pulumi insights resource get` to look up a single resource discovered by Pulumi Insights [#&#8203;23077](https://github.com/pulumi/pulumi/pull/23077) - \[cli/cloud] Add `pulumi template list` to list registry-backed templates [#&#8203;23074](https://github.com/pulumi/pulumi/pull/23074) - \[cli/cloud] Rename the `--format` flag to `--output` on `pulumi api` and its subcommands [#&#8203;23072](https://github.com/pulumi/pulumi/pull/23072) - \[cli/cloud] Add `pulumi insights resource search` to search for resources discovered by Pulumi Insights [#&#8203;23087](https://github.com/pulumi/pulumi/pull/23087) - \[cli/engine] Add `--skip-plugin-pre-install` to skip up-front plugin installation - \[engine] Fail the deployment when an after hook fails [#&#8203;22935](https://github.com/pulumi/pulumi/pull/22935) - \[cli/neo] Render the agent's TODO list in the `pulumi neo` TUI [#&#8203;22864](https://github.com/pulumi/pulumi/pull/22864) - \[cli/neo] Add `--approval-mode` and `--permission-mode` flags to `pulumi neo`, with Ctrl+A and Ctrl+R hotkeys to switch modes mid-session [#&#8203;22950](https://github.com/pulumi/pulumi/pull/22950) - \[cli/package] When invoked by an AI coding agent, print `pulumi api` pointers after `pulumi package add` and `pulumi package gen-sdk` [#&#8203;22904](https://github.com/pulumi/pulumi/pull/22904) - \[pkg/testing] Recognize the `hcl` and `pcl` runtimes in `integration.ProgramTest` [#&#8203;23018](https://github.com/pulumi/pulumi/pull/23018) - \[pkg/testing] Add `l1-config-types-optional` conformance test for PCL's `optional` type constructor [#&#8203;23108](https://github.com/pulumi/pulumi/pull/23108) ##### Bug Fixes - \[backend/diy] Minify JSON persisted by the DIY backend for checkpoints, history, and stack tags [#&#8203;22245](https://github.com/pulumi/pulumi/pull/22245) - \[cli/import] Ignore property values that do not conform to the schema in maps [#&#8203;23076](https://github.com/pulumi/pulumi/pull/23076) - \[cli/import] Stop dropping map values whose element type is a union of Input-wrapped types during HCL2 import - \[cli/neo] Use the selected stack's organization when starting a `pulumi neo` task instead of the user's default organization [#&#8203;22951](https://github.com/pulumi/pulumi/pull/22951) - \[cli/neo] Include the failure reason in `pulumi_preview` and `pulumi_up` tool results when they fail, so the agent can react instead of seeing a blank error [#&#8203;22948](https://github.com/pulumi/pulumi/pull/22948) - \[cli/neo] Retry `pulumi neo` task creation without the attached stack when the backend rejects it with an "invalid entities" error [#&#8203;22945](https://github.com/pulumi/pulumi/pull/22945) - \[cli/neo] Surface the failure reason when a `filesystem` tool call fails, instead of returning an empty result to the agent [#&#8203;23019](https://github.com/pulumi/pulumi/pull/23019) - \[cli/package] Use `--output=markdown` (not the renamed-away `--format=markdown`) in the `pulumi api` pointers printed by `pulumi package add` and `pulumi package gen-sdk` [#&#8203;23098](https://github.com/pulumi/pulumi/pull/23098) - \[programgen/pcl] Stop reporting spurious circular references when an `ignoreChanges`, `hideDiffs`, `replaceOnChanges`, or `additionalSecretOutputs` entry shares a name with a top-level node [#&#8203;22931](https://github.com/pulumi/pulumi/pull/22931) - \[sdk/python] Speed up python program resolution by using a set instead of deque to track outputs [#&#8203;22946](https://github.com/pulumi/pulumi/pull/22946) ##### Miscellaneous - \[cli/neo] Tag Neo tasks created from the CLI with a `cli` source so the service can attribute their origin [#&#8203;23099](https://github.com/pulumi/pulumi/pull/23099) - \[sdk/nodejs] Add registerPackage helper to cache package references per deployment [#&#8203;23014](https://github.com/pulumi/pulumi/pull/23014) ### [`v3.237.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32370-2026-05-08) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.236.0...v3.237.0) ##### Features - \[cli] Include the running command name and detected AI agent (when present) in the User-Agent header on Pulumi Cloud API requests [#&#8203;22908](https://github.com/pulumi/pulumi/pull/22908) - \[engine] Include `result` on the summary engine event [#&#8203;22883](https://github.com/pulumi/pulumi/pull/22883) - \[sdkgen] Eagerly error on schemas with unconstructable types [#&#8203;22890](https://github.com/pulumi/pulumi/pull/22890) - \[cli/cloud] Auto-fill `lang` and `os` query parameters on `pulumi cloud api` GET/HEAD requests when the matched OpenAPI operation declares them and the caller hasn't supplied them [#&#8203;22726](https://github.com/pulumi/pulumi/pull/22726) - \[cli/package] Add `pulumi package new` to bootstrap a Pulumi package from a template [#&#8203;22837](https://github.com/pulumi/pulumi/pull/22837) ##### Bug Fixes - \[cli] Add blank-line gaps between `pulumi neo` TUI conversation blocks [#&#8203;22846](https://github.com/pulumi/pulumi/pull/22846) - \[cli/import] Preserve `__`-prefixed keys when generating PCL for imported resource state, so provider-defined payloads round-trip correctly [#&#8203;22856](https://github.com/pulumi/pulumi/pull/22856) - \[cli/neo] Render `ux__ask_user` clarifying questions as questions instead of approval prompts [#&#8203;22862](https://github.com/pulumi/pulumi/pull/22862) - \[cli/neo] Fix a panic when cancelling a `pulumi neo` session [#&#8203;22898](https://github.com/pulumi/pulumi/pull/22898) - \[cli/neo] Render every assistant message in the TUI scrollback so multi-turn commentary no longer disappears between tool calls - \[cli/neo] Return the bare stack name and canonical project name from `pulumi_preview` and `pulumi_up` tool results instead of echoing the raw input [#&#8203;22891](https://github.com/pulumi/pulumi/pull/22891) - \[codegen/pcl] Stop reporting spurious circular references when an `ignoreChanges`, `hideDiffs`, `replaceOnChanges`, or `additionalSecretOutputs` entry shares a name with a top-level node [#&#8203;22916](https://github.com/pulumi/pulumi/pull/22916) - \[programgen/pcl] Fix PCL binder panic when a conditional mixes a Promise-typed branch with a try() branch [#&#8203;22907](https://github.com/pulumi/pulumi/pull/22907) - \[sdk/python] Support `NotRequired`, `Required` and `total=False` in TypedDicts for component resource arg types [#&#8203;22858](https://github.com/pulumi/pulumi/pull/22858) ##### Miscellaneous - \[cli/cloud] Auto-fit `pulumi cloud api list` table to terminal width and replace the `tabular` table renderer with `go-pretty` [#&#8203;22874](https://github.com/pulumi/pulumi/pull/22874) - \[sdk/nodejs] Test on Node.js 26 and drop 20 [#&#8203;22872](https://github.com/pulumi/pulumi/pull/22872) ### [`v3.236.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32360-2026-05-06) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.235.0...v3.236.0) ### [`v3.235.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32350-2026-05-05) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.234.0...v3.235.0) ##### Features - \[cli] Add `pulumi logs decrypt` command for viewing logs [#&#8203;22523](https://github.com/pulumi/pulumi/pull/22523) - \[cli] Bundle the `hcl` language host (from pulumi-labs/pulumi-hcl) [#&#8203;22807](https://github.com/pulumi/pulumi/pull/22807) - \[cli] Automatically install the `hcl` converter from pulumi-labs/pulumi-hcl when running `pulumi convert --from hcl` [#&#8203;22816](https://github.com/pulumi/pulumi/pull/22816) - \[pcl] Add `read` blocks to PCL to read resources via ID and query instead of registering them [#&#8203;22641](https://github.com/pulumi/pulumi/pull/22641) - \[cli/cloud] Add `pulumi cloud api <op-or-path>` for calling any Pulumi Cloud API endpoint, with `--field`/`--header`/`--input`/`--body` flag handling, path template binding, content negotiation via `--format`, and `--dry-run` [#&#8203;22771](https://github.com/pulumi/pulumi/pull/22771) - \[cli/cloud] Add `--paginate` to `pulumi cloud api`: follow continuation cursors, accumulate items into a single JSON envelope, and surface progress events to stderr with `--emit-events` (page, complete, truncated, partial\_failure, cancelled). [#&#8203;22772](https://github.com/pulumi/pulumi/pull/22772) ##### Bug Fixes - \[cli] Fix the `pulumi neo` shell tool to honor the agent-supplied `timeout` and to terminate the whole process tree (and unblock cmd.Wait) when the deadline fires, so commands like `kubectl logs -f` no longer hang Neo indefinitely. [#&#8203;22820](https://github.com/pulumi/pulumi/pull/22820) - \[cli] Surface the error and exit when `pulumi neo` fails to create the underlying task, instead of leaving the TUI stuck in `Thinking…` [#&#8203;22825](https://github.com/pulumi/pulumi/pull/22825) - \[codegen/go] Correctly generate `[]pulumi.Asset` & `[]pulumi.Archive` [#&#8203;22827](https://github.com/pulumi/pulumi/pull/22827) - \[cli/neo] Exit cleanly when the user presses Ctrl+C twice in `pulumi neo` instead of hanging until a third press [#&#8203;22821](https://github.com/pulumi/pulumi/pull/22821) - \[engine] The engine now caches schemas at `PULUMI_HOME/schemas`, and will cache for parameterised packages as well [#&#8203;22812](https://github.com/pulumi/pulumi/pull/22812) - \[sdk-python] Preserve `__`-prefixed keys (e.g. `__type` discriminators) across RPC deserialization, matching the behavior of the other language SDKs [#&#8203;22834](https://github.com/pulumi/pulumi/pull/22834) - \[programgen/{nodejs,python}] Fix programgen to emit the right `length` check for string length [#&#8203;22802](https://github.com/pulumi/pulumi/pull/22802) ##### Miscellaneous - \[cli] Replace the Pulumipus mascot in the `pulumi neo` welcome banner with new Neo-branded ASCII art. [#&#8203;22817](https://github.com/pulumi/pulumi/pull/22817) ### [`v3.234.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32340-2026-05-01) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.233.0...v3.234.0) ##### Features - \[cli/cloud] Add `pulumi cloud api describe` for inspecting the parameters, request body, and response schema of any Pulumi Cloud API operation, with text, markdown, and JSON output [#&#8203;22770](https://github.com/pulumi/pulumi/pull/22770) - \[cli/cloud] Add `pulumi cloud api list` for browsing every endpoint exposed by the Pulumi Cloud OpenAPI spec, with table and JSON output [#&#8203;22769](https://github.com/pulumi/pulumi/pull/22769) ##### Bug Fixes - \[engine] Revert changes to property path parsing that resulted in errors for currently valid paths ### [`v3.233.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32330-2026-04-30) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.232.0...v3.233.0) ##### Features - \[auto/python] Expose the auto-generated Pulumi CLI interface as `workspace.cli_api` [#&#8203;22638](https://github.com/pulumi/pulumi/pull/22638) - \[cli] Add encrypted logging to \~/.pulumi/logs; use the PULUMI\_ENABLE\_AUTOMATIC\_LOGGING feature flag to turn it on [#&#8203;22494](https://github.com/pulumi/pulumi/pull/22494) - \[cli] Implement the `filesystem__grep` and `filesystem__content_replace` local tools for `pulumi neo`. `grep` runs a regex search across files in the project root with an optional `include` glob filter and returns results in `path:lineno: line` form. `content_replace` performs a literal multi-file search-and-replace with a `file_pattern` glob and `dry_run` preview mode. Both tools skip binary files, hidden directories, and `node_modules`, and reject paths outside the project root. Their input schemas match the cloud-side tool definitions. [#&#8203;22655](https://github.com/pulumi/pulumi/pull/22655) - \[cli] Add `pulumi_preview` and `pulumi_up` as local tools for the experimental `pulumi neo` agent. The Neo TUI renders a persistent bordered block for each operation that streams changed resources and diagnostics as the engine runs and finalizes with a summary of the op counts. Hidden behind PULUMI\_EXPERIMENTAL. [#&#8203;22697](https://github.com/pulumi/pulumi/pull/22697) - \[engine] Add `List` to the provider protocol and schema [#&#8203;22693](https://github.com/pulumi/pulumi/pull/22693) ##### Bug Fixes - \[engine] Return a clear error when two installed plugins claim the same default provider package name (for example, a native `scaleway` provider alongside a `terraform-provider` bridge parameterized as `scaleway`) instead of panicking with "Should not have seen an older plugin if sorting is correct!" [#&#8203;22679](https://github.com/pulumi/pulumi/pull/22679) - \[programgen] Do not wrap a `call(...)` on a method whose return type is marked plain in an Output. Previously PCL bound every method call's return type as `Output<T>`, which caused downstream program-gen to emit broken `.apply(...)`/`.ApplyT(...)` traversals against plain struct returns (e.g. methods with `liftSingleValueMethodReturns=true` or `ReturnTypePlain=true`). [#&#8203;22696](https://github.com/pulumi/pulumi/pull/22696) - \[backend/diy] When using a backend url containing creds (e.g. PostgreSQL conn string), mask user:pass as in lock-related error messages [#&#8203;22701](https://github.com/pulumi/pulumi/pull/22701) - \[codegen/go] Generate unqualified `Provider` references for the package's own provider resource. Previously the Go codegen always emitted `<pkg>.Provider` even when the reference appeared inside `<pkg>` itself, producing identifiers that would not compile. Affects generated code for method return types (and other schema positions) that reference `pulumi:providers:<pkg>`. [#&#8203;22696](https://github.com/pulumi/pulumi/pull/22696) - \[codegen/nodejs] Generate unqualified `Provider` references for the package's own provider resource when emitting TypeScript code inside that package. Previously the generator always qualified the name as `<pkg>.Provider`, which does not resolve when no `<pkg>` namespace import is in scope. [#&#8203;22696](https://github.com/pulumi/pulumi/pull/22696) - \[codegen/nodejs] Import the correct class name for a provider resource. Imports for `pulumi:providers:<pkg>` used the title-cased package name instead of `Provider`, producing a phantom identifier that clashed with the containing package's component/resource classes. [#&#8203;22696](https://github.com/pulumi/pulumi/pull/22696) - \[programgen/nodejs] Emit `await` for `call(...)` invocations of methods whose return type is marked plain, and force the generated program into an async `export = async () => ...` wrapper whenever such a call is present. The Node SDK returns `Promise<T>` for plain methods; previously program-gen used the result directly, which did not match its runtime type. [#&#8203;22696](https://github.com/pulumi/pulumi/pull/22696) - \[codegen/python] Avoid a self-import (`import pulumi_<pkg>` inside `pulumi_<pkg>/<module>.py`) when referencing the package's own provider resource. Python referenced the Provider as `pulumi_<pkg>.Provider` even inside that package, which caused a circular import at runtime. [#&#8203;22696](https://github.com/pulumi/pulumi/pull/22696) - \[sdk/python] Reduce internal `Output[T]` data to a single `asyncio.Future` [#&#8203;22661](https://github.com/pulumi/pulumi/pull/22661) - \[sdkgen/{nodejs,python}] Generate optional input types that accept undefined/None values [#&#8203;22552](https://github.com/pulumi/pulumi/pull/22552) ##### Miscellaneous - \[auto/go] Drop the "With" prefix from generated option helpers so they match the naming of the existing optXxx packages [#&#8203;22682](https://github.com/pulumi/pulumi/pull/22682) ### [`v3.232.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32320-2026-04-22) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.231.0...v3.232.0) ##### Features - \[cli] Add an experimental `pulumi neo` command that creates a Pulumi Neo agent task in CLI tool-execution mode and runs the local tool loop. Filesystem and shell tool calls issued by the agent run on the user's machine in their working directory; the interactive chat continues to happen in the Pulumi Console at the URL the command prints. Hidden behind PULUMI\_EXPERIMENTAL. [#&#8203;22473](https://github.com/pulumi/pulumi/pull/22473) - \[cli] Add support for handling user approval requests in the `pulumi neo` terminal UI. When the agent requests confirmation for a sensitive action, the TUI prompts the user and forwards their response back to the Pulumi Console. Hidden behind PULUMI\_EXPERIMENTAL. [#&#8203;22589](https://github.com/pulumi/pulumi/pull/22589) - \[cli] Add an interactive terminal UI for `pulumi neo` built with bubbletea, rendering agent messages, tool calls, and streaming output in the terminal alongside the Pulumi Console session. Hidden behind PULUMI\_EXPERIMENTAL. [#&#8203;22570](https://github.com/pulumi/pulumi/pull/22570) - \[cli] Switch logging library from glog to slog. BREAKING: any `if logging.V(x) {` need to be changed to `if logging.V(x).Enabled()` [#&#8203;22548](https://github.com/pulumi/pulumi/pull/22548) - \[cli] Add a plan-mode toggle to the `pulumi neo` TUI, bound to Shift+Tab. When plan mode is on, Neo explores and asks questions without writing files, running `pulumi up`, or opening PRs, and surfaces an approved plan via a dedicated approval gate. The toggle must be set before the first message (plan mode is task-level on the wire); approving the proposed plan exits plan mode automatically. [#&#8203;22634](https://github.com/pulumi/pulumi/pull/22634) - \[cli] The `pulumi neo` TUI now drives its "thinking" spinner off a single declarative rule (the spinner stays on until a final event — final assistant message, approval request, cancellation, or error — lands), so the indicator no longer flickers off when the agent hands off tool calls to the CLI or when streaming text arrives between tools. Press `Esc` during a turn to ask the agent to cancel; the label switches to "Cancelling..." until the backend acknowledges. [#&#8203;22637](https://github.com/pulumi/pulumi/pull/22637) - \[cli] `pulumi neo` now executes the `edit` filesystem tool locally, matching the schema and response wording of the upstream mcp-claude-code tool so the agent sees identical output whether the call ran on Cloud or CLI. `edit` performs exact-string replacement with occurrence-count validation, and creates a new file when the target is missing and `old_string` is empty. [#&#8203;22654](https://github.com/pulumi/pulumi/pull/22654) ##### Bug Fixes - \[cli] Render user messages in the `pulumi neo` TUI as soon as they're submitted instead of waiting for the Pulumi Cloud event stream to echo them back. The initial prompt passed on the command line also appears in the transcript at startup. Self-echoes from the server are de-duplicated; user input that originated from another client (e.g. the web UI on the same task) still renders. [#&#8203;22629](https://github.com/pulumi/pulumi/pull/22629) - \[cli] Wrap warnings, errors, and user-message bubbles to the terminal width in the `pulumi neo` TUI. Previously these blocks rendered as single long lines that were clipped at the right edge of the viewport. On resize, all width-dependent transcript blocks (user messages, warnings, errors, assistant messages) now reflow to the new terminal width. [#&#8203;22635](https://github.com/pulumi/pulumi/pull/22635) - \[cli/policy] Fix `policy ls` to use the default org name, not username [#&#8203;22656](https://github.com/pulumi/pulumi/pull/22656) - \[engine] Fix provider registry race condition in parallel delete-before-replace [#&#8203;21487](https://github.com/pulumi/pulumi/pull/21487) - \[engine] Signal providers to cancel before closing them during replacement - \[sdkgen] Error on 'id' in state inputs [#&#8203;22636](https://github.com/pulumi/pulumi/pull/22636) - \[programgen/python] Add necessary casts between types in generated programs [#&#8203;22567](https://github.com/pulumi/pulumi/pull/22567) - \[sdkgen/go] Fix caching of package references to be per-deployment not per-process [#&#8203;22170](https://github.com/pulumi/pulumi/pull/22170) ##### Miscellaneous - \[java] Upgrade java to v1.25.0 [#&#8203;22673](https://github.com/pulumi/pulumi/pull/22673) - \[auto/go] Generate command methods for the Go Automation API codegen [#&#8203;22612](https://github.com/pulumi/pulumi/pull/22612) - \[sdk] Clarify docs on the `remote` parameter of `ComponentResource` / `Resource` in the Node and Python SDKs [#&#8203;22603](https://github.com/pulumi/pulumi/pull/22603) - \[sdk/dotnet] Upgrade dotnet to v3.103.1 [#&#8203;22676](https://github.com/pulumi/pulumi/pull/22676) - \[yaml] Upgrade yaml to v1.32.0 [#&#8203;22674](https://github.com/pulumi/pulumi/pull/22674) ### [`v3.231.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32310-2026-04-16) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.230.0...v3.231.0) ##### Features - \[cli] Auto-detect Mercurial repository metadata for `pulumi up` / `pulumi preview` updates, mirroring existing Git support [#&#8203;22618](https://github.com/pulumi/pulumi/pull/22618) - \[engine] Send Cancel RPC to plugins on host close for graceful shutdown [#&#8203;22569](https://github.com/pulumi/pulumi/pull/22569) - \[engine] Pass resource options to hooks through the engine [#&#8203;22582](https://github.com/pulumi/pulumi/pull/22582) - \[engine] Add GetDeploymentInfo to the resource monitor service - \[auto/go] Add `New` command to Automation API [#&#8203;22439](https://github.com/pulumi/pulumi/pull/22439) - \[auto/{go,nodejs,python}] Add --diff to automation api for destroy [#&#8203;22563](https://github.com/pulumi/pulumi/pull/22563) - \[auto/python] Add `new` command to Automation API [#&#8203;22439](https://github.com/pulumi/pulumi/pull/22439) - \[pcl] Support for resource hooks in PCL [#&#8203;22365](https://github.com/pulumi/pulumi/pull/22365) - \[sdk-nodejs] Warn when a non-ComponentResource class is passed in the explicit `components` list to `componentProviderHost` [#&#8203;22619](https://github.com/pulumi/pulumi/pull/22619) - \[sdk-python] Warn when a non-ComponentResource class is passed in the explicit `components` list to `component_provider_host` [#&#8203;22619](https://github.com/pulumi/pulumi/pull/22619) - \[cli/import] Add support for providers to be defined in the same import file as their users [#&#8203;21671](https://github.com/pulumi/pulumi/pull/21671) - \[cli/policy] ESC environment support for local policy packs [#&#8203;22495](https://github.com/pulumi/pulumi/pull/22495) - \[sdk/nodejs] Support package.yaml when using pnpm [#&#8203;22491](https://github.com/pulumi/pulumi/pull/22491) - \[sdk/python] Add function decorator variants for resource and error hooks [#&#8203;22519](https://github.com/pulumi/pulumi/pull/22519) ##### Bug Fixes - \[auto/{nodejs,python}] Support --run-program for inline programs with preview\_refresh/destroy - \[backend/diy] Remove state lock for destroy and import with preview only for diy backend [#&#8203;22561](https://github.com/pulumi/pulumi/pull/22561) - \[engine] Fix snapshot integrity error with component/provider resources in refresh --run-program [#&#8203;21817](https://github.com/pulumi/pulumi/pull/21817) - \[pcl] Type list and tuple indices as integers not numbers [#&#8203;22592](https://github.com/pulumi/pulumi/pull/22592) - \[pcl] Builtin functions element and range take int parameters not numbers [#&#8203;22597](https://github.com/pulumi/pulumi/pull/22597) - \[programgen/{go,nodejs,python}] Fix some cases of name conflicts in program gen not being handled correctly [#&#8203;22556](https://github.com/pulumi/pulumi/pull/22556) - \[programgen/nodejs] Add necessary casts between types in generated programs [#&#8203;22557](https://github.com/pulumi/pulumi/pull/22557) - \[programgen/{nodejs,python}] Fix imports of camelCase modules [#&#8203;22536](https://github.com/pulumi/pulumi/pull/22536) - \[sdk/python] Support Input\[Optional\[T]] in Python runtime type unwrapping [#&#8203;22553](https://github.com/pulumi/pulumi/pull/22553) - \[sdkgen] Warn about modules nested under the index module which are not supported [#&#8203;22531](https://github.com/pulumi/pulumi/pull/22531) ##### Miscellaneous - \[java] Upgrade java to v1.24.0 [#&#8203;22615](https://github.com/pulumi/pulumi/pull/22615) - \[yaml] Upgrade yaml to v1.31.1 [#&#8203;22610](https://github.com/pulumi/pulumi/pull/22610) - \[sdk/dotnet] Upgrade dotnet to v3.103.0 [#&#8203;22614](https://github.com/pulumi/pulumi/pull/22614) - \[sdk/nodejs] Replace `got` by `fetch` [#&#8203;22533](https://github.com/pulumi/pulumi/pull/22533) ### [`v3.230.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32300-2026-04-08) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.229.0...v3.230.0) ##### Features - \[cli] Detect AI agents and send in update metadata [#&#8203;22497](https://github.com/pulumi/pulumi/pull/22497) - \[auto/nodejs] Add "org" commands (get-default, set-default, search, search ai) to the auto-generated interface [#&#8203;22395](https://github.com/pulumi/pulumi/pull/22395) - \[auto/nodejs] Add "new" command to the auto-generated interface [#&#8203;22421](https://github.com/pulumi/pulumi/pull/22421) - \[sdk/{nodejs,python}] Add Cancel handler to Python & Node.js providers [#&#8203;22516](https://github.com/pulumi/pulumi/pull/22516) - \[cli/policy] Add ESC environment resolution for policy packs [#&#8203;22425](https://github.com/pulumi/pulumi/pull/22425) ##### Bug Fixes - \[auto/go] Insert --non-interactive flag before "--" positional separator to avoid misinterpretation as a positional argument [#&#8203;22462](https://github.com/pulumi/pulumi/pull/22462) - \[ci] Add code coverage collection for Node.js automation tools tests [#&#8203;22412](https://github.com/pulumi/pulumi/pull/22412) - \[pcl] Allow key indexing into a map of resources created by range [#&#8203;22498](https://github.com/pulumi/pulumi/pull/22498) - \[programgen/go] Fix an issue with formatted index modules not importing correctly - \[cli/state] Check for Pulumi.yaml projects and `backend` option in `state upgrade` [#&#8203;22483](https://github.com/pulumi/pulumi/pull/22483) - \[sdk/go] Fix Go program generation for ternary expressions inside apply callbacks, add Go predeclared identifiers to reserved words, handle optional list types in union type codegen, and fix unmarshalOutput for known outputs with null elements. [#&#8203;22460](https://github.com/pulumi/pulumi/pull/22460) - \[sdk/nodejs] Fix inherited input properties missing from component schema when args interface extends another interface [#&#8203;22446](https://github.com/pulumi/pulumi/pull/22446) - \[sdk/python] Fix inherited input properties missing from component schema when args class inherits from a base class [#&#8203;22484](https://github.com/pulumi/pulumi/pull/22484) ##### Miscellaneous - \[java] Upgrade java to v1.23.0 - \[sdk/dotnet] Upgrade dotnet to v3.102.1 - \[yaml] Upgrade to v1.31.0 [#&#8203;22501](https://github.com/pulumi/pulumi/pull/22501) - \[programgen/{dotnet,go,java,nodejs,pcl,python,yaml}] Remove `mimeType` & `readDir` from PCL [#&#8203;22449](https://github.com/pulumi/pulumi/pull/22449) ### [`v3.229.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32290-2026-04-02) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.228.0...v3.229.0) ##### Features - \[auto/python] Add org get-default and set-default commands to Automation API - \[backend/diy] Avoid unnecessary S3 bucket HEAD calls to improve performance [#&#8203;22373](https://github.com/pulumi/pulumi/pull/22373) - \[cli] Allow TRACEPARENT to be set for CLI invocations, parenting the pulumi spans under an existing parent span [#&#8203;22369](https://github.com/pulumi/pulumi/pull/22369) - \[cli/display] Add `--urns` flag to display full resource URNs instead of short names in preview, up, destroy, refresh, import, and watch commands [#&#8203;22007](https://github.com/pulumi/pulumi/pull/22007) - \[pcl] Type integer literals as integers rather than numbers in PCL [#&#8203;22268](https://github.com/pulumi/pulumi/pull/22268) - \[pcl] Support parameterized providers in PCL [#&#8203;22251](https://github.com/pulumi/pulumi/pull/22251) - \[protobuf] Add RunPlugin2 bidirectional streaming RPC to LanguageRuntime proto [#&#8203;22389](https://github.com/pulumi/pulumi/pull/22389) - \[yaml] Update YAML runtime to 1.30.2 [#&#8203;22426](https://github.com/pulumi/pulumi/pull/22426) - \[sdk/go] Add org get-default and set-default commands to Automation API - \[sdk/nodejs] Modernize generated tsconfig.json to align with TypeScript defaults [#&#8203;22370](https://github.com/pulumi/pulumi/pull/22370) - \[cli/policy] Add a new `policy analyze` command to run a policy pack against existing state [#&#8203;22250](https://github.com/pulumi/pulumi/pull/22250) ##### Bug Fixes - \[backend/diy] Remove state lock for refresh --preview-only for diy backend [#&#8203;22385](https://github.com/pulumi/pulumi/pull/22385) - \[cli] Fix OTEL flushing on provider shutdown [#&#8203;22358](https://github.com/pulumi/pulumi/pull/22358) - \[cli/display] Fix deadlock in message renderer when cancelling an operation [#&#8203;22433](https://github.com/pulumi/pulumi/pull/22433) - \[engine] Fix `--include` and `--exclude` not working for program-based refresh (RefreshV2) [#&#8203;22404](https://github.com/pulumi/pulumi/pull/22404) - \[engine] Parallelize plugin cancellation in SignalCancellation [#&#8203;22431](https://github.com/pulumi/pulumi/pull/22431) - \[pcl] Fix looking up variables in parent scopes [#&#8203;22379](https://github.com/pulumi/pulumi/pull/22379) - \[pcl] Apply default values from resource schemas [#&#8203;22393](https://github.com/pulumi/pulumi/pull/22393) - \[sdk/{bun,go,nodejs,python}] Wire Cancel RPC to language host Run [#&#8203;22397](https://github.com/pulumi/pulumi/pull/22397) - \[sdk/nodejs] Allow TypeScript 6 as a peer dependency [#&#8203;22340](https://github.com/pulumi/pulumi/pull/22340) - \[sdk/nodejs] Fix closure serialization for \_\_importStar-wrapped modules [#&#8203;22388](https://github.com/pulumi/pulumi/pull/22388) - \[sdk/python] Cache type metadata and class references in Python SDK to reduce CPU overhead during serialization [#&#8203;22422](https://github.com/pulumi/pulumi/pull/22422) - \[sdk/python] Replace busy-wait polling in wait\_for\_rpcs with asyncio.wait [#&#8203;22411](https://github.com/pulumi/pulumi/pull/22411) ##### Miscellaneous - \[cli] Add update metadata to the otel root span [#&#8203;22357](https://github.com/pulumi/pulumi/pull/22357) - \[java] Update to v1.22.0 [#&#8203;22437](https://github.com/pulumi/pulumi/pull/22437) - \[sdk/nodejs] Use nodenext for moduleResolution and module [#&#8203;22363](https://github.com/pulumi/pulumi/pull/22363) ### [`v3.228.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32280-2026-03-25) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.227.0...v3.228.0) ##### Features - \[cli] Don't apply the secrets filter to `true` and `false` (case-insensitive) [#&#8203;22269](https://github.com/pulumi/pulumi/pull/22269) - \[cli] Add grpcs\:// support and header authentication to OTLP exporter [#&#8203;22320](https://github.com/pulumi/pulumi/pull/22320) - \[cli] Read OTEL\_RESOURCE\_ATTRIBUTES [#&#8203;22329](https://github.com/pulumi/pulumi/pull/22329) - \[auto/nodejs] Add low-level "cancel" command to the auto-generated interface [#&#8203;22156](https://github.com/pulumi/pulumi/pull/22156) - \[cli/state] Allow `pulumi state delete` to accept multiple resource URNs and delete them in a dependency-safe order ##### Bug Fixes - \[cli] Allow relative file paths for --otel-traces [#&#8203;22300](https://github.com/pulumi/pulumi/pull/22300) - \[cli] Bridge opentracing spans from providers into OTel [#&#8203;22313](https://github.com/pulumi/pulumi/pull/22313) - \[cli] Correctly end spans for GRPC streams [#&#8203;22304](https://github.com/pulumi/pulumi/pull/22304) - \[cli/about] Do not include the access token in plain text [#&#8203;22347](https://github.com/pulumi/pulumi/pull/22347) - \[display] Fix detailed diff indentation so changed resources are not visually nested under unrelated visible resources when unchanged parents are hidden. [#&#8203;22317](https://github.com/pulumi/pulumi/pull/22317) - \[cli/import] Fix import codegen when generating references to non-standard names [#&#8203;22319](https://github.com/pulumi/pulumi/pull/22319) - \[engine] Update golang version [#&#8203;22277](https://github.com/pulumi/pulumi/pull/22277) - \[pcl] Typecheck component inputs in PCL programs [#&#8203;22292](https://github.com/pulumi/pulumi/pull/22292) - \[programgen/{nodejs,python}] Fix literal conversion when calling into local components [#&#8203;22306](https://github.com/pulumi/pulumi/pull/22306) ##### Miscellaneous - \[cli] Add CLI metadata to the root span [#&#8203;22305](https://github.com/pulumi/pulumi/pull/22305) - \[cli] Add more OTel interceptors for GRPC clients [#&#8203;22309](https://github.com/pulumi/pulumi/pull/22309) - \[cli] Add spans for plugin installation and add more attributes for dependency installation [#&#8203;22303](https://github.com/pulumi/pulumi/pull/22303) - \[cli] Allow setting a GRPC endpoint for performance tests [#&#8203;22330](https://github.com/pulumi/pulumi/pull/22330) - \[backend/diy] Start deprecation of non-project mode for DIY backends [#&#8203;19625](https://github.com/pulumi/pulumi/pull/19625) ### [`v3.227.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32270-2026-03-19) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.226.0...v3.227.0) ##### Features - \[engine] The engine will fill in Name and Type for ResourceReference values on the wire protocol [#&#8203;22208](https://github.com/pulumi/pulumi/pull/22208) - \[sdk/bun] Add support for running policy packs with bun [#&#8203;22206](https://github.com/pulumi/pulumi/pull/22206) - \[cli/policy] Auto-install missing policy analyzer plugins [#&#8203;22196](https://github.com/pulumi/pulumi/pull/22196) - \[sdk/python] Add lock file detection for picking the Python toolchain [#&#8203;22234](https://github.com/pulumi/pulumi/pull/22234) ##### Bug Fixes - \[cli] Use distinct exit codes for different types of error [#&#8203;22205](https://github.com/pulumi/pulumi/pull/22205) - \[cli] Improve SAML SSO reauthorization error message - \[engine] Fix snapshot integrity error in refresh v2 with changed parents [#&#8203;22190](https://github.com/pulumi/pulumi/pull/22190) - \[pcl] Continue running after errors when running with --continue-on-error [#&#8203;22171](https://github.com/pulumi/pulumi/pull/22171) - \[pcl] Deprecate labels on package blocks [#&#8203;22253](https://github.com/pulumi/pulumi/pull/22253) - \[programgen] Preserve traversal parts in rewriteRelativeTraversalExpression [#&#8203;22249](https://github.com/pulumi/pulumi/pull/22249) - \[sdk/bun] Check for an SDK version compatible with bun [#&#8203;22262](https://github.com/pulumi/pulumi/pull/22262) - \[programgen/nodejs] Correctly generate `for` expressions [#&#8203;22219](https://github.com/pulumi/pulumi/pull/22219) - \[sdk/go] Add support for Azure DevOps git URLs in pulumi package publish code paths [#&#8203;22217](https://github.com/pulumi/pulumi/pull/22217) - \[programgen/python] Correctly generate list & dictionary comprehension in Python code [#&#8203;22182](https://github.com/pulumi/pulumi/pull/22182) ##### Miscellaneous - \[backend] Move CloudConsoleURL from httpstate to httpstate/client [#&#8203;22258](https://github.com/pulumi/pulumi/pull/22258) - \[docs] Move remaining content from /developer-docs to /docs [#&#8203;22225](https://github.com/pulumi/pulumi/pull/22225) - \[sdk/bun] Add a test for the function serialization error message when using bun [#&#8203;22207](https://github.com/pulumi/pulumi/pull/22207) - \[sdk/bun] Run policy language tests for bun [#&#8203;22209](https://github.com/pulumi/pulumi/pull/22209) - \[sdk/bun] Mark pulumi-language-bun as a bundled plugin [#&#8203;22265](https://github.com/pulumi/pulumi/pull/22265) - \[sdk/{bun,nodejs}] Use defaultErrorMessage in run-plugin and run-policy-pack [#&#8203;22210](https://github.com/pulumi/pulumi/pull/22210) ### [`v3.226.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32260-2026-03-11) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.225.1...v3.226.0) ##### Features - \[backend/service] Automatically repair snapshot integrity issues, while sending an error event to the backend for further diagnosis [#&#8203;22179](https://github.com/pulumi/pulumi/pull/22179) - \[cli] Add a --otel-traces flag, that allows writing otel traces to a file, or directly to a grpc interface [#&#8203;22129](https://github.com/pulumi/pulumi/pull/22129) - \[engine] Engine will use provider references from `__self__` arguments to calls [#&#8203;22114](https://github.com/pulumi/pulumi/pull/22114) - \[sdk/bun] Support bun as a runtime [#&#8203;22177](https://github.com/pulumi/pulumi/pull/22177) [#&#8203;22049](https://github.com/pulumi/pulumi/pull/22049) - \[sdk/bun] Add debugger support for the bun runtime [#&#8203;22177](https://github.com/pulumi/pulumi/pull/22177) - \[sdk/bun] Add support for Bun as a plugin runtime [#&#8203;22189](https://github.com/pulumi/pulumi/pull/22189) ##### Bug Fixes - \[engine] Fix ReplacementTrigger firing due to dependency changes [#&#8203;22119](https://github.com/pulumi/pulumi/pull/22119) - \[engine] Correctly serialize output values to the snapshot rather than always recording them as computed even when known [#&#8203;22120](https://github.com/pulumi/pulumi/pull/22120) - \[pcl] Support resource ranges in PCL [#&#8203;22144](https://github.com/pulumi/pulumi/pull/22144) - \[cli/config] Include environments used when refreshing a stack's config [#&#8203;22103](https://github.com/pulumi/pulumi/pull/22103) - \[cli/display] Fix `pulumi destroy` not showing parent resource hierarchy [#&#8203;22148](https://github.com/pulumi/pulumi/pull/22148) - \[cli/package] Correctly parse package URLs with .git in them [#&#8203;22174](https://github.com/pulumi/pulumi/pull/22174) - \[cli/plugin] Fix package get-schema for binary providers at relative paths [#&#8203;22107](https://github.com/pulumi/pulumi/pull/22107) - \[sdk/python] Handle null detailedDiff in automation StepEventMetadata JSON parsing [#&#8203;22140](https://github.com/pulumi/pulumi/pull/22140) - \[cli/state] Fix state move integrity errors when copied providers depend on resources left in source stack [#&#8203;22141](https://github.com/pulumi/pulumi/pull/22141) ##### Miscellaneous - \[cli/about] Show bun information in `pulumi about` [#&#8203;22121](https://github.com/pulumi/pulumi/pull/22121) - \[programgen/go] Target go 1.25 for generated go.mod files (instead of go 1.23) [#&#8203;22070](https://github.com/pulumi/pulumi/pull/22070) - \[sdkgen/go] Target go 1.25 for generated go.mod files for SDKs (instead of go 1.20) [#&#8203;22131](https://github.com/pulumi/pulumi/pull/22131) - \[sdk/python] Read Poetry and uv lockfiles to determine program dependencies [#&#8203;22072](https://github.com/pulumi/pulumi/pull/22072) - \[sdk/python] Use importlib to find pulumi-plugin.json for installed packages [#&#8203;22127](https://github.com/pulumi/pulumi/pull/22127) ### [`v3.225.1`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32251-2026-03-05) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.225.0...v3.225.1) ##### Bug Fixes - \[sdk/go] Add per-context packageRef caching for parameterized providers to fix concurrent inline programs - \[engine] Fix inheritence of default providers across resources of different packages [#&#8203;22101](https://github.com/pulumi/pulumi/pull/22101) - \[programgen/go] Fix panic on digit-prefixed schema properties in Go code generation [#&#8203;21917](https://github.com/pulumi/pulumi/pull/21917) - \[programgen/go] Fix plain values not always being lifted to input/output values when needed [#&#8203;22084](https://github.com/pulumi/pulumi/pull/22084) - \[programgen/python] Fix generation of `entries` and `lookup` calls [#&#8203;22086](https://github.com/pulumi/pulumi/pull/22086) ### [`v3.225.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32250-2026-03-04) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.224.0...v3.225.0) ##### Features - \[engine] Automatically make invoke outputs secret when there is a secret input, and the invoke provider does not support secrets [#&#8203;21959](https://github.com/pulumi/pulumi/pull/21959) - \[engine] The engine now handles the inheritance of the `provider` option in resource registrations [#&#8203;21999](https://github.com/pulumi/pulumi/pull/21999) - \[engine] Enable journaling by default. It can still be turned off using the PULUMI\_DISABLE\_JOURNALING env variable [#&#8203;22041](https://github.com/pulumi/pulumi/pull/22041) - \[programgen] PCL can now express config values should be read as secrets [#&#8203;22066](https://github.com/pulumi/pulumi/pull/22066) - \[yaml] Update yaml to v1.30.0 - \[cli/engine] Add a flag for automatically opening a Neo task on preview/up failure [#&#8203;21960](https://github.com/pulumi/pulumi/pull/21960) - \[cli/package] Support source-based packages in `pulumi schema check`, not just schema files [#&#8203;21897](https://github.com/pulumi/pulumi/pull/21897) ##### Bug Fixes - \[cli] Fix `stack import` panicking when importing a service stack into a DIY backend [#&#8203;22076](https://github.com/pulumi/pulumi/pull/22076) - \[engine] Fix panic when a new component resource in the program is not targeted [#&#8203;21957](https://github.com/pulumi/pulumi/pull/21957) - \[sdk/nodejs] Implement GetProgramDependencies for bun and pnpm [#&#8203;22065](https://github.com/pulumi/pulumi/pull/22065) ##### Miscellaneous - \[cli] Build language plugins with the grpcnotrace tag to reduce the binary size [#&#8203;22012](https://github.com/pulumi/pulumi/pull/22012) ### [`v3.224.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32240-2026-02-26) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.223.0...v3.224.0) ##### Features - \[backend/diy] Add zstd compression option for DIY backend state files [#&#8203;21877](https://github.com/pulumi/pulumi/pull/21877) ##### Bug Fixes - \[cli/state] `state move` now correctly handles reparenting of resources - \[pkg] Correct the schema for "pulumi:pulumi:StackReference" [#&#8203;21895](https://github.com/pulumi/pulumi/pull/21895) - \[programgen/nodejs] Correct the semantics of singleOrNone in generated files [#&#8203;21947](https://github.com/pulumi/pulumi/pull/21947) - \[sdk/python] Fix `StepEventMetadata.from_json` reading `detailed_diff` (snake\_case) instead of `detailedDiff` (camelCase), and `PolicyEvent.from_json` reading `resource_urn` instead of `resourceUrn`, causing both fields to always be `None` [#&#8203;21714](https://github.com/pulumi/pulumi/pull/21714) - \[sdk/python] Convert integer component inputs to `int` [#&#8203;21944](https://github.com/pulumi/pulumi/pull/21944) - \[sdk/python] Fix crash in forked processes using automation API [#&#8203;21937](https://github.com/pulumi/pulumi/pull/21937) ##### Miscellaneous - \[sdk] Update java, dotnet & yaml [#&#8203;21961](https://github.com/pulumi/pulumi/pull/21961) - \[sdk/python] Improve the performance of `contains_unknowns` for large objects [#&#8203;21893](https://github.com/pulumi/pulumi/pull/21893) ### [`v3.223.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32230-2026-02-19) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.222.0...v3.223.0) ##### Bug Fixes - \[engine] Report policy pack installation errors [#&#8203;21882](https://github.com/pulumi/pulumi/pull/21882) ### [`v3.222.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32220-2026-02-18) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.221.0...v3.222.0) ##### Features - \[programgen/go] Generate Call requests [#&#8203;21836](https://github.com/pulumi/pulumi/pull/21836) ##### Bug Fixes - \[sdk/{nodejs,python}] Fix hang when loading policy packs that use v1.18.1 or older of the policy SDK [#&#8203;21866](https://github.com/pulumi/pulumi/pull/21866) ### [`v3.221.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32210-2026-02-17) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.220.0...v3.221.0) ##### Features - \[auto] Support Go 1.26 [#&#8203;21835](https://github.com/pulumi/pulumi/pull/21835) - \[engine] BREAKING: Rename `pulumiVersionRange` to `requiredPulumiVersion` in `PulumiPlugin.yaml` [#&#8203;21807](https://github.com/pulumi/pulumi/pull/21807) - \[cli/plugin] Reduce GitHub API usage when downloading plugins [#&#8203;21774](https://github.com/pulumi/pulumi/pull/21774) - \[protobuf] Add loader\_target to RunPluginRequest [#&#8203;21763](https://github.com/pulumi/pulumi/pull/21763) - \[sdk/nodejs] Support enums when inferring schemas from components [#&#8203;21787](https://github.com/pulumi/pulumi/pull/21787) - \[sdk/nodejs] Support the Partial<T> utility type in component schema inference [#&#8203;21802](https://github.com/pulumi/pulumi/pull/21802) - \[sdk/nodejs] Support the Required<T> utility type in component schema inference [#&#8203;21803](https://github.com/pulumi/pulumi/pull/21803) ##### Bug Fixes - \[cli] Make stack graph output deterministic [#&#8203;21786](https://github.com/pulumi/pulumi/pull/21786) - \[engine] Fix snapshot integrity error in `refresh --run-program` with component resources [#&#8203;21806](https://github.com/pulumi/pulumi/pull/21806) - \[engine] Fix race in refresh --run-program [#&#8203;21815](https://github.com/pulumi/pulumi/pull/21815) - \[programgen/go] Correctly handle import paths for nested modules [#&#8203;21812](https://github.com/pulumi/pulumi/pull/21812) - \[sdkgen] Support type references to parameterized and third-party packages [#&#8203;21804](https://github.com/pulumi/pulumi/pull/21804) - \[sdkgen/go] Do not depend on pulumix against instructions for enums [#&#8203;21818](https://github.com/pulumi/pulumi/pull/21818) - \[cli/{install,package}] Don't panic when a non-absolute path is passed to `pulumi package get-schema` where the PulumiPlugin.yaml has a packages section [#&#8203;21794](https://github.com/pulumi/pulumi/pull/21794) - \[cli/{install,package}] Only link a Pulumi project once [#&#8203;21788](https://github.com/pulumi/pulumi/pull/21788) - \[cli/{install,package}] Run in the correct location when using `uv` to link python packages [#&#8203;21796](https://github.com/pulumi/pulumi/pull/21796) - \[cli/package] Allow underscores in the path of plugin URLs [#&#8203;21778](https://github.com/pulumi/pulumi/pull/21778) - \[sdk/{nodejs,python}] Use new policy plugin support to run policy packs [#&#8203;21684](https://github.com/pulumi/pulumi/pull/21684) - \[sdk/python] Surface errors from uv, poetry or pip during linking [#&#8203;21770](https://github.com/pulumi/pulumi/pull/21770) - \[sdk/python] Always surface errors from uv, poetry or pip during dependency installation [#&#8203;21814](https://github.com/pulumi/pulumi/pull/21814) - \[sdkgen/python] Add missing blank line before :param lists [#&#8203;21789](https://github.com/pulumi/pulumi/pull/21789) ### [`v3.220.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32200-2026-02-10) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.219.0...v3.220.0) ##### Features - \[cli] Show environment variables that were set if a snapshot integrity error happens [#&#8203;21709](https://github.com/pulumi/pulumi/pull/21709) - \[cli/{install,package}] Use the Pulumi Cloud Registry by default to resolve package names - \[engine] Pass replacement trigger through to Construct [#&#8203;21408](https://github.com/pulumi/pulumi/pull/21408) - \[engine] Add EnvVarMappings resource option for provider resources, allowing environment variables to be remapped before being passed to the provider [#&#8203;21572](https://github.com/pulumi/pulumi/pull/21572) - \[pkg] BREAKING: Deprecate github.com/pulumi/pulumi/pkg/v3/codegen/dotnet in favor of github.com/pulumi/pulumi-dotnet/pulumi-language-dotnet/v3/codegen. This package will be removed from pulumi/pulumi soon! [#&#8203;21720](https://github.com/pulumi/pulumi/pull/21720) ##### Bug Fixes - \[cli] Retry `yarn install` when it fails (e.g. during `pulumi install`) [#&#8203;21707](https://github.com/pulumi/pulumi/pull/21707) - \[engine] Deal with errors in elided journal entries correctly [#&#8203;21576](https://github.com/pulumi/pulumi/pull/21576) - \[sdk/nodejs] Fix remote components with PULUMI\_NODEJS\_SKIP\_COMPONENT\_INPUTS - \[sdk/python] Fix `_LazyModule` to not trigger full module load for introspection attributes [#&#8203;21620](https://github.com/pulumi/pulumi/pull/21620) - \[sdkgen/python] Remove workaround for slow typechecking with MyPy and PyCharm [#&#8203;21722](https://github.com/pulumi/pulumi/pull/21722) ##### Miscellaneous - \[cli] Write logfile location if verbosity is >= 1 to stderr instead of stdout [#&#8203;21663](https://github.com/pulumi/pulumi/pull/21663) ### [`v3.219.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32190-2026-02-05) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.218.0...v3.219.0) ##### Features - \[cli] Allow setting `requiredPulumiVersion` in Pulumi.yaml [#&#8203;21627](https://github.com/pulumi/pulumi/pull/21627) - \[cli/{install,package}] Allow using private packages as local dependencies in components [#&#8203;21664](https://github.com/pulumi/pulumi/pull/21664) - \[cli/policy] Add `pulumi policy install` command [#&#8203;21652](https://github.com/pulumi/pulumi/pull/21652) - \[engine] Run analyzer calls in parallel [#&#8203;21631](https://github.com/pulumi/pulumi/pull/21631) - \[programgen/dotnet] Codegen RequirePulumiVersion for Dotnet [#&#8203;21621](https://github.com/pulumi/pulumi/pull/21621) - \[sdk/python] Add support for the `OnError` resource hook [#&#8203;21644](https://github.com/pulumi/pulumi/pull/21644) - \[sdk/python] Add support for protobuf 6 [#&#8203;21647](https://github.com/pulumi/pulumi/pull/21647) ##### Bug Fixes - \[cli] Allow positional arguments to be passed to `convert` again [#&#8203;21604](https://github.com/pulumi/pulumi/pull/21604) [#&#8203;21614](https://github.com/pulumi/pulumi/pull/21614) - \[engine] Download/install required policy packs in parallel with plugins [#&#8203;21651](https://github.com/pulumi/pulumi/pull/21651) - \[cli/package] Correctly install packages that depend on other packages for `pulumi package add` and `pulumi package get-schema`. [#&#8203;21321](https://github.com/pulumi/pulumi/pull/21321) - \[programgen/python] Fix panic when ranging over a resource output that is an array of objects [#&#8203;21679](https://github.com/pulumi/pulumi/pull/21679) - \[sdk/python] Fix issue with generic subclasses of `dynamic.Resource` [#&#8203;21670](https://github.com/pulumi/pulumi/pull/21670) ##### Miscellaneous - \[sdk/python] Relax pip version constraint [#&#8203;21639](https://github.com/pulumi/pulumi/pull/21639) ### [`v3.218.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32180-2026-01-29) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.217.1...v3.218.0) ##### Features - \[sdk/nodejs] Add support for the `OnError` resource hook ##### Bug Fixes - \[cli] Allow positional arguments to be passed to `convert` again - \[cli/install] Correctly include git forge organizations as schema namespaces when generating SDKs [#&#8203;21579](https://github.com/pulumi/pulumi/pull/21579) - \[cli/{install,package}] Correctly grab package names for Python & NodeJS [#&#8203;21577](https://github.com/pulumi/pulumi/pull/21577) ### [`v3.217.1`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32171-2026-01-27) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.217.0...v3.217.1) ##### Features - \[sdk/go] Add support for the `OnError` resource hook [#&#8203;21515](https://github.com/pulumi/pulumi/pull/21515) ##### Bug Fixes - \[cli/install] Copy files when linking to be robust to copying across file partitions [#&#8203;21549](https://github.com/pulumi/pulumi/pull/21549) - \[cli/install] Do not double install plugins with explicit parameterizations [#&#8203;21548](https://github.com/pulumi/pulumi/pull/21548) - \[cli/install] Copy files when linking instead of renaming [#&#8203;21549](https://github.com/pulumi/pulumi/pull/21549) **Full Changelog**: <https://github.com/pulumi/pulumi/compare/v3.217.0...v3.217.1> ### [`v3.217.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32170-2026-01-23) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.216.0...v3.217.0) ##### Features - \[cli] Extract organization, team, and user from OIDC JWT claims during login [#&#8203;21462](https://github.com/pulumi/pulumi/pull/21462) - \[engine] Add the `OnError` resource hook to allow for custom retry policies [#&#8203;21291](https://github.com/pulumi/pulumi/pull/21291) - \[cli/engine] Add --plan up flag [#&#8203;21368](https://github.com/pulumi/pulumi/pull/21368) - \[sdk/nodejs] Add requirePulumiVersion to the Node.js SDK [#&#8203;21528](https://github.com/pulumi/pulumi/pull/21528) [#&#8203;21478](https://github.com/pulumi/pulumi/pull/21478) - \[sdk/python] Add require\_pulumi\_version to the Python SDK [#&#8203;21528](https://github.com/pulumi/pulumi/pull/21528) [#&#8203;21430](https://github.com/pulumi/pulumi/pull/21430) - \[sdk/go] Add CheckPulumiVersion to the Go SDK [#&#8203;21528](https://github.com/pulumi/pulumi/pull/21528) [#&#8203;21514](https://github.com/pulumi/pulumi/pull/21514) ##### Bug Fixes - \[auto/python] Implement `About` in Python automation API server [#&#8203;21479](https://github.com/pulumi/pulumi/pull/21479) - \[engine] When importing a state file that refers to the service backed secret manager, make `stack import` reconfigure it for the target stack if required [#&#8203;20966](https://github.com/pulumi/pulumi/pull/20966) - \[protobuf] Fix alias options being passed to Construct for remote components [#&#8203;21050](https://github.com/pulumi/pulumi/pull/21050) - \[sdk/nodejs] Fix issue with serialized async generators [#&#8203;21484](https://github.com/pulumi/pulumi/pull/21484) ### [`v3.216.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32160-2026-01-16) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.215.0...v3.216.0) ##### Features - \[build] Don't set PULUMI\_ROOT with mise [#&#8203;21457](https://github.com/pulumi/pulumi/pull/21457) - \[cli] Default to Pulumi Cloud when using an OIDC token for login [#&#8203;21322](https://github.com/pulumi/pulumi/pull/21322) - \[engine] Add CheckPulumiVersion RPC to the engine [#&#8203;21429](https://github.com/pulumi/pulumi/pull/21429) - \[protobuf] Remove ProviderHandshakeResponse.pulumi\_version\_range [#&#8203;21438](https://github.com/pulumi/pulumi/pull/21438) - \[sdk/nodejs] Allow dynamic providers to return inputs from read() for accurate diffs after refresh [#&#8203;21315](https://github.com/pulumi/pulumi/pull/21315) - \[sdk/nodejs] Add support for serializing async generators [#&#8203;21410](https://github.com/pulumi/pulumi/pull/21410) - \[sdk/python] Allow dynamic providers to return inputs from read() for accurate diffs after refresh [#&#8203;21315](https://github.com/pulumi/pulumi/pull/21315) ##### Bug Fixes - \[engine] Optimize StackReference performance [#&#8203;21446](https://github.com/pulumi/pulumi/pull/21446) - \[cli/display] Fix message renderer on windows [#&#8203;21401](https://github.com/pulumi/pulumi/pull/21401) - \[sdk/nodejs] Fix RangeError in defaultErrorMessage when error objects are large [#&#8203;21409](https://github.com/pulumi/pulumi/pull/21409) ##### Miscellaneous - \[sdk/dotnet] Update dotnet to v3.97.0 ### [`v3.215.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32150-2026-01-07) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.214.1...v3.215.0) ##### Features - \[cli/plugin] Allow plugins to specify a supported version range for the CLI [#&#8203;21335](https://github.com/pulumi/pulumi/pull/21335) ##### Bug Fixes - \[cli] Filter internal properties like \_\_defaults from diff display [#&#8203;21359](https://github.com/pulumi/pulumi/pull/21359) - \[cli/config] Make `config set --type bool` accept different spellings of boolean values instead of only lowercase "true" [#&#8203;21314](https://github.com/pulumi/pulumi/pull/21314) - \[sdk/python] Fix import\_resources with converter failing due to --stack argument placement [#&#8203;21373](https://github.com/pulumi/pulumi/pull/21373) ##### Miscellaneous - \[cli] Update pulumi-dotnet to 3.96.1 - \[cli/package] Remove superfluous version string [#&#8203;21351](https://github.com/pulumi/pulumi/pull/21351) ### [`v3.214.1`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32141-2026-01-03) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.214.0...v3.214.1) ##### Bug Fixes - \[cli/package] Preserve existing behavior when `pulumi package add` is used with a local provider [#&#8203;21350](https://github.com/pulumi/pulumi/pull/21350) - \[pkg] Create namespace aliases to avoid Pulumi namespace collisions during codegen [#&#8203;21325](https://github.com/pulumi/pulumi/pull/21325) ### [`v3.214.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32140-2025-12-30) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.213.0...v3.214.0) ##### Features - \[cli] Add --config and --config-path options to destroy and refresh [#&#8203;21299](https://github.com/pulumi/pulumi/pull/21299) - \[sdkgen] Add `OutputStyleOnly` flag to functions to not emit their plain variants [#&#8203;21198](https://github.com/pulumi/pulumi/pull/21198) - \[sdk/python] Add support for `replacement_trigger` in the Python SDK [#&#8203;20940](https://github.com/pulumi/pulumi/pull/20940) ##### Bug Fixes - \[engine] Pass ignoreChanges when issuing no-diff updates that resolve initErrors [#&#8203;21319](https://github.com/pulumi/pulumi/pull/21319) - \[programgen] Fix a bug in programgen binding to invokes from parameterized packages [#&#8203;21284](https://github.com/pulumi/pulumi/pull/21284) - \[cli/plugin] Fix plugin download URL overrides for fallback mechanism [#&#8203;21095](https://github.com/pulumi/pulumi/pull/21095) ##### Miscellaneous - \[pkg] Upgrade pulumi-java to 1.20.0 ### [`v3.213.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32130-2025-12-17) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.212.0...v3.213.0) ##### Bug Fixes - \[sdkgen/go] Generate three-level nested builtin output types for Go SDK [#&#8203;21248](https://github.com/pulumi/pulumi/pull/21248) ##### Miscellaneous - \[pkg] Move plugin downloading from pkg into sdk [#&#8203;21220](https://github.com/pulumi/pulumi/pull/21220) ### [`v3.212.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32120-2025-12-12) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.211.0...v3.212.0) ##### Bug Fixes - \[yaml] Update pulumi-yaml to v1.26.1 ### [`v3.211.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32110-2025-12-11) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.210.0...v3.211.0) ##### Features - \[cli/about] Print Node.js package manager information in `pulumi about` [#&#8203;21163](https://github.com/pulumi/pulumi/pull/21163) - \[backend/diy] Add stack tags support for DIY backends (S3, Postgres, file-based, etc.). DIY backends now support stack tags functionality, bringing feature parity with cloud backends. This includes: - Full CRUD operations for stack tags (create, read, update, delete) - Automatic system tag injection (e.g., `pulumi:project`) - Tag filtering support in stack listing operations - Backward compatibility with existing stacks (no tags file required) - Atomic operations with caching for performance - Automatic cleanup of tag files when stacks are deleted Tags are stored as separate `.pulumi-tags` files alongside stack checkpoints, using a versioned JSON format. The implementation works across all DIY backend storage types including S3, Azure Blob, Google Cloud Storage, PostgreSQL, and local file systems. Example usage: ```bash pulumi stack tag set environment production pulumi stack tag set owner backend-team pulumi stack ls --tag-filter environment=production ``` [#&#8203;19882](https://github.com/pulumi/pulumi/pull/19882) - \[backend/service] Improve startup performance with the service as backend [#&#8203;21176](https://github.com/pulumi/pulumi/pull/21176) - \[sdk/nodejs] Add support for `replacement_trigger` in the NodeJS SDK [#&#8203;20939](https://github.com/pulumi/pulumi/pull/20939) - \[sdk/python] Allow setting version for python component providers [#&#8203;21149](https://github.com/pulumi/pulumi/pull/21149) ##### Bug Fixes - \[cli/package] Correctly identify the innermost Project/Plugin when running `pulumi package add` [#&#8203;21137](https://github.com/pulumi/pulumi/pull/21137) - \[engine] Allow referencing multiple git/github/gitlab components from the same repo [#&#8203;21119](https://github.com/pulumi/pulumi/pull/21119) - \[programgen/go] Account for name conflicts in resource creation functions [#&#8203;21107](https://github.com/pulumi/pulumi/pull/21107) - \[sdk/python] Fix cancellation handling in a few places in the python language host [#&#8203;21145](https://github.com/pulumi/pulumi/pull/21145) - \[sdkgen/go] Fix generation of lifted single-value calls in parameterized SDKs [#&#8203;21115](https://github.com/pulumi/pulumi/pull/21115) ##### Miscellaneous - \[cli] Don't attempt to re-install plugin dependencies on load failure for plugins based on git with a nested path [#&#8203;21148](https://github.com/pulumi/pulumi/pull/21148) - \[sdk/{dotnet,java,yaml}] Bump language runtimes for dotnet, java, and yaml [#&#8203;21201](https://github.com/pulumi/pulumi/pull/21201) - \[cli/engine] Add language runtime metadata to update metadata [#&#8203;21186](https://github.com/pulumi/pulumi/pull/21186) ### [`v3.210.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32100-2025-12-03) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.209.0...v3.210.0) ##### Features - \[cli/about] Print python toolchain information in `pulumi about` - \[sdk/java] Update java to v1.18 - \[components/nodejs] Local components will use the version from package.json rather than 0.0.0 [#&#8203;21100](https://github.com/pulumi/pulumi/pull/21100) - \[cli/package] Add `pulumi package delete` command to delete package versions from the Pulumi Registry [#&#8203;21069](https://github.com/pulumi/pulumi/pull/21069) - \[cli/package] Always print the schema first in `package get-schema`, then print any binding errors [#&#8203;21080](https://github.com/pulumi/pulumi/pull/21080) - \[sdk/python] Require `grpcio>=1.75.1` on Python 3.14 [#&#8203;21113](https://github.com/pulumi/pulumi/pull/21113) ##### Bug Fixes - \[sdk/nodejs] Fix ComponentResources transfering input arguments to output properties automatically [#&#8203;21094](https://github.com/pulumi/pulumi/pull/21094) ##### Miscellaneous - \[sdk/nodejs] Remove [@&#8203;types/uuid](https://github.com/types/uuid) type declarations dev dependency [#&#8203;21077](https://github.com/pulumi/pulumi/pull/21077) ### [`v3.209.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32090-2025-11-26) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.208.0...v3.209.0) ##### Features - \[cli] Add native support for OIDC token exchange when logging into Pulumi Cloud. Run `pulumi login --help` for more information. [#&#8203;20974](https://github.com/pulumi/pulumi/pull/20974) - \[sdk/python] Allow older grpcio and protobuf dependencies [#&#8203;21007](https://github.com/pulumi/pulumi/pull/21007) - \[sdkgen/{dotnet,go,nodejs,python}] Generate .gitignore and .gitattributes files for generated SDKs [#&#8203;21034](https://github.com/pulumi/pulumi/pull/21034) ##### Bug Fixes - \[cli/install] Correctly install non-standard plugins. See [#&#8203;20953](https://github.com/pulumi/pulumi/issues/20953) for more information [#&#8203;20983](https://github.com/pulumi/pulumi/pull/20983) - \[cli/new] Create pyproject.toml for uv and poetry projects when using --generate-only [#&#8203;20979](https://github.com/pulumi/pulumi/pull/20979) - \[sdk/nodejs] Fix serialization errors due to SxS copies of the SDK [#&#8203;21029](https://github.com/pulumi/pulumi/pull/21029) - \[sdk/python] Add `PropertyValue` runtime validation checks [#&#8203;21058](https://github.com/pulumi/pulumi/pull/21058) ##### Miscellaneous - \[engine] Don't send root directory and runtime options to language plugins as command line arguments [#&#8203;21054](https://github.com/pulumi/pulumi/pull/21054) - \[sdk/{dotnet,java,yaml}] Bump language runtimes for yaml, dotnet and java ### [`v3.208.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32080-2025-11-20) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.207.0...v3.208.0) ##### Features - \[cli] Expose all command flags as env vars (e.g. --refresh can now be set with PULUMI\_OPTION\_REFRESH) [#&#8203;20868](https://github.com/pulumi/pulumi/pull/20868) - \[cli/install] Make `pulumi install` recurse into local packages [#&#8203;20945](https://github.com/pulumi/pulumi/pull/20945) - \[engine] Add a `replacement_trigger` resource option. Any change to this value between program runs will trigger a replace of the resource [#&#8203;20936](https://github.com/pulumi/pulumi/pull/20936) - \[engine] Add a new builtin `Stash` resource which can be used to save a value to state [#&#8203;20819](https://github.com/pulumi/pulumi/pull/20819) - \[protobuf] Add `Language.Template` RPC to protos [#&#8203;20948](https://github.com/pulumi/pulumi/pull/20948) - \[sdk/go] Add support for `replacement_trigger` in the Go SDK [#&#8203;20937](https://github.com/pulumi/pulumi/pull/20937) ##### Bug Fixes - \[engine] Fix duplicate resource snapshot integrity issue with aliases [#&#8203;20926](https://github.com/pulumi/pulumi/pull/20926) - \[engine] Allow resources marked as `Delete` to be targeted, and take them into account for dependency calculation [#&#8203;20962](https://github.com/pulumi/pulumi/pull/20962) - \[engine] Fix a panic when previewing and import of a resource that wants to delete and then replace due to diffs [#&#8203;20997](https://github.com/pulumi/pulumi/pull/20997) - \[pkg] Include invalid property names in bind errors [#&#8203;20989](https://github.com/pulumi/pulumi/pull/20989) - \[sdk/python] Don’t raise when looking up a stack reference output that does not exist [#&#8203;20938](https://github.com/pulumi/pulumi/pull/20938) - \[sdkgen/python] Ensure resource args accept typeddicts when no language info is specified [#&#8203;20982](https://github.com/pulumi/pulumi/pull/20982) ##### Miscellaneous - \[cli] Document the \[template|url] argument in `pulumi up` command help text [#&#8203;20996](https://github.com/pulumi/pulumi/pull/20996) ### [`v3.207.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32070-2025-11-12) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.206.0...v3.207.0) ##### Features - \[cli] Log gRPC requests before invoking them in gRPC debug interceptor [#&#8203;20817](https://github.com/pulumi/pulumi/pull/20817) - \[engine] Add `ReplaceWith` resource option to allow one resource's replace operations to trigger another's [#&#8203;20693](https://github.com/pulumi/pulumi/pull/20693) - \[sdkgen/python] Allow all PEP440 version specifiers to be used ##### Bug Fixes - \[cli/import] Return errors when an import fails [#&#8203;20904](https://github.com/pulumi/pulumi/pull/20904) - \[engine] Fix parenting of resources in some cases in `refresh --run-program` [#&#8203;20894](https://github.com/pulumi/pulumi/pull/20894) - \[engine] Fix StackReference secrets performance [#&#8203;20908](https://github.com/pulumi/pulumi/pull/20908) - \[programgen] Do not panic when re-writing type-invalid PCL [#&#8203;20770](https://github.com/pulumi/pulumi/pull/20770) - \[sdk/go] Fix import path in instructions when linking a package in Go [#&#8203;20888](https://github.com/pulumi/pulumi/pull/20888) - \[sdk/nodejs] Fix closure serialization on Node.js v25.2.0 [#&#8203;20913](https://github.com/pulumi/pulumi/pull/20913) - \[sdk/{nodejs,python}] Avoid cancellations due to do slow processing of requests - \[sdk/python] Avoid cancellations due to do slow processing of requests in the callbacks server [#&#8203;20917](https://github.com/pulumi/pulumi/pull/20917) ##### Miscellaneous - \[engine] Stop sending ConfigPropertyMap as part of RunRequest [#&#8203;20887](https://github.com/pulumi/pulumi/pull/20887) ### [`v3.206.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32060-2025-11-05) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.205.0...v3.206.0) ##### Features - \[protobuf] Pass a `preview` flag to invokes so they can tell if they're being called during a preview [#&#8203;20827](https://github.com/pulumi/pulumi/pull/20827) - \[cli/about] Include PULUMI\_\* environment variables in the `pulumi about` output [#&#8203;20855](https://github.com/pulumi/pulumi/pull/20855) - \[auto/go] Get event log over gRPC instead of trying to read it from a text file [#&#8203;20822](https://github.com/pulumi/pulumi/pull/20822) - \[auto/nodejs] Get event log over gRPC instead of trying to read it from a text file [#&#8203;20824](https://github.com/pulumi/pulumi/pull/20824) - \[auto/python] Get event log over gRPC instead of trying to read it from a text file [#&#8203;20833](https://github.com/pulumi/pulumi/pull/20833) - \[cli/engine] Add environment variable to add --refresh to preview,update,destroy [#&#8203;20797](https://github.com/pulumi/pulumi/pull/20797) - \[sdk/nodejs] Add PULUMI\_NODEJS\_SKIP\_COMPONENT\_INPUTS environment variable to skip the new feature of sending component inputs to the engine for diffing and state storage [#&#8203;20842](https://github.com/pulumi/pulumi/pull/20842) ##### Bug Fixes - \[engine] Fix duplicate resource snapshot integrity issue, when running `pulumi up --refresh --run-program` and when a resource `PendingReplacement` exists in the snapshot [#&#8203;20812](https://github.com/pulumi/pulumi/pull/20812) - \[engine] Support floating point NaN and Inf values in resource state [#&#8203;20843](https://github.com/pulumi/pulumi/pull/20843) ##### Miscellaneous - \[sdk/go] Use Language.Link to link Go packages [#&#8203;20811](https://github.com/pulumi/pulumi/pull/20811) ### [`v3.205.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32050-2025-10-28) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.204.0...v3.205.0) ##### Bug Fixes - \[cli/display] Improve how the severity is displayed for policy violations [#&#8203;20805](https://github.com/pulumi/pulumi/pull/20805) - \[engine] Fix an issue where `refresh --run-program` could potentially run forever [#&#8203;20781](https://github.com/pulumi/pulumi/pull/20781) ### [`v3.204.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32040-2025-10-23) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.203.0...v3.204.0) ##### Features - \[cli] Print replace diffs when a resource tries to replace but is blocked by still having an import id set [#&#8203;20762](https://github.com/pulumi/pulumi/pull/20762) - \[engine] Support overriding policy severity on violations [#&#8203;20767](https://github.com/pulumi/pulumi/pull/20767) - \[backend/service] Send journal entries to the backend if it's supported [#&#8203;20343](https://github.com/pulumi/pulumi/pull/20343) ##### Bug Fixes - \[engine] Fix a potential snapshot integrity error when a resources dependency fails to be destroyed using `destroy --run-program` [#&#8203;20692](https://github.com/pulumi/pulumi/pull/20692) - \[engine] Fix import error to contain the import ID of non-existent resources [#&#8203;20753](https://github.com/pulumi/pulumi/pull/20753) - \[sdk/nodejs] Pass secret values as Output objects to resource hooks to properly maintain their secretness. Previously hooks received an internal representation for secret values. [#&#8203;20774](https://github.com/pulumi/pulumi/pull/20774) - \[sdk/python] Pass secret values as Output objects to resource hooks to properly maintain their secretness. Previously hooks received an internal representation for secret values. [#&#8203;20769](https://github.com/pulumi/pulumi/pull/20769) - \[sdkgen/go] Fix codegen of scalar return SDK functions [#&#8203;20754](https://github.com/pulumi/pulumi/pull/20754) - \[sdkgen/{nodejs,python}] Fix scalar return protocol to allow returning secret maps [#&#8203;20747](https://github.com/pulumi/pulumi/pull/20747) ##### Miscellaneous - \[sdk/nodejs] Use Language.Link to link Node.js packages [#&#8203;20715](https://github.com/pulumi/pulumi/pull/20715) ### [`v3.203.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32030-2025-10-15) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.202.0...v3.203.0) ##### Features - \[cli/display] Display policy severity for violations [#&#8203;20746](https://github.com/pulumi/pulumi/pull/20746) - \[cli/package] Show functions in `package info` [#&#8203;20733](https://github.com/pulumi/pulumi/pull/20733) ##### Bug Fixes - \[engine] Make sure errors from the journaler are not shown to the user [#&#8203;20740](https://github.com/pulumi/pulumi/pull/20740) - \[backend/diy] Fix casing of stack/latest when importing stacks [#&#8203;20727](https://github.com/pulumi/pulumi/pull/20727) - \[cli/package] Fix 'required' flag for resource inputs in `package info` [#&#8203;20731](https://github.com/pulumi/pulumi/pull/20731) - \[programgen] Revert [#&#8203;20345](https://github.com/pulumi/pulumi/issues/20345) [#&#8203;20714](https://github.com/pulumi/pulumi/pull/20714) - \[programgen/{dotnet,nodejs}] Propagate local dependencies for parameterized packages during convert down to GenerateProject [#&#8203;20706](https://github.com/pulumi/pulumi/pull/20706) - \[sdkgen/python] Fix python invokes for functions returning map types [#&#8203;20719](https://github.com/pulumi/pulumi/pull/20719) ##### Miscellaneous - \[sdk/python] Use Language.Link to link python packages [#&#8203;20612](https://github.com/pulumi/pulumi/pull/20612) ### [`v3.202.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32020-2025-10-10) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.201.0...v3.202.0) ##### Features - \[auto] Add SetAllConfigJson method to automation APIs [#&#8203;20709](https://github.com/pulumi/pulumi/pull/20709) - \[cli/config] Add `--json` input support to `pulumi config set-all` [#&#8203;19427](https://github.com/pulumi/pulumi/pull/19427) - \[cli/display] Add error summary at the end of Resource changes [#&#8203;20658](https://github.com/pulumi/pulumi/pull/20658) - \[components/{go,nodejs}] Send component inputs to be saved in state. This brings NodeJS and Go inline with Python behaviour [#&#8203;20357](https://github.com/pulumi/pulumi/pull/20357) - \[sdk/python] Add support for Python 3.14 [#&#8203;20433](https://github.com/pulumi/pulumi/pull/20433) - \[sdk/python] Add the `hide_diffs` resource option [#&#8203;20655](https://github.com/pulumi/pulumi/pull/20655) ##### Bug Fixes - \[engine] Fix assert when a resource that's not targeted on a destroy is marked as Delete [#&#8203;20684](https://github.com/pulumi/pulumi/pull/20684) - \[sdk/nodejs] Allow compiled local SDKs to be parameterized [#&#8203;20685](https://github.com/pulumi/pulumi/pull/20685) - \[sdk/nodejs] Handle RangeErrors from util.inspect stringifying error objects [#&#8203;20705](https://github.com/pulumi/pulumi/pull/20705) ### [`v3.201.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32010-2025-10-06) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.200.0...v3.201.0) ##### Features - \[sdkgen/go] Support non-object return types in functions [#&#8203;20646](https://github.com/pulumi/pulumi/pull/20646) ##### Bug Fixes - \[backend/service] Fix the --insecure flag in `pulumi login` ### [`v3.200.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#32000-2025-10-03) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.199.0...v3.200.0) ##### Features - \[cli] Look for .cmd and .ps1 extensions as well on Windows when looking for executables [#&#8203;20637](https://github.com/pulumi/pulumi/pull/20637) - \[sdk/go] Add a new resource option: `HideDiffs` [#&#8203;20631](https://github.com/pulumi/pulumi/pull/20631) - \[sdk/nodejs] Add a new resource option: `hideDiffs` [#&#8203;20631](https://github.com/pulumi/pulumi/pull/20631) - \[sdkgen/python] Support non-object return types in functions [#&#8203;20624](https://github.com/pulumi/pulumi/pull/20624) ##### Bug Fixes - \[build] Use ruff to auto fix lints in python [#&#8203;20644](https://github.com/pulumi/pulumi/pull/20644) - \[sdk/nodejs] Make new arguments to `initialize` optional [#&#8203;20650](https://github.com/pulumi/pulumi/pull/20650) - \[sdkgen/nodejs] Generate a .gitignore file inside local SDKs [#&#8203;20643](https://github.com/pulumi/pulumi/pull/20643) - \[cli/state] Treat providers that are marked as parents in a move as providers still instead of as regular resources [#&#8203;20639](https://github.com/pulumi/pulumi/pull/20639) - \[cli/state] Exclude root stack correctly when moving resources and when --include-parents is passed ### [`v3.199.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31990-2025-10-01) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.198.0...v3.199.0) ##### Features - \[cli/about] Add `pulumi about env` to help [#&#8203;20633](https://github.com/pulumi/pulumi/pull/20633) - \[cli/{about,new}] Add environment variables to override template repository settings. The new PULUMI\_TEMPLATE\_GIT\_REPOSITORY, PULUMI\_TEMPLATE\_BRANCH, PULUMI\_POLICY\_TEMPLATE\_GIT\_REPOSITORY, and PULUMI\_POLICY\_TEMPLATE\_BRANCH environment variables allow runtime customization of template sources [#&#8203;20615](https://github.com/pulumi/pulumi/pull/20615) - \[cli/{install,package}] Add support for package references in plugins [#&#8203;20524](https://github.com/pulumi/pulumi/pull/20524) - \[sdk/nodejs] Pass options, name, and type to ComponentResources initialize methods [#&#8203;20618](https://github.com/pulumi/pulumi/pull/20618) - \[cli/policy] Send vcs metadata when publishing policy packs [#&#8203;20528](https://github.com/pulumi/pulumi/pull/20528) ##### Bug Fixes - \[cli/display] Always send diag events to stderr in the diff display [#&#8203;20632](https://github.com/pulumi/pulumi/pull/20632) - \[components] Stop including auth info in plugin name [#&#8203;20620](https://github.com/pulumi/pulumi/pull/20620) - \[engine] Support the import option in resource transforms [#&#8203;20586](https://github.com/pulumi/pulumi/pull/20586) - \[programgen] Fix panic in parseProxyApply when encoutering warning diagnostics [#&#8203;20583](https://github.com/pulumi/pulumi/pull/20583) - \[sdk/nodejs] Don't attempt to serialise function values for resource inputs/outputs [#&#8203;20621](https://github.com/pulumi/pulumi/pull/20621) ### [`v3.198.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31980-2025-09-26) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.197.0...v3.198.0) ##### Features - \[engine] Expand snapshot integrity check for resources [#&#8203;20519](https://github.com/pulumi/pulumi/pull/20519) - \[sdk/go] Refactor Go policy SDK to have access to a pulumi Context object [#&#8203;20570](https://github.com/pulumi/pulumi/pull/20570) - \[sdk/python] Allow registered resources to be retrieved from the mock monitor for test assertions [#&#8203;20540](https://github.com/pulumi/pulumi/pull/20540) ##### Bug Fixes - \[engine] Fix snapshot integrity error with `run-program --refresh`, when a provider has a dependency that isn't being created [#&#8203;20541](https://github.com/pulumi/pulumi/pull/20541) - \[engine] Remove unneeded data from policy summary events [#&#8203;20589](https://github.com/pulumi/pulumi/pull/20589) - \[sdk] Fix plugin killing during cancellation [#&#8203;20543](https://github.com/pulumi/pulumi/pull/20543) - \[sdk/go] Fix \[Unm/M]arshalProperties to return nil when given nil [#&#8203;20544](https://github.com/pulumi/pulumi/pull/20544) ##### Miscellaneous - \[protobuf] Add loader\_target to LanguageRuntime.LinkRequest [#&#8203;20552](https://github.com/pulumi/pulumi/pull/20552) - \[cli/package] Move InstallPackage from cmd/packagecmd to cmd/packages [#&#8203;20550](https://github.com/pulumi/pulumi/pull/20550) - \[cli/package] Move stdout/stderr IO out of GenSDK and LinkPackage [#&#8203;20546](https://github.com/pulumi/pulumi/pull/20546) - \[sdk] Move PluginSpec.Install to pkg/workspace.InstallPluginContent [#&#8203;20537](https://github.com/pulumi/pulumi/pull/20537) - \[sdk/yaml] Bump pulumi-yaml to 1.23.2 [#&#8203;20588](https://github.com/pulumi/pulumi/pull/20588) ### [`v3.197.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31970-2025-09-17) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.196.0...v3.197.0) ##### Features - \[cli] Send new policy fields when publishing a policy pack - \[sdk/dotnet] Update dotnet to v3.88 [#&#8203;20512](https://github.com/pulumi/pulumi/pull/20512) ##### Bug Fixes - \[engine] Fix a panic in preview, that could happen in some cases when default providers get updated [#&#8203;20511](https://github.com/pulumi/pulumi/pull/20511) - \[components/python] Fix parenting of python components [#&#8203;20508](https://github.com/pulumi/pulumi/pull/20508) - \[sdk/python] Fix hang when shutting down in certain error conditions [#&#8203;20484](https://github.com/pulumi/pulumi/pull/20484) - \[sdk/python] Fix license-files entry for python package [#&#8203;20506](https://github.com/pulumi/pulumi/pull/20506) ### [`v3.196.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31960-2025-09-12) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.195.0...v3.196.0) ##### Miscellaneous - \[sdk] Add policy summary events apitypes [#&#8203;20443](https://github.com/pulumi/pulumi/pull/20443) - \[sdk] Add new policy fields apitypes [#&#8203;20491](https://github.com/pulumi/pulumi/pull/20491) - \[protobuf] Add support for indicating "not applicable" policies [#&#8203;20492](https://github.com/pulumi/pulumi/pull/20492) - \[protobuf] Add new analyzer policy fields [#&#8203;20494](https://github.com/pulumi/pulumi/pull/20494) ### [`v3.195.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31950-2025-09-10) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.194.0...v3.195.0) ##### Features - \[engine] Add support for capturing program stack traces as part of resource registration [#&#8203;20430](https://github.com/pulumi/pulumi/pull/20430) - \[sdk/go] Registered resources can now be retrieved from the mock monitor for test assertions [#&#8203;20472](https://github.com/pulumi/pulumi/pull/20472) - \[sdk/go] The current exports map is now available for unit testing through `GetCurrentExportMap` [#&#8203;20471](https://github.com/pulumi/pulumi/pull/20471) ##### Bug Fixes - \[pkg/go] Fix an issue where v3.194.0 of the `github.com/pulumi/pulumi/pkg/v3` module depends on APIs from `github.com/pulumi/pulumi/sdk/v3` that haven't been released [#&#8203;20487](https://github.com/pulumi/pulumi/issues/20487) ### [`v3.194.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31940-2025-09-08) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.193.0...v3.194.0) ##### Features - \[cli] Log diagnostics to stderr instead of stdout [#&#8203;20461](https://github.com/pulumi/pulumi/pull/20461) - \[cli/display] Change the default for --show-full-output from true to false [#&#8203;20467](https://github.com/pulumi/pulumi/pull/20467) - \[cli/display] Fix the --show-full-output the flag [#&#8203;20464](https://github.com/pulumi/pulumi/pull/20464) - \[sdk/go] Show a message that the Go program is being compiled [#&#8203;20460](https://github.com/pulumi/pulumi/pull/20460) ##### Bug Fixes - \[engine] Make ignoreChanges work better for arrays [#&#8203;20465](https://github.com/pulumi/pulumi/pull/20465) - \[programgen] Fix panic in RewriteApplies when encountering warning diagnostics [#&#8203;20453](https://github.com/pulumi/pulumi/pull/20453) ##### Miscellaneous - \[cli] No longer require the `PULUMI_EXPERIMENTAL` flag for Private Registry template operations (`pulumi template publish`, registry-based template resolution in `pulumi new`), while registry-backed template resolution in `pulumi new` may still be disabled using `PULUMI_DISABLE_REGISTRY_RESOLVE=true pulumi new` [#&#8203;20458](https://github.com/pulumi/pulumi/pull/20458) - \[sdk/yaml] Bump pulumi-yaml to 1.23.1 ### [`v3.193.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31930-2025-09-04) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.192.0...v3.193.0) ##### Bug Fixes - \[cli] Use "Private Registry", not cloud or Pulumi registry, in CLI output [#&#8203;20436](https://github.com/pulumi/pulumi/pull/20436) - \[cli/display] Avoid printing a double new line when showing secrets in the outputs [#&#8203;20435](https://github.com/pulumi/pulumi/pull/20435) - \[cli/display] Fix coloring of cobra error messages on windows - \[cli/{install,package}] Fix local package resolution when PULUMI\_EXPERIMENTAL=true by including local packages in registry fallback logic [#&#8203;20413](https://github.com/pulumi/pulumi/pull/20413) - \[cli/new] Fail when running with --language without --ai in non-interactive mode [#&#8203;20415](https://github.com/pulumi/pulumi/pull/20415) - \[cli/package] Fix not using already-installed package in 'pulumi package add' when PULUMI\_EXPERIMENTAL=1 ##### Miscellaneous - \[cli] Start the pprof server when receving SIGUSR1 [#&#8203;20392](https://github.com/pulumi/pulumi/pull/20392) - \[cli/display] Replace ijc/Gotty terminfo package with xo/terminfo [#&#8203;20446](https://github.com/pulumi/pulumi/pull/20446) - \[cli/display] Use the passed through writer in ShowProgressOutput instead of loading a new terminfo ### [`v3.192.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31920-2025-08-29) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.191.0...v3.192.0) ##### Features - \[cli/state] Add pulumi state taint/untaint commands to force replacement of resources upon next update [#&#8203;20380](https://github.com/pulumi/pulumi/pull/20380) - \[sdk/nodejs] Add `previewDestroy` to allow dry-runs of `destroy` commands [#&#8203;20371](https://github.com/pulumi/pulumi/pull/20371) ##### Bug Fixes - \[engine] Fix a bug causing hooks to never pass correctly to remote Go components [#&#8203;20390](https://github.com/pulumi/pulumi/pull/20390) - \[sdk/go] Fix source position information [#&#8203;20351](https://github.com/pulumi/pulumi/pull/20351) - \[sdk/nodejs] Fix function serialisation that contains minified classes [#&#8203;19345](https://github.com/pulumi/pulumi/pull/19345) - \[sdkgen/nodejs] Limit [@&#8203;types](https://github.com/types) packages used during local SDK generation [#&#8203;20387](https://github.com/pulumi/pulumi/pull/20387) - \[sdk/python] Set ThreadPoolExecutor max\_workers to parallelism \* 4 [#&#8203;20362](https://github.com/pulumi/pulumi/pull/20362) - \[sdk/python] Handle `-v` flag passed to policy packs [#&#8203;20373](https://github.com/pulumi/pulumi/pull/20373) - \[sdk/python] Forward errors raised in callbacks to the caller [#&#8203;20381](https://github.com/pulumi/pulumi/pull/20381) ##### Miscellaneous - \[cli] Log stack trace when interrupted when using verbose logging [#&#8203;20364](https://github.com/pulumi/pulumi/pull/20364) - \[cli] Print the location of the log file when running with the verbose flag [#&#8203;20365](https://github.com/pulumi/pulumi/pull/20365) - \[sdk/python] Remove custom typing stubs [#&#8203;20384](https://github.com/pulumi/pulumi/pull/20384) ### [`v3.191.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31910-2025-08-21) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.190.0...v3.191.0) ##### Features - \[cli] Document the `PULUMI_ENABLE_STREAMING_JSON_PREVIEW` envvar. [#&#8203;20328](https://github.com/pulumi/pulumi/pull/20328) ##### Bug Fixes - \[engine] Check providers returning 'version' or '\_\_internal' in their inputs [#&#8203;20313](https://github.com/pulumi/pulumi/pull/20313) - \[engine] Fix a panic with `refresh --run-program` [#&#8203;20337](https://github.com/pulumi/pulumi/pull/20337) - \[engine] Fix an infinite loop from passing unordered resources to the dependency system when using --refresh - \[programgen] Emit warnings instead of errors in non-strict mode when binding resource blocks [#&#8203;20347](https://github.com/pulumi/pulumi/pull/20347) - \[programgen] Simplify range value types when it is derived from object of objects and warn on unknown properties [#&#8203;20345](https://github.com/pulumi/pulumi/pull/20345) - \[programgen] Warn instead of erroring out when traversing a NoneType in PCL [#&#8203;20342](https://github.com/pulumi/pulumi/pull/20342) - \[cli/display] Escape non-graphic characters in URNs [#&#8203;20295](https://github.com/pulumi/pulumi/pull/20295) - \[cli/import] Disambiguate duplicate resource names by their types when importing [#&#8203;20348](https://github.com/pulumi/pulumi/pull/20348) - \[cli/new] Don't prompt for ai or template when passing --yes [#&#8203;20256](https://github.com/pulumi/pulumi/pull/20256) ##### Miscellaneous - \[cli] Log version and CLI metadata [#&#8203;20334](https://github.com/pulumi/pulumi/pull/20334) - \[cli/package] Pass ParameterizeParameters to SchemaFromSchemaSource [#&#8203;20324](https://github.com/pulumi/pulumi/pull/20324) ### [`v3.190.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31900-2025-08-15) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.189.0...v3.190.0) ##### Features - \[engine] Don't error on `ignoreChanges` paths that are missing old data, there is nothing to ignore in those cases and we just use the new data [#&#8203;20278](https://github.com/pulumi/pulumi/pull/20278) ##### Bug Fixes - \[cli] Fix `destroy --exclude-protected --remove` returning an error for empty stacks that could safely be removed [#&#8203;20283](https://github.com/pulumi/pulumi/pull/20283) - \[cli] Fix `pulumi template publish` failing with relative paths by normalizing to absolute paths before archive creation [#&#8203;20301](https://github.com/pulumi/pulumi/pull/20301) - \[cli/import] Use mapped name instead of logical name for resource references during import code generation [#&#8203;20300](https://github.com/pulumi/pulumi/pull/20300) - \[pkg] Make TypeScript code generation use 'declare' keyword instead of definite assertion operator, to avoid setting all fields to undefined when targeting environments new enough [#&#8203;20261](https://github.com/pulumi/pulumi/pull/20261) - \[sdkgen/nodejs] Make TypeScript a full dependency of local SDKs [#&#8203;20272](https://github.com/pulumi/pulumi/pull/20272) ##### Miscellaneous - \[build] Updates protobuf and grpc to v5, bumping dependencies in the Go, Node.js, and Python SDKs [#&#8203;19588](https://github.com/pulumi/pulumi/pull/19588) - \[build] Update latest Go version to 1.25 [#&#8203;20284](https://github.com/pulumi/pulumi/pull/20284) - \[sdkgen/nodejs] Target ES2020 for generated SDKs [#&#8203;20276](https://github.com/pulumi/pulumi/pull/20276) ### [`v3.189.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31890-2025-08-12) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.188.0...v3.189.0) ##### Features - \[sdk] Remove CacheMS from CLIVersionResponse [#&#8203;20264](https://github.com/pulumi/pulumi/pull/20264) - \[sdk/go] Calculate PluginInfo.Size on demand [#&#8203;20241](https://github.com/pulumi/pulumi/pull/20241) - \[auto/python] Surface `json` option to `pulumi preview` calls in Python when using the `pulumi.automation` package. [#&#8203;20233](https://github.com/pulumi/pulumi/pull/20233) ##### Bug Fixes - \[cli/package] Fix incorrect console URLs being displayed after publishing a policy [#&#8203;20255](https://github.com/pulumi/pulumi/pull/20255) - \[engine] Fix race when reading plugin stdout [#&#8203;20242](https://github.com/pulumi/pulumi/pull/20242) - \[sdk/nodejs] Fix component providers when using pnpm [#&#8203;20253](https://github.com/pulumi/pulumi/pull/20253) ##### Miscellaneous - \[pkg] Make TypeScript code generation use nullish coalesce operator for required property checks, as well as state and args accessing whenever sensible - \[sdk/nodejs] Fix swapped stderr/stdout callback comments in PreviewOptions interface [#&#8203;20250](https://github.com/pulumi/pulumi/pull/20250) - \[sdkgen] Don’t create empty maps for language specific overrides [#&#8203;20237](https://github.com/pulumi/pulumi/pull/20237) ### [`v3.188.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31880-2025-08-07) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.187.0...v3.188.0) ##### Features - \[cli] Add `--remove-backups` flag to `pulumi stack rm` for DIY backends [#&#8203;20203](https://github.com/pulumi/pulumi/pull/20203) ##### Bug Fixes - \[cli] Fix cancellation when running via some CLI wrapper tools [#&#8203;20195](https://github.com/pulumi/pulumi/pull/20195) - \[cli] Fix concurrent read/write during plugin downloads [#&#8203;20223](https://github.com/pulumi/pulumi/pull/20223) - \[cli] Restore terminal mode on panic [#&#8203;20224](https://github.com/pulumi/pulumi/pull/20224) - \[engine] Fix panic in refreshes due to concurrent map writes [#&#8203;20206](https://github.com/pulumi/pulumi/pull/20206) - \[sdkgen] Warn about refs of the form "#/resources/pulumi:providers:<pkg>" [#&#8203;20192](https://github.com/pulumi/pulumi/pull/20192) - \[cli/display] Show changed outputs in preview [#&#8203;20161](https://github.com/pulumi/pulumi/pull/20161) - \[cli/engine] Make `--exclude` correctly handle wildcards in all cases [#&#8203;20158](https://github.com/pulumi/pulumi/pull/20158) - \[sdk/go] Fix running against old CLI versions without SignalAndWaitForShutdown [#&#8203;20212](https://github.com/pulumi/pulumi/pull/20212) - \[sdk/python] Fix dependency installation in uv workspaces [#&#8203;20218](https://github.com/pulumi/pulumi/pull/20218) ##### Miscellaneous - \[cli] Update pulumi-dotnet to 3.87.0 [#&#8203;20222](https://github.com/pulumi/pulumi/pull/20222) - \[cli/env] Bump esc to v0.17.0 [#&#8203;20197](https://github.com/pulumi/pulumi/pull/20197) ### [`v3.187.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31870-2025-07-31) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.186.0...v3.187.0) ##### Features - \[cli] Support for writing v4 checkpoints/deployments [#&#8203;20159](https://github.com/pulumi/pulumi/pull/20159) - \[cli] Add support for qualified registry template names in `pulumi new` [#&#8203;20138](https://github.com/pulumi/pulumi/pull/20138) - \[cli/import] Enable `pulumi import` to always `--generate-resources` when converting `--from` state files [#&#8203;20178](https://github.com/pulumi/pulumi/pull/20178) - \[yaml] Allow config values to be parsed with type `object` [#&#8203;20132](https://github.com/pulumi/pulumi/pull/20132) - \[auto/python] Allow for `on_error` callbacks in commands to capture stderr incrementally [#&#8203;20019](https://github.com/pulumi/pulumi/pull/20019) - \[sdk/nodejs] Add option of Bun as a package manager [#&#8203;18412](https://github.com/pulumi/pulumi/pull/18412) - \[sdk/nodejs] Copy `getRootDirectory` to the pulumi module [#&#8203;20173](https://github.com/pulumi/pulumi/pull/20173) - \[sdk/python] Copy `get_root_directory` to the pulumi module [#&#8203;20172](https://github.com/pulumi/pulumi/pull/20172) ##### Bug Fixes - \[cli] Fix un-taring registry-backed templates which come in .tar.gz format [#&#8203;20135](https://github.com/pulumi/pulumi/pull/20135) - \[cli] Stop passing Accept: application/x-tar to registry template download URLs to avoid signature mismatch [#&#8203;20133](https://github.com/pulumi/pulumi/pull/20133) - \[engine] Fix a panic with `up --refresh --run-program` and resource replacements [#&#8203;20147](https://github.com/pulumi/pulumi/pull/20147) - \[engine] Untargeted resources in `destroy` now correctly register as same steps [#&#8203;20061](https://github.com/pulumi/pulumi/pull/20061) - \[cli/engine] Fix hang when waiting for program that would never complete [#&#8203;20153](https://github.com/pulumi/pulumi/pull/20153) - \[sdk/nodejs] Fix delete hooks in inline automation API programs [#&#8203;20143](https://github.com/pulumi/pulumi/pull/20143) - \[sdk/python] Set features inside construct [#&#8203;20141](https://github.com/pulumi/pulumi/pull/20141) ##### Miscellaneous - \[sdk/nodejs] Bump TypeScript target to ES2020 for plugins and policy packs [#&#8203;20148](https://github.com/pulumi/pulumi/pull/20148) ### [`v3.186.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31860-2025-07-25) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.185.0...v3.186.0) ##### Features - \[engine] Send `Cancel` message to language runtime plugins on engine shutdown [#&#8203;20007](https://github.com/pulumi/pulumi/pull/20007) - \[engine] Pass stack tags to policy plugins on startup [#&#8203;20084](https://github.com/pulumi/pulumi/pull/20084) - \[yaml] Expose `object` as a possible config type in preparation for `pulumi-yaml` support [#&#8203;20129](https://github.com/pulumi/pulumi/pull/20129) ##### Bug Fixes - \[cli/engine] --exclude and --exclude-protected flags now work together correctly for `destroy` commands [#&#8203;20120](https://github.com/pulumi/pulumi/pull/20120) - \[engine] Fix a datarace in the engine event system [#&#8203;20105](https://github.com/pulumi/pulumi/pull/20105) - \[engine] Fix a panic in the engine when running `up --refresh --run-program` and finding a deleted resource - \[sdk/nodejs] Avoid "Cannot convert object to primitive value" error when running into type errors [#&#8203;20092](https://github.com/pulumi/pulumi/pull/20092) - \[sdk/nodejs] Don’t use automatic ESM mode when `—import` or `—require` is set [#&#8203;20091](https://github.com/pulumi/pulumi/pull/20091) - \[sdk/nodejs] Fix callback server hang & delete hooks in Node.js [#&#8203;20109](https://github.com/pulumi/pulumi/pull/20109) - \[sdk/nodejs] Don’t report leaked promises when we exit abnormally [#&#8203;20128](https://github.com/pulumi/pulumi/pull/20128) - \[cli/package] Force new style Go modules to be written out when using `package add` [#&#8203;20011](https://github.com/pulumi/pulumi/pull/20011) - \[sdk/python] Run uv sync on uv command [#&#8203;20117](https://github.com/pulumi/pulumi/pull/20117) ##### Miscellaneous - \[yaml] Update yaml to 1.21.3 [#&#8203;20118](https://github.com/pulumi/pulumi/pull/20118) ### [`v3.185.0`](https://github.com/pulumi/pulumi/blob/HEAD/CHANGELOG.md#31850-2025-07-21) [Compare Source](https://github.com/pulumi/pulumi/compare/v3.184.0...v3.185.0) ##### Features - \[cli/{install,package}] Allow using `pulumi package add` with registry identifiers [#&#8203;19928](https://github.com/pulumi/pulumi/pull/19928) ##### Bug Fixes - \[engine] Fix a snapshot integrity issue with `destroy --run-program` and resource reads [#&#8203;20078](https://github.com/pulumi/pulumi/pull/20078) - \[sdkgen/python] Remove unnecessary `import copy` [#&#8203;20089](https://github.com/pulumi/pulumi/pull/20089) - \[sdkgen/python] Support properties named "builtins" [#&#8203;20085](https://github.com/pulumi/pulumi/pull/20085) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMjAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIyMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/pulumi-pulumi-3.x-lockfile:renovate/pulumi-pulumi-3.x-lockfile
git switch renovate/pulumi-pulumi-3.x-lockfile

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff renovate/pulumi-pulumi-3.x-lockfile
git switch renovate/pulumi-pulumi-3.x-lockfile
git rebase main
git switch main
git merge --ff-only renovate/pulumi-pulumi-3.x-lockfile
git switch renovate/pulumi-pulumi-3.x-lockfile
git rebase main
git switch main
git merge --no-ff renovate/pulumi-pulumi-3.x-lockfile
git switch main
git merge --squash renovate/pulumi-pulumi-3.x-lockfile
git switch main
git merge --ff-only renovate/pulumi-pulumi-3.x-lockfile
git switch main
git merge renovate/pulumi-pulumi-3.x-lockfile
git push origin main
Sign in to join this conversation.
No description provided.