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

  1. 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.