Bases: Tool
Shell execution tool — provider-executed server-side.
Provider support:
-
OpenAI Responses API — maps to shell. Use environment to control where commands execute: ContainerAutoEnvironment, ContainerReferenceEnvironment.
-
Anthropic — NOT supported. Claude's bash tool is a client-side tool (the application must execute the command and return the result). Using ShellTool with AnthropicConfig raises :class:~autogen.beta.exceptions.UnsupportedToolError. Use :class:~autogen.beta.tools.LocalShellTool instead, which runs commands via subprocess and works with any provider.
See: - https://developers.openai.com/api/docs/guides/tools-shell
Source code in autogen/beta/tools/builtin/shell.py
| def __init__(
self,
*,
environment: ShellEnvironment | Variable | None = None,
version: Literal["bash_20250124"] = "bash_20250124",
) -> None:
self._params: dict[str, object] = {"version": version}
if environment is not None:
self._params["environment"] = environment
self.name = SHELL_TOOL_NAME
|
Source code in autogen/beta/tools/builtin/shell.py
| async def schemas(self, context: "Context") -> list[ShellToolSchema]:
resolved = {k: resolve_variable(v, context, param_name=k) for k, v in self._params.items()}
return [ShellToolSchema(**resolved)]
|
register(stack, context, *, middleware=())
Source code in autogen/beta/tools/builtin/shell.py
| def register(
self,
stack: "ExitStack | AsyncExitStack",
context: "Context",
*,
middleware: Iterable["BaseMiddleware"] = (),
) -> None:
async def execute(event: "ToolCallEvent", context: "Context") -> None:
pass
stack.enter_context(
context.stream.where(BuiltinToolCallEvent.name == SHELL_TOOL_NAME).sub_scope(execute),
)
|
Source code in autogen/beta/tools/tool.py
| def set_provider(self, provider: Provider) -> None:
pass
|