Skip to content

Releases: temporalio/sdk-python

1.29.0

17 Jun 21:23
4b4e34e

Choose a tag to compare

Notable Changes

Added

  • Added experimental temporalio.workflow.signal_with_start_workflow, backed by
    generated system Nexus bindings for
    WorkflowService.SignalWithStartWorkflowExecution.
  • Added OpenAI Agents plugin support for CustomTool dispatch, including lazy
    tool discovery through defer_loading.

Changed

  • Client connections now use gzip transport-level gRPC compression by default.
    Pass grpc_compression=GrpcCompression.NONE to Client.connect or
    CloudOperationsClient.connect to disable it.

Breaking Changes

  • StartWorkflowUpdateWithStartInput now owns the authoritative
    rpc_metadata and rpc_timeout fields for
    OutboundInterceptor.start_update_with_start_workflow. These fields were
    removed from the nested update-with-start input objects, so custom
    interceptors that accessed them there should read or update the top-level
    fields instead.

Fixed

  • Fixed breakpoint() and pdb.set_trace() inside workflow code when a worker
    runs with debug_mode=True or TEMPORAL_DEBUG=1; sandboxed workflows without
    debug mode now get a clearer error pointing to debug_mode=True.

  • Fixed start_update_with_start_workflow interceptor handling so RPC metadata
    and timeouts are forwarded to the underlying execute_multi_operation call.

  • Fixed OpenAI Agents plugin streamed event serialization when pydantic had not
    yet built deferred schemas, and fixed terminal sandbox errors retrying
    forever.

  • Removed the lazy-connect lock from the per-RPC hot path. It was previously
    acquired on every RPC, putting an event-loop-bound primitive on the hot path;
    it is now skipped once the client is connected. This reduces the client's
    coupling to the event loop it connected on, which can help when reusing a
    single long-lived Client across event loops or threads (e.g. the
    dedicated-loop pattern used with gevent/gunicorn and synchronous services).
    Note this does not make a Client fully thread- or loop-agnostic; reusing one
    long-lived loop is still the recommended pattern.

    SDK Core

What's Changed

New Contributors

Full Changelog: 1.28.0...1.29.0

1.28.0

04 Jun 17:50
bda846f

Choose a tag to compare

Experimental Releases

Strands Agents Plugin

This release adds a new Temporal Plugin for running Strands Agents inside Temporal Workflows. Model invocations, tool calls, and MCP tool calls are routed through Temporal Activities, so your agents get durable execution, retries, and timeouts for free.

Workflow Streams support for LangGraph

The LangGraph plugin can now durably stream node output to external consumers. Values written with langgraph.config.get_stream_writer() are published to a Workflow Streams topic.

Standalone Nexus Operations

Standalone Nexus Operations is experimental and currently only supported on pre-release versions of the dev server.

Added support for Standalone Nexus Operations, allowing clients to start and manage Nexus operations directly outside of a Workflow. Documentation, Samples, and instructions to request enablement in Temporal Cloud will be linked here when available.

⚠️ Possible Local Activity Behavioral Difference

This release includes a bugfix in the Core library that changes incorrect behavior that may have unintentionally worked previously. Specifically, local activities that start running, and continue running while their associated workflow was evicted from the cache, could possibly be "re-attached" to the workflow if it was recreated before they finished. This behavior was unsound. Now, any running local activities are invalidated when a workflow is evicted. This change was really only likely to be encountered if you were running with the workflow cache disabled, which we never recommend doing.

What's Changed

New Contributors

Core Changes

2026-04-28 - 0f2f1b4c - chore: feature cleanup (temporalio/sdk-rust#1236)
2026-04-28 - 6f7e7536 - Move Core-specific test utilities out of the Common crate (temporalio/sdk-rust#1237)
2026-04-29 - 21263fa1 - 💥 feat(sdk): failure converter + rich error types (temporalio/sdk-rust#1226)
2026-04-29 - 9747e978 - Update cloud-api protos to v0.14.0 (temporalio/sdk-rust#1240)
2026-04-29 - a9481aae - bump versions 0.4.0 (temporalio/sdk-rust#1241)
2026-04-30 - 87162f50 - chore: upgrade doc code to no_run (temporalio/sdk-rust#1242)
2026-05-01 - 3a6efc35 - Fix flaky shutdown test (temporalio/sdk-rust#1243)
2026-05-01 - 9d1bdf90 - fix(macros): drop anyhow dependency from workflow_methods expansion (temporalio/sdk-rust#1246)
2026-05-05 - a22517e4 - chore: remove unnecessary anyhow wrapping (temporalio/sdk-rust#1247)
2026-05-12 - c57f825f - Add grpc-status trailers to fake gRPC responses (temporalio/sdk-rust#1257)
2026-05-13 - 99d6b402 - chore: update readme to mention public preview (temporalio/sdk-rust#1262)
2026-05-14 - 2ed11c8e - Enforce minimum DNS resolution interval (temporalio/sdk-rust#1272)
2026-05-14 - 68665e50 - Bump windows test leg to 20 minutes (temporalio/sdk-rust#1270)
2026-05-14 - a0ad8769 - feat(dns): add DNS load balancer settings to C bridge (temporalio/sdk-rust#1267)
2026-05-14 - eac03fbc - Upgrade cloud-api to v0.15.0 (temporalio/sdk-rust#1253)
2026-05-15 - 3e6ca9ff - VLN-1346: fix missing-dependency-cooldown (temporalio/sdk-rust#1275)
2026-05-15 - 6d2045dd - Make TLS backend feature-selectable in sdk-core and client (temporalio/sdk-rust#1274)
2026-05-18 - 56a4737e - fix: retry transport-sourced Cancelled errors and count them in metrics (temporalio/sdk-rust#1269)
2026-05-18 - 72374ca1 - (CI) Disable caching cargo binaries (temporalio/sdk-rust#1278)
2026-05-18 - de25e0c8 - fix(sdk): no longer error on cancelling fired timer (temporalio/sdk-rust#1268)
2026-05-19 - 179d7608 - refactor(examples): extract saga compensation into a reusable Saga pattern (temporalio/sdk-rust#1279)
2026-05-19 - 68a9661f - build(deps): update ringbuf requirement from 0.4 to 0.5 (temporalio/sdk-rust#1285)
2026-05-19 - 6c4011d1 - Update README & add banner (temporalio/sdk-rust#1280)
2026-05-19 - d6cfb9c7 - build(deps): update lru requirement from 0.16 to 0.18 (temporalio/sdk-rust#1276)
2026-05-21 - 96e0be0f - Add uds support in channel creation (temporalio/sdk-rust#1288)
2026-05-21 - d58edd2d - Add activity execution interceptors (temporalio/sdk-rust#1277)
2026-05-26 - 3839fa94 - feat(client): support custom ServerCertVerifier in TlsOptions (temporalio/sdk-rust#1271)
2026-05-26 - 5aaabd10 - 💥 WASM Workflows (temporalio/sdk-rust#1239)
2026-05-26 - 5d9faa8d - chore(sdk): rename child_workflow -> start_child_workflow (https://github.com/temporalio/sdk-core/...

Read more

1.26.1

18 May 16:55
f2350cb

Choose a tag to compare

Fix for worker shutdown ordering

There was an issue with worker shutdown when the frontend.enableCancelWorkerPollsOnShutdown dynamic config flag is enabled on server. The issue was causing shutdown to stall until the full 30s worker shutdown timeout was hit, as server was waiting for a message that the SDK was not sending. This fixes the SDK to send the proper message, allowing shutdown to occur normally.

What's Changed

  • [backport 1.26.1] Update core to pickup shutdown fix by @yuandrew in #1527

Full Changelog: 1.26.0...1.26.1

1.25.1

18 May 16:10
72e0390

Choose a tag to compare

Fix for worker shutdown ordering

There was an issue with worker shutdown when the frontend.enableCancelWorkerPollsOnShutdown dynamic config flag is enabled on server. The issue was causing shutdown to stall until the full 30s worker shutdown timeout was hit, as server was waiting for a message that the SDK was not sending. This fixes the SDK to send the proper message, allowing shutdown to occur normally.

What's Changed

  • [backport 1.25.1] Update core to pickup shutdown fix by @yuandrew in #1526

Full Changelog: 1.25.0...1.25.1

1.24.2

15 May 19:17
6ee7066

Choose a tag to compare

Bug Fixes

  • Removed upper bound constraint on types-protobuf dependency (#1525). The previous ceiling (<5.29.1) could cause dependency conflicts for users on newer types-protobuf versions. The constraint now matches the protobuf range (>=3.20,<7.0.0).

What's Changed

Full Changelog: 1.24.1...1.24.2

1.27.2

14 May 02:19
c9e2873

Choose a tag to compare

DNS Resolver Load Balancing Configuration

A new load balancing feature was added in temporalio/sdk-rust#1212 which has caused networking issues in certain networking setups. This is now disabled by default via the change listed below.

What's Changed

1.27.1

13 May 16:22
ddc2b29

Choose a tag to compare

DNS Resolver Load Balancing Configuration

A new load balancing feature was added in temporalio/sdk-rust#1212 which has caused networking issues in certain networking setups. That can now be disabled via DnsLoadBalancingConfig.

What's Changed

  • Fix flaky pause_and_assert helper by @brianstrauch in #1493
  • Fix flaky LangGraph timeout tests by @DABH in #1495
  • feat(otel): remove span creation for saa operations that do not currently propagate tracing headers. by @cconstable in #1492
  • CaN USE_RAMPING_VERSION versioning behaviour by @THardy98 in #1499
  • Say 'client_region' in S3 diagnostics for clarity by @drewhoskins-temporal in #1494
  • contrib/openai_agents: stream model events via Workflow Streams by @jssmith in #1497
  • contrib/google_adk_agents: stream LlmResponse chunks via Workflow Streams by @jssmith in #1498
  • Fix CI, bump openinference-instrumentation-google-adk to 0.1.11 by @brianstrauch in #1508
  • AI-183: Respect LANGSMITH_TRACING env var in LangSmith plugin by @xumaple in #1509
  • Fix minor API break from latest OpenAI Agents version by @tconley1428 in #1511
  • Plumb through option for configuring DNS resolver by @Sushisource in #1501

Core Changes

None!

1.24.1

13 May 21:48
2994717

Choose a tag to compare

Fix for worker shutdown ordering

There was an issue with worker shutdown when the frontend.enableCancelWorkerPollsOnShutdown dynamic config flag is enabled on server. The issue was causing shutdown to stall until the full 30s worker shutdown timeout was hit, as server was waiting for a message that the SDK was not sending. This fixes the SDK to send the proper message, allowing shutdown to occur normally.

What's Changed

Full Changelog: 1.24.0...1.24.1

1.27.0

30 Apr 22:43
19aa13e

Choose a tag to compare

💥 External Storage Reference Format Change (Experimental)

External storage reference event history format has been incompatibly changed from prerelease. New storage references are emitted in the new format starting with release. Support for the ability to retrieve references in the old format has been preserved. The prerelease format is deprecated and will be removed in a future release.

Workflow Streams

This release adds Workflow Streams, a public preview contrib library that gives a workflow a durable, offset-addressed event channel for keeping outside observers updated on workflow and activity progress. It's built on Temporal's existing signals, updates, and queries, with batching, exactly-once deduplication, topic filtering, and continue-as-new helpers layered on top. Intended uses are streaming UIs for long-running AI agents, status for in-flight payment or order processing, and progress for data pipelines. It is not for not ultra-low-latency cases like real-time voice.

What's Changed

Core Changes

2026-04-10 - 08adc4a4 - feat(sdk): add typed continue as new (temporalio/sdk-rust#1209)
2026-04-14 - 00d3888a - feat(client): ergonomic workflow description (temporalio/sdk-rust#1215)
2026-04-14 - c78bfb67 - Support static_summary, static_details and current_details` in the Rust sdk (temporalio/sdk-rust#1208)
2026-04-14 - d24a6f77 - chore(ci): bump macos-intel timeout (temporalio/sdk-rust#1214)
2026-04-15 - d7ebff81 - Add DNS load balancing (temporalio/sdk-rust#1212)
2026-04-16 - 33b86805 - fix(sdk): normalize how user metadata is encoded (temporalio/sdk-rust#1216)
2026-04-16 - 33c6c5e2 - Optimize dependencies (temporalio/sdk-rust#1219)
2026-04-16 - 72d8c5d3 - Fix test broken on windows by fake server binding to ipv6 (temporalio/sdk-rust#1220)
2026-04-16 - 904f4793 - Remove unused parking lot send guard feature (temporalio/sdk-rust#1218)
2026-04-17 - 1e67b234 - chore: Update and pin all GHA actions (temporalio/sdk-rust#1222)
2026-04-20 - 9171aca4 - 💥 feat(sdk): enforce some activity to close timeout is set (temporalio/sdk-rust#1221)
2026-04-21 - 703fe6b2 - Fix NDE when multiple patches in a single WFT exceed SA's 2048-byte limit (temporalio/sdk-rust#1225)
2026-04-22 - 984da134 - Set WFT Failed cause on grpc message too large incidents (temporalio/sdk-rust#1229)
2026-04-23 - 64cb6ed2 - Shutdown rpc initiate shutdown (temporalio/sdk-rust#1224)
2026-04-24 - 6dd29f2d - chore: rename master -> main in docs/crates/workflows (temporalio/sdk-rust#1233)
2026-04-25 - 30c4a313 - bump versions to 0.3.0 (temporalio/sdk-rust#1235)
2026-04-26 - 2872b536 - Update upstream api to latest (temporalio/sdk-rust#1234)

New Contributors

Full Changelog: 1.26.0...1.27.0

1.26.0

15 Apr 23:47
447472e

Choose a tag to compare

OpenAI Agents SDK Sandbox Support

This release adds support for the OpenAI Agents SDK's SandboxAgent in Temporal workflows. All sandbox lifecycle and I/O operations (create, exec, read, write, PTY, etc.) are automatically routed through Temporal activities, making them durable and replayable. If an agent fails mid-execution, Temporal ensures it picks up right where it left off in its sandbox. To use it, pass sandbox clients (e.g. DaytonaSandboxClient) to OpenAIAgentsPlugin(sandbox_clients=...). This release also updates compatibility with the latest OpenAI Agents SDK.

Breaking Changes

2026-04-09 - 4f05fc58 - 💥 Record task latency even for WFT failures that were dropped (temporalio/sdk-rust#1207) - The temporal_workflow_task_execution_latency metric is slightly more inclusive than it was in the past, and it can now include some WFT failures that may previously have been omitted

What's Changed

Core Changes

2026-04-06 - a4fc7933 - feat(sdk): env config (temporalio/sdk-rust#1195)
2026-04-06 - ef57d63f - Correctly convert default_versioning_behavior in C bridge (temporalio/sdk-rust#1199)
2026-04-08 - 1f6cfb6c - fix(core): add in scheme port if none present (temporalio/sdk-rust#1205)
2026-04-08 - 723c2836 - feat(sdk): add samples (temporalio/sdk-rust#1190)
2026-04-08 - d96a8d2f - Move CODEOWNERS under .github/ (temporalio/sdk-rust#1198)
2026-04-09 - 630e7795 - Make sure legacy queries are failed if gRPC message too large (temporalio/sdk-rust#1206)
2026-04-10 - b544f95d - Expose Nexus Endpoint in a Nexus Operation Handler (temporalio/sdk-rust#1211)

New Contributors

Full Changelog: 1.25.0...1.26.0