You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Several features have already graduated out of strands.experimental into the production namespace, but the experimental locations still exist as DeprecationWarning shims that re-export from production. Per the SDK graduation lifecycle (versioning-and-support.mdx: X.Y = graduate + deprecate; X.Y+1 = experimental version removed), these shims are now eligible for removal.
They were introduced on 2026-05-26 in the monorepo convergence (#2317), so they have been deprecated for multiple minor releases.
Shims to remove (strands-py/src/strands/experimental/)
steering/ — entire subtree is a DeprecationWarning shim re-exporting from strands.vended_plugins.steering. Files: __init__.py, core/{__init__,action,context,handler}.py, context_providers/{__init__,ledger_provider}.py, handlers/__init__.py, handlers/llm/{__init__,llm_handler,mappers}.py.
tools/__init__.py — ToolProvider moved to strands.tools; __getattr__ warns and re-exports. __all__ is already empty.
hooks/multiagent/ (__init__.py, events.py) — deprecated, re-exports from strands.hooks.multiagent.
hooks/__init__.py non-bidi aliases — BeforeToolInvocationEvent, AfterToolInvocationEvent, BeforeModelInvocationEvent, AfterModelInvocationEvent are deprecated aliases resolved via __getattr__. Keep the live Bidi* events (still experimental, see [FEATURE][EPIC] Bidirectional Streaming - Move out of Experimental #1722); remove only the graduated aliases from __all__.
Problem Statement
Several features have already graduated out of
strands.experimentalinto the production namespace, but the experimental locations still exist asDeprecationWarningshims that re-export from production. Per the SDK graduation lifecycle (versioning-and-support.mdx: X.Y = graduate + deprecate; X.Y+1 = experimental version removed), these shims are now eligible for removal.They were introduced on 2026-05-26 in the monorepo convergence (#2317), so they have been deprecated for multiple minor releases.
Shims to remove (
strands-py/src/strands/experimental/)steering/— entire subtree is aDeprecationWarningshim re-exporting fromstrands.vended_plugins.steering. Files:__init__.py,core/{__init__,action,context,handler}.py,context_providers/{__init__,ledger_provider}.py,handlers/__init__.py,handlers/llm/{__init__,llm_handler,mappers}.py.tools/__init__.py—ToolProvidermoved tostrands.tools;__getattr__warns and re-exports.__all__is already empty.hooks/multiagent/(__init__.py,events.py) — deprecated, re-exports fromstrands.hooks.multiagent.hooks/__init__.pynon-bidi aliases —BeforeToolInvocationEvent,AfterToolInvocationEvent,BeforeModelInvocationEvent,AfterModelInvocationEventare deprecated aliases resolved via__getattr__. Keep the liveBidi*events (still experimental, see [FEATURE][EPIC] Bidirectional Streaming - Move out of Experimental #1722); remove only the graduated aliases from__all__.bidi/tools/stop_conversation.py— deprecated tool (.. deprecated::, warns on use); usestrands_tools.stop. Note this one is gated on the bidi graduation ([FEATURE][EPIC] Bidirectional Streaming - Move out of Experimental #1722) since it lives underbidi/.Also remove
tests/strands/experimental/steering/test_steering_aliases.pytests/strands/experimental/tools/test_tool_provider_alias.pytests/strands/experimental/hooks/test_hook_aliases.py(non-bidi alias cases only)Out of scope
checkpoint([FEATURE] Durable Execution via Provider-Agnostic Checkpoints (Epic) #2510),agent_config([FEATURE] Graduate Agent Config out of Experimental #1625), and the fullbidisuite +Bidi*hook events ([FEATURE][EPIC] Bidirectional Streaming - Move out of Experimental #1722).Acceptance criteria
experimental.*path raisesImportError/AttributeError(not a silent success).rgclean).