# Feature catalog — browser-use/browser-use

> Canonical page: https://codevetter.com/unpack/browser-use/feature-catalog

# Feature catalog — browser-use/browser-use

Scanned commit d8110c5ff87ccba887aaa726cdb780f2f84bef8d (2026-09-15). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

User-facing capability sits on three paths described in the README: a hosted cloud product (outside this process), a CLI that executes Python against a browser daemon, and the Python Agent library. The library's default tool registry covers navigation, element interaction, extraction, tabs, files, and task completion. Optional features include cloud browsers, the remote sandbox, MCP server mode, Gmail OTP actions, cloud skills, structured output, vision, planning, a judge pass, GIF/HAR/video recording, and domain or captcha policy.
- README.md defines three products: fully hosted cloud, the CLI (Path 2, aimed at coding agents), and the Python library (Path 3: Agent + ChatBrowserUse or ChatOpenAI, optional Browser(use_cloud=True)). — [README.md#L62-L150](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/README.md#L62-L150)
- Tools.__init__ registers default actions search (DuckDuckGo/Google/Bing), navigate, go_back, wait (capped at 30s), click/input and related element actions, upload_file, dropdown_options, select_dropdown, write_file, replace_file, read_file, evaluate, and done. Tools.exclude_action and the exclude_actions constructor argument remove actions from the registry. — [browser_use/tools/service.py#L441-L608](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/tools/service.py#L441-L608) [browser_use/tools/service.py#L1679-L1836](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/tools/service.py#L1679-L1836) [browser_use/tools/service.py#L2008-L2118](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/tools/service.py#L2008-L2118)
- search and navigate dispatch NavigateToUrlEvent and are marked terminates_sequence=True so multi_act drops queued actions after them. navigate retries once when the post-navigation DOM looks empty. — [browser_use/tools/service.py#L458-L554](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/tools/service.py#L458-L554) [browser_use/agent/service.py#L2728-L2738](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/service.py#L2728-L2738)
- The CLI dispatcher handles --mcp, --cli-mcp, install, init/--template, and skill locally. Legacy subcommands in _LEGACY_HINTS (open, state, screenshot, eval, cookies, python, run, connect, cloud, daemon, record, mcp, --headed, --cdp-url, and others) print a 3.0 migration message and return exit code 2. Anything else is delegated to browser_harness.run.main, which executes Python from argv or stdin in a persistent browser session. — [browser_use/cli.py#L185-L400](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/cli.py#L185-L400)
- browser-use skill install copies the packaged browser-use skill into assistant skill directories for agents, claude, codex, copilot, cursor, gemini, openclaw, and opencode via TARGET_DIR_BUILDERS in browser_use/skills/install.py. — [browser_use/skills/install.py#L10-L50](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/skills/install.py#L10-L50) [browser_use/cli.py#L370-L373](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/cli.py#L370-L373)
- MCP server mode (uvx browser-use --mcp) exposes tools browser_navigate, browser_click, browser_type, browser_get_state, browser_extract_content, browser_get_html, browser_screenshot, browser_scroll, browser_go_back, browser_list_tabs, browser_switch_tab, browser_close_tab, retry_with_browser_use_agent, browser_list_sessions, browser_close_session, and browser_close_all. Logging is forced to stderr so it does not corrupt JSON-RPC. — [browser_use/mcp/server.py#L1-L24](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/mcp/server.py#L1-L24) [browser_use/mcp/server.py#L220-L451](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/mcp/server.py#L220-L451)
- Browser(use_cloud=True) provisions a remote browser. BrowserProfile also exposes cloud_profile-style CreateBrowserRequest params, cdp_url for an existing browser, proxy, allowed_domains, prohibited_domains, block_ip_addresses, captcha_solver (default True), and demo_mode. — [browser_use/browser/profile.py#L608-L656](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/browser/profile.py#L608-L656) [browser_use/browser/cloud/cloud.py#L27-L93](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/browser/cloud/cloud.py#L27-L93)
- @sandbox() requires the wrapped coroutine to take a browser parameter, serializes the function source and closure with cloudpickle, and streams SSE events from the sandbox. Callbacks include on_browser_created, on_log, on_result, and on_error. cloud_profile_id, cloud_proxy_country_code, and cloud_timeout are forwarded in the payload. — [browser_use/sandbox/sandbox.py#L215-L366](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/sandbox/sandbox.py#L215-L366)
- Agent accepts skill_ids (or skills) and registers them as actions through SkillService, which uses AsyncBrowserUse from browser-use-sdk and lists enabled finished skills. Wildcard '*' loads at most the first 100 skills. — [browser_use/agent/service.py#L146-L149](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/service.py#L146-L149) [browser_use/agent/service.py#L2572-L2573](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/service.py#L2572-L2573) [browser_use/skills/service.py#L19-L138](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/skills/service.py#L19-L138)
- register_gmail_actions adds get_recent_emails (keyword plus max_results 1-50) for OTP and magic-link retrieval via GmailService. Registry._replace_sensitive_data also expands TOTP secrets with pyotp.TOTP when a placeholder refers to a bu_2fa_code secret. — [browser_use/integrations/gmail/actions.py#L22-L60](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/integrations/gmail/actions.py#L22-L60) [browser_use/tools/registry/service.py#L467-L492](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/tools/registry/service.py#L467-L492)
- Structured task output is output_model_schema on Agent, which switches the done action to StructuredOutputAction. SystemPrompt selects among system_prompt.md, flash variants, Anthropic variants, and browser-use-specific markdown templates based on provider, flash_mode, and use_thinking. ChatBrowserUse forces flash_mode=True and therefore enable_planning=False. — [browser_use/agent/service.py#L167-L243](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/service.py#L167-L243) [browser_use/agent/prompts.py#L28-L80](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/prompts.py#L28-L80) [browser_use/tools/service.py#L2008-L2053](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/tools/service.py#L2008-L2053)
- Other user-visible Agent knobs implemented in __init__ include use_vision, generate_gif, sensitive_data, initial_actions, fallback_llm, use_judge, directly_open_url, message_compaction, loop_detection_enabled, and demo_mode. pause, resume, and stop mutate AgentState and are wired to SignalHandler during run. — [browser_use/agent/service.py#L151-L212](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/service.py#L151-L212) [browser_use/agent/service.py#L2516-L2534](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/service.py#L2516-L2534) [browser_use/agent/service.py#L3917-L3933](https://github.com/browser-use/browser-use/blob/d8110c5ff87ccba887aaa726cdb780f2f84bef8d/browser_use/agent/service.py#L3917-L3933)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
