Releases: temporalio/sdk-python
1.20.0
Worker Heartbeating (Public Preview)
This release adds a new feature called Worker Heartbeating. This feature spins up a single nexus-only worker per Client/Namespace/Task Queue in the background and periodically sends some basic metrics over to server for all of the workers registered on the same Client/Namespace/Task Queue.
Server version 1.29.1 and newer supports this feature. This feature will be enabled by default, although this currently requires a server dynamic config flag, --dynamic-config-value frontend.WorkerHeartbeatsEnabled=true to enable. Currently, the only way to interact with this new data is to also enable the flag --dynamic-config-value frontend.ListWorkersEnabled=true, then use CLI commands temporal worker list and temporal worker describe to query the data. If heartbeating is enabled with a server version older or with the config flag off, a single warning log Worker heartbeating configured for runtime, but server version does not support it. on worker startup will emit.
Highlights
- Core was upgraded from 682d441 to 45b1d7e.
Runtimeuse across forks now eagerly fails, making it fail in a more obvious way. Specifically, using aRuntimefrom a different process ID will now eagerly fail.
Breaking changes
- Core crate names have changed, see temporalio/sdk-core#1034 for more details. If users are directly referencing these crate names, like for setting log levels, they will need to be updated to the new names.
Specific Changes
2025-11-17 - 5d1630d - Nexus task cancellation (#1204)
2025-11-17 - ceb7058 - Prevent Runtime use over forks (#1208)
2025-11-21 - 3fd1c7e - Fix up plugin readme (#1211)
2025-11-24 - 6d2924b - Add Summary to Nexus operations (#1219)
2025-11-24 - 77f2346 - use sys.stdlib_module_names in restrictions. Move dynamic import warning to only apply to non-passed through modules (#1222)
2025-11-25 - b5001f9 - Update Core, configure worker types, send plugin names to Core (#1157)
1.19.0
Sandbox Importing Changes
Modules imported after workflows have been loaded into the sandbox now produce a warning message by default. See the Import Notification Policy docs for more info and customization options.
OpenAI Agents Changes
- Add new upper bound of version
0.5.0foropenai-agents
Breaking Changes
- Python 3.9 support has been removed now that it has reached end of life status.
Plugininterfaces have been updated to use invocation provided callables instead of initializers.MCPServerProvidersnow require anameargument.TestModelandTestModelProviderhave been moved fromtemporalio.contrib.openai_agentstotemporalio.contrib.openai_agents.test
Specific Changes
2025-09-30 - 4a70f3d - Update version to 1.18.1 (#1135)
2025-10-01 - a31886d - Serialization context (#1102)
2025-10-02 - 4f08626 - Use type in start/execute activity/workflow to address Pyright Strict mode error (#1137)
2025-10-06 - 26e2e61 - Generate RPC calls in Bridge Client (#1123)
2025-10-06 - 5ca4861 - Provide option to disable activity registration (#1140)
2025-10-07 - 42fe382 - Flaky session test (#1141)
2025-10-07 - 5e93e63 - 💥 Plugin Overhaul (#1139)
2025-10-07 - d27bb11 - Move visitor, bridge client generation, and formatting to poe tasks (#1142)
2025-10-07 - e4df5e7 - Add googleapis-common-protos to fix tests in build-binaries workflow (#1143)
2025-10-09 - cde3427 - Use macOS 15 intel runners (#1148)
2025-10-14 - 162cff7 - 💥 Allow arguments to be provided to MCP Server creation (#1147)
2025-10-14 - 70deb94 - Replace Proto modules with the python path (#1156)
2025-10-14 - 788d391 - Remove experimental notices for worker tuners (#1152)
2025-10-16 - 2ad41ab - Replace tctl references with Temporal CLI (#1165)
2025-10-16 - 2efd9a7 - Add start_update_with_start_workflow to Otel Interceptor (#1150)
2025-10-20 - 4fe685a - Allow h2 error message (#1170)
2025-10-20 - 778fc9a - Support python 3.14 and deprecate python 3.9 (#885)
2025-10-20 - f03ddc2 - Add programming language classifiers to fix badge on next publish (#1151)
2025-10-22 - 5994a45 - Avoid token detaching from different context (#1153)
2025-10-22 - c8cbfe0 - Modify code comment for Worker build_id field #1160 (#1163)
2025-10-24 - 7f794d0 - Update license in pyproject.toml (#1175)
2025-10-24 - 988b12c - Allow openai 0.4, update lock to use it (#1182)
2025-10-25 - 27903f7 - Add nightly throughput stress (#1173)
2025-10-27 - 231cc67 - Adds proper failure decoding in workflow activation (#1192)
2025-10-27 - 630a031 - Match openai logic to retry on >= 500 not == 500 (#1181)
2025-10-27 - 8f754b4 - Opentelemetry baggage propagation fix (#1174)
2025-10-27 - ba3d50f - Add a test for split worker scenario (#1193)
2025-10-27 - e39e8f2 - Add option to run models as local activities (#1183)
2025-10-28 - 0eb96eb - Sandbox importing (#1187)
2025-10-28 - c3448cc - Skip flaky test on versions with importer bug (#1195)
2025-10-29 - 1b70f07 - Tps nightly small improvements (#1200)
2025-10-30 - 35347b9 - Fix: Resolve TypeError in value_to_type on Python 3.13 (issue #1188) (#1189)
2025-10-30 - 5f24792 - 💥 Expose agent testing utils (#1164)
2025-10-30 - 660ac2b - VLN-492: Set explicit permissions for GitHub Actions workflows (#1199)
2025-10-30 - a08250a - refactor: use classmethod in factory methods (#1179)
2025-11-06 - 4156856 - fix: typo in time sandboxed utilities (#1205)
2025-11-06 - e543e8a - fix: typed search contains should work for falsy values (#1206)
1.18.2
Bug fixes
- Ensure
causefields ofFailureprotos are encoded with user codecs.
Specific Changes
2025-10-27 - e4969c0 - Adds proper failure decoding in workflow activation (#1192)
Full Changelog: 1.18.1...1.18.2
1.14.2
Bug fixes
- Pin
nexus-rpcversion to prevent accidental upgrade to a breaking version.
Specific Changes
2025-10-23 - 988ad10 - Lock nexus-rpc to 1.1.0
Full Changelog: 1.14.1...1.14.2
1.18.1
Bug fixes
- Search attributes on child workflows would fail when using a payload codec
- Looping agent handoffs would try to use the original model outside an activity
Specific Changes
2025-09-24 - 2f04a16 - Fix flaky test: test_workflow_return_is_honored_when_it_precedes_signal_completion_command (#1115)
2025-09-24 - 6dd59dd - Fix flaky test: test_workflow_patch_memoized (#1114)
2025-09-25 - fd51efa - Fix model replacement on looping handoffs (#1122)
2025-09-29 - 02322ad - pytest and pydoctor QOL improvements (#1124)
2025-09-29 - 1afaa44 - Fix flaky test: test_workflow_cancel_activity (#1119)
2025-09-29 - 47781f7 - Fix Flaky Test: test_custom_slot_supplier (#1126)
2025-09-29 - 4e9cbab - Fix search attribute skipping on protos which don't use the SearchAttributes message type (#1131)
2025-09-29 - e92514a - Extend timeout on test_session execution (#1128)
2025-09-29 - ed1f6ca - Expose strict_json_schema in activity_as_tool (#1094)
Full Changelog: 1.18.0...1.18.1
1.18.0
OpenAI Agents Changes
- Support and new lower bound of version
0.3.0foropenai-agents - Workflow failure exceptions will now correctly fail the workflow from inside the
Runner - Expanded MCP support
Breaking Changes
- The
encode_failuremethod onPayloadConverteris no longer called in all cases it once was, usingencode_payloadinstead. This only affects customPayloadConverterimplementations which overloadencode_failureto work differently fromencode_payload - The advanced
WorkerTuner.create_compositehas a new required field:nexus_supplier - Only enable native roots if CA override not specified - see temporalio/sdk-core#1007 in sdk-core
Specific Changes
2025-09-02 - 3f7bd33 - Fix build binaries (#1074)
2025-09-03 - 42135f0 - Delete unused helper (#710)
2025-09-03 - 70e5bea - Fix nexus cancellation wait completed test (#1073)
2025-09-03 - a004faa - Python support for activity reset (#1065)
2025-09-03 - a3c5370 - Bump tracing-subscriber from 0.3.19 to 0.3.20 in /temporalio/bridge (#1068)
2025-09-03 - a46a742 - Fix code sample alignment & trim trailing whitespace (#1038)
2025-09-03 - bef76a6 - Even more convenient proto generation (#1039)
2025-09-03 - c643e8a - Tweak .result() doc (#706)
2025-09-03 - c8b0b78 - Reraise workflow failure errors from OpenAI's UserError (#1060)
2025-09-04 - 44412ae - Expose Last Completion Result and Previous Run Failure (#1067)
2025-09-04 - 5e9b2ba - Minor edits and code cleanup (#609)
2025-09-04 - 7be26da - Add a test for output type coercion (#1076)
2025-09-04 - c3426ce - Fix return type of workflow.wait (#650)
2025-09-04 - e92f391 - Add Summary to LocalActivityConfig and apis (#1061)
2025-09-08 - 9372d47 - Fix openai plugin bug (#1083)
2025-09-09 - 30a6b8d - Only set payload converter, fail if already set (#1086)
2025-09-09 - 44f0c42 - Added retry policy to activity info (#1055)
2025-09-10 - 101d89d - Don't set error status on otel spans for benign exceptions (#1085)
2025-09-10 - 634c5ec - 💥 Add generic payload visitor for WorkflowActivation[Completion] (#1075)
2025-09-10 - 706c89b - Changes to adapt to openai version 0.2.11 (#1092)
2025-09-11 - e782160 - uv.lock (#1096)
2025-09-12 - 9d70d44 - Add support for gRPC binary metadata values (#1070)
2025-09-12 - ce8dc4a - Remove validatoriterator workarounds (#1046)
2025-09-13 - 84b184f - Nexus worker concurrency control (#1066)
2025-09-16 - 2a2b83b - Update protobuf (#1082)
2025-09-18 - 0e1fa4f - Make env config TLS disabled field optional (#1105)
2025-09-19 - 7605619 - Rename mcp_servers to mcp_server_providers (#1110)
2025-09-19 - 8c4e2c8 - MCP server support (#1021)
1.17.0
Nexus features
- Nexus operation handlers can now use
id_conflict_policy=WorkflowIDConflictPolicy.USE_EXISTINGso that multiple callers "attach" to the same workflow. - Correct handling of
WorkflowAlreadyStartedError
Specific Changes
2025-08-25 - a9c71aa - Support multiple nexus callers attaching to same workflow (#1051)
2025-08-26 - 2affa25 - Python Nexus convert workflow start errors to Nexus errors (#1052)
2025-08-27 - 229fe37 - Fix a few typos in plugin readme (#1062)
2025-08-28 - 7f228d8 - Test workflow outbound nexus interception (#1064)
2025-08-29 - bb90aab - Don't fail on newtype string dict keys (#1059)
2025-09-02 - 251084d - Fix nexus cancellation type test flake (#1057)
2025-09-02 - 85c47f7 - Bump version for release (#1069)
2025-09-02 - 8bb0b80 - Changed openai-agents dependency to <=0.2.9, upgraded uv.lock (#1072)
1.16.0
Task Queue Fairness (Pre-release)
This release adds support for Task Queue Fairness. Fairness is a new feature of Temporal's task queues that allows for more control over the order that tasks are dispatched from a backlog. It's intended to address common situations like multi-tenant applications and reserved capacity bands.
Nexus cancellation types (Pre-release)
A cancellation type can now be set when starting a nexus operation. This determines the behavior of the Nexus operation when the caller workflow initiates cancellation. See the NexusOperationCancellationType enum.
💥 Changes to execute_child_workflow API
In order to align execute_child_workflow with start_child_workflow and make ChildWorkflowConfig usable for both, the summary argument has been replaced with static_summary. See (#1019)
💥 Plugin Changes (Experimental Feature)
The plugin interface has been changed. Implementors now have to implement each method so as to consider whether they need to make any customizations in those areas. In addition, the plugin has new methods which allow customization of a Replayer. See (#1011)
Specific Changes
2025-07-29 - 3244f8b - Fix readme to work with plugins (#1008)
2025-07-29 - 3f93a68 - Update README for OpenAI Agents SDK Integration (#1001)
2025-07-29 - 62604ca - announcement (#1010)
2025-08-04 - 1573433 - make profile optional, necessary for rust core to create fallback profile (#1004)
2025-08-04 - 3777095 - Fix start_activity overloads (#1014)
2025-08-04 - 7e1c725 - 💥 Update activity and workflow config objects. Change execute_child_workflow summary argument to static_summary (#1019)
2025-08-04 - b59c555 - Add plugin to workflowenvironment (#1015)
2025-08-06 - 71ed93c - 💥 Replayer configuration from plugins (#1011)
2025-08-08 - 11c2817 - Nexus: eliminate unused arguments (#1022)
2025-08-12 - e1016bc - Cleanup tests to deduplicate static response construction (#1023)
2025-08-15 - 2cea1a2 - Add first_execution_run_id to workflow info (#1027)
2025-08-15 - e9d8c1a - remove address check (#1030)
2025-08-16 - 49c2400 - Fix circular import: do not import temporalio.client in temporalio.nexus (#973)
2025-08-18 - 916ea3c - Fixes for new metrics interface (#940)
2025-08-18 - e2c0ced - Implement get_task_factory (#1031)
2025-08-19 - 9054679 - Respond to upstream: nexus start sync failure (#1026)
2025-08-19 - a09bb85 - Fairness Keys & Weights (#1036)
2025-08-20 - 2b5de91 - Move model stub creation from RunConfig to Agent (#1029)
2025-08-20 - 3c6fae6 - Bump slab from 0.4.10 to 0.4.11 in /temporalio/bridge (#1034)
2025-08-20 - 5080b68 - Don't add startActivity, etc spans when there is no parent trace in which to nest them (#1037)
2025-08-21 - 55d5d7c - Priority Key None by default (#1044)
2025-08-21 - 826edfd - Extend test timeout to 15 minutes. Macos-intel is running over (#1042)
2025-08-21 - a0147d5 - Nexus cancellation types (#981)
2025-08-21 - eb9097d - Bump version
1.15.0
- Plugin support - Plugins are a new way of providing easy configuration of workers and clients
- Ongoing development of OpenAI Agents Integration
💥 Breaking Changes
- OpenAI Agents integration is now intended to be used through
OpenAIAgentsPlugin, the previous method of configuring withset_open_ai_agent_temporal_overridesis no longer exported. - OpenAI Agents integration tracing now uses a separate random generator for uuids. If a workflow was using both
workflow.randomand OpenAI agents tracing, this could cause an NDE on replay.
Specific Changes
2025-07-10 - 6fcda0f - Convert class to module (#958)
2025-07-10 - e73d6b5 - Support Nexus tool calls in OpenAI Agents integration (#949)
2025-07-11 - 28f43f1 - User saner python version syntax (#959)
2025-07-14 - 2443c50 - Type-checking (#962)
2025-07-14 - 808a5f4 - Install nexusrpc from GitHub (#966)
2025-07-14 - 8a003ec - Update core env vars (#964)
2025-07-14 - f4ca16d - Use links from StartWorkflowExecutionResponse if present (#963)
2025-07-15 - 1fec723 - Add documentation of interceptors to README (#970)
2025-07-16 - 33b4a43 - Remove UwS experimental notices (#975)
2025-07-16 - c37c69f - Support for method activities conversion into tools (#968)
2025-07-16 - e6f6f91 - Provide client in activity context (#740)
2025-07-18 - 4949c1e - Add tests for type-checker false-negatives (#976)
2025-07-18 - 60f67d9 - Fixing OpenAI tracing issues (#974)
2025-07-21 - 126bcd8 - Plugin Support (#952)
2025-07-21 - 7c57a76 - Fix more type errors (#977)
2025-07-22 - 0f3c577 - 💥 OpenAI/plugin (#956)
2025-07-22 - 8b727e5 - Add argument validation for the types of provided tools (#985)
2025-07-22 - 9e7dc7a - Update agents sdk dependency to latest. (#983)
2025-07-22 - fe82b07 - Add exception catching logic to model activity (#982)
2025-07-23 - d863f5c - Add heartbeat test and fix bug (#984)
2025-07-23 - f815886 - Add test for chat completions model (#986)
2025-07-24 - 3d9bfee - Disallow use of sqlite sessions, but pass through others (#993)
2025-07-24 - 79f2900 - Making summary generation more robust (#987)
2025-07-24 - a457184 - Use an iterator instead of a shared global index in openai agent tests (#991)
2025-07-24 - da6616a - Fail if user provides mcp servers (#990)
2025-07-25 - b6b0973 - More builtin OpenAI tool types and test for Lite LLM custom provider (#988)
2025-07-25 - beb9c9d - Use the agent's model name if not present in runconfig (#996)
2025-07-25 - e767013 - Add workaround for case where un-picklable types are passed to Runner (#997)
2025-07-25 - fc564c4 - 💥 Move tracing uuids to use a separate Random from the workflow seed (#992)
2025-07-28 - c8bc329 - Add tests for update-with-start reattach behavior (#1000)
2025-07-28 - 6f1d62b - fix typing when passing loaded config into Client.connect, raise error if 'address' not provided by config (#998)
2025-07-28 - b99782f - Pin nexus version, revert change depending on latest
1.14.1
❗UPDATE: Please update to latest release: the nexus-rpc version is not pinned in this release. This could cause errors on future nexus-rpc releases.
-
Fixes a bug related to event links in Nexus Pre-release that resulted in 500 errors in web UI (#953)
-
The OpenAI Agents Integration module layout has changed, requiring different import paths in user code. All needed types are available off
temporalio.contrib.openai_agentsortemporalio.contrib.openai_agents.workflow. Additionally,open_ai_data_converteris fully removed, replaced withpydantic_data_converter. (#947)
The second change mentioned is a breaking change to an experimental feature; the release is numbered as a patch release.
Specific Changes
2025-07-08 - 61af3ea - 💥 Streamline OpenAI module layout (#947)
2025-07-08 - e17146f - Adding encoding of payload headers, currently defaults to existing behavior, not encoding (#939)
2025-07-09 - 3a27fe8 - Remove wrapping function decorator (#948)
2025-07-10 - 31c1c41 - Nexus: evolve link conversion and query param processing (#953)
2025-07-10 - 5d0e9b1 - 1.14.1 (#957)
2025-07-10 - bdddb07 - Pyright diagnostics (#954)