Repository navigation
Conversation
Temporarily pin sdk-core to the unmerged envconfig extension commit from temporalio/sdk-rust's johanngan/envconfig-extensions branch, and import the Core changelog entries for c8d9191..a9626f6d. The pin will be moved to the merged commit before this lands. Regenerated protos and Cargo.lock pick up Core's changes in that range. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add support for envconfig extensions. These allow separate packages to extend envconfig with their own TOML keys and environment variables by including the ClientConfigExtension module. An extension operates on a config profile as input and outputs a plugin to be attached to the client created from envconfig output. A TOML file with an extension looks as follows: ``` [profile.default.ext.my_extension] some_field = "value" ``` An envconfig consumer specifies a list of extensions to use when loading connection options via ClientConfig.load_client_connect_options(extensions: [...]). Returned plugins are Client::Plugin instances set under the :plugins key of the resulting keyword arguments, so they are applied when the result is passed to Client.connect(*args, **kwargs). For now, extensions are not supported in other contexts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
johanngan
commented
Nov 3, 2026
Author
There was a problem hiding this comment.
Note: Not yet a merged submodule ref, this PR can't be merged until temporalio/sdk-rust#1736 is, and the submodule hash and auto-generated changelog entries will need to be updated again.
johanngan
marked this pull request as draft
November 3, 2026 23:47
THardy98
approved these changes
Nov 4, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What was changed
Add support for envconfig extensions. These allow separate packages to extend envconfig with their own TOML keys and environment variables by including the
ClientConfigExtensionmodule. An extension operates on a config profile as input and outputs a plugin to be attached to the client created from envconfig output.A TOML file with an extension looks as follows:
An envconfig consumer specifies a list of extensions to use when loading connection options via
ClientConfig.load_client_connect_options(extensions: [...]). Returned plugins areClient::Plugininstances set under the:pluginskey of the resulting keyword arguments, so they are applied when the result is passed toClient.connect(*args, **kwargs). For now, extensions are not supported in other contexts.Why?
It's useful for external packages to be able to extend the envconfig format without needing to modify the envconfig package itself. The first use-case for this will be integrating with AWS Secrets Manager to specify client secrets via Secrets Manager ID.
Also see the Go implementation in temporalio/sdk-go#2771. Also see the Rust core change in temporalio/sdk-rust#1736.
Checklist
temporal.toml(viaTEMPORAL_CONFIG_FILE) with an[profile.default.ext.e2e]table, using real process env vars (TEMPORAL_NAMESPACE,TEMPORAL_EXT_E2E_SUFFIX). An extension passed toClientConfig.load_client_connect_optionsread its TOML table and env var and returned a plugin. The script confirmed that the extension saw the env-overridden profile, and that the returned connect arguments had the expected address and namespace and exactly one plugin carrying the expected values.The associated in-repo docs are updated. I don't think we need other public docs for now, as right now this is primarily just an implementation detail for the Lambda worker integration with Secrets Manager.