browser-use/browser-use · error · ValueError
Action '{func.__name__}' parameter '{param.name}: {param_typ
Error message
Action '{func.__name__}' parameter '{param.name}: {param_type_name}' conflicts with special argument injected by tools: '{param.name}: {expected_type_name}' What it means
Error "Action '{func.__name__}' parameter '{param.name}: {param_type_name}' conflicts with special argument injected by tools: '{param.name}: {expected_type_name}'" thrown in browser-use/browser-use.
Source
Thrown at browser_use/tools/registry/service.py:141
param_type = next((arg for arg in args if arg is not type(None)), param_type)
# Check if types are compatible (exact match, subclass, or generic list)
types_compatible = (
param_type == expected_type
or (
inspect.isclass(param_type)
and inspect.isclass(expected_type)
and issubclass(param_type, expected_type)
)
or
# Handle list[T] vs list comparison
(expected_type is list and (param_type is list or get_origin(param_type) is list))
)
if not types_compatible:
expected_type_name = getattr(expected_type, '__name__', str(expected_type))
param_type_name = getattr(param_type, '__name__', str(param_type))
raise ValueError(
f"Action '{func.__name__}' parameter '{param.name}: {param_type_name}' "
f"conflicts with special argument injected by tools: '{param.name}: {expected_type_name}'"
)
special_params.append(param)
else:
action_params.append(param)
# Step 3: Create or validate param model
if not param_model_provided:
# Type 2: Generate param model from action params
if action_params:
params_dict = {}
for param in action_params:
annotation = param.annotation if param.annotation != Parameter.empty else str
default = ... if param.default == Parameter.empty else param.default
params_dict[param.name] = (annotation, default)
param_model = create_model(f'{func.__name__}_Params', __base__=ActionModel, **params_dict)View on GitHub (pinned to 6c73fced2f)
Solutions
- Rename the conflicting action parameter so it does not shadow an injected special argument (browser_session, page_extraction_llm, file_system, etc.).
When it happens
Trigger: An action parameter name collides with a framework-injected special argument with a different type.
Common situations: Naming a parameter `browser_session`/`page`/`llm` with a custom type in a custom action.
AI-assisted analysis of browser-use/browser-use@6c73fced2f (2026-08-14).
Data as JSON: /api/errors/da5392c5b9739366.
Report an issue: GitHub.