"Configure and troubleshoot Browser Use Browser, BrowserSession,
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill browser-control --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Browser Control?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-browser-control)More formats (shields.io, HTML) on the badges page.
---
name: browser-control
description: "Configure and troubleshoot Browser Use Browser, BrowserSession,
BrowserProfile, CDP, real Chrome profiles, cloud browsers, domains, proxies,
downloads, screenshots, DOM, and low-level Actor control."
disable-model-invocation: true
metadata:
disco-role: operating
license: MIT
---
# Browser Control
Use this sub-skill when a Browser Use task depends on configuring, starting, connecting to, or directly controlling browser sessions rather than only writing an `Agent` workflow.
## Own This Scope
- `Browser` / `BrowserSession` lifecycle: local Chromium, existing Chrome, CDP URLs, cloud browser sessions, tabs, cookies, storage state, screenshots, downloads, recordings, and teardown.
- `BrowserProfile` configuration: launch/connect parameters, profiles, domains, proxies, viewport/window, extensions, iframe/DOM capture, timing, video/HAR/trace paths, and security flags.
- Direct browser control: Actor `Page`, `Element`, and `Mouse`; CDP-backed methods on `BrowserSession`; DOM selector maps; screenshots and page state summaries.
- Browser safety: `allowed_domains`, `prohibited_domains`, `block_ip_addresses`, download path containment, file/profile isolation, and risky options such as `disable_security`.
## Route Elsewhere
- Agent construction, prompts, `Agent.run()`, callbacks, history, initial actions, flash/planning settings: `../agent-programming/SKILL.md`.
- Custom tools, `ActionResult`, file tools, Playwright-backed actions, parameter injection, sensitive data tools: `../tools-and-actions/SKILL.md`.
- LLM provider selection, `ChatBrowserUse`, structured output, cost, fallback models: `../llm-and-output/SKILL.md`.
- Terminal `browser-use` / `bu` sessions and CLI profile commands: `../cli-and-sessions/SKILL.md`.
- `@sandbox`, MCP, profile sync, monitoring, and production integration architecture: `../production-integrations/SKILL.md`.
## Quick API Imports
Prefer public imports for user code:
```python
from browser_use import Browser, BrowserProfile
from browser_use.browser import BrowserSession, ProxySettings
```
Facts to preserve:
- `Browser` is the public alias for `BrowserSession`; use `Browser(...)` in simple examples and `BrowserSession(...)` when emphasizing the class name.
- `BrowserSession` accepts most `BrowserProfile` fields directly, or can receive `browser_profile=BrowserProfile(...)` for reusable configuration.
- Browser Use APIs are async for session/page operations; wrap examples with `asyncio.run(main())` or call them from an existing event loop.
- For browser automation models, recommend `ChatBrowserUse` in sibling examples, but keep model/provider details in `../llm-and-output/SKILL.md`.
## Default Decision Tree
1. Need an Agent to browse with custom browser settings? Create `browser = Browser(...)` and pass `Agent(..., browser=browser)`; route Agent parameters to `../agent-programming/SKILL.md`.
2. Need a local browser window? Use `Browser(headless=False, window_size={...})`; set `keep_alive=True` only when the user wants the browser left open.
3. Need logged-in local Chrome? Prefer `Browser.from_system_chrome(profile_directory=...)` after closing Chrome; if the profile is locked, connect to a running Chrome via `cdp_url` instead.
4. Need an already-running browser? Launch Chrome with a remote debugging port, verify `/json/version`, then use `Browser(cdp_url="http://localhost:9222", is_local=True)` or a `BrowserProfile` with those fields.
5. Need cloud browser performance or anti-bot help? Use `Browser(use_cloud=True)` with a `BROWSER_USE_API_KEY`; route deployment details to `../production-integrations/SKILL.md`.
6. Need deterministic low-level clicks, selectors, screenshots, or cookies without LLM planning? Start a `Browser` and use Actor/Page/session APIs from `references/browser-api.md`.
7. Need navigation guardrails? Configure `allowed_domains` or `prohibited_domains` before starting the session; never rely on prompt wording alone for domain security.
## Safe Defaults
Use these defaults unless the user asks otherwise:
```python
browser = Browser(
headless=True,
user_data_dir=None,
allowed_domains=["example.com"],
downloads_path="./downloads",
)
```
- Use `user_data_dir=None` for incognito-like isolation when persistent login is not needed.
- Use separate `user_data_dir` values for parallel browsers; do not share one writable profile across concurrent sessions.
- Use `allowed_domains` for high-risk tasks; root domains like `example.com` also allow `www.example.com`, while wildcard patterns like `*.example.com` allow the root plus subdomains.
- Keep `disable_security=False`; only set it for controlled local testing and call out the risk.
- Prefer `Browser(use_cloud=True)` when users ask how to improve browser performance in production; Browser Use Cloud is optimized for Browser Use and can be streamed remotely.
## Core Recipes
- Local/headful, real Chrome, CDP, cloud browser, proxy, cookies/storage, parallel sessions, and recordings: `references/browser-recipes.md`.
- Parameter catalog, session lifecycle, tabs, cookies, screenshots, Actor Page/Element/Mouse, DOM/state methods, and CDP helpers: `references/browser-api.md`.
- Domain filtering, download containment, DOM/iframe/highlight behavior, screenshots, and guardrails: `references/security-and-dom.md`.
- Install/import, Chromium, CDP, profile locks, cloud/API key, proxy, downloads, screenshots/video/HAR, and validation errors: `references/troubleshooting.md`.
## Minimal Local Browser Example
```python
import asyncio
from browser_use import Agent, Browser, ChatBrowserUse
async def main():
browser = Browser(headless=False, window_size={"width": 1200, "height": 800})
agent = Agent(task="Open example.com and summarize the page", llm=ChatBrowserUse(), browser=browser)
await agent.run()
await browser.kill()
asyncio.run(main())
```
## Direct Control Example
```python
import asyncio
from browser_use import Browser
async def main():
browser = Browser(headless=True, user_data_dir=None)
await browser.start()
page = await browser.new_page("https://example.com")
print(await page.get_title())
print(await browser.get_current_page_url())
await browser.kill()
asyncio.run(main())
```
## Validation Checklist
Before handing code back to a user:
- Imports use current public names: `Browser`, `BrowserSession`, `BrowserProfile`, `ProxySettings`.
- Browser/session options are on `Browser(...)` or `BrowserProfile(...)`, not on `Agent(...)` unless the `Agent` parameter is specifically `browser`, `browser_session`, or `browser_profile`.
- Async methods are awaited: `start`, `new_page`, `get_pages`, `navigate_to`, `take_screenshot`, `export_storage_state`, `kill`.
- Any profile, download, HAR, video, trace, or storage-state path is user-controlled and not a hidden local path.
- CDP examples include a readiness check against `http://host:port/json/version`.
- Cloud examples state `BROWSER_USE_API_KEY` is required but never include a key.
- Security examples use concrete domain lists and explain redirects/new tabs can be blocked after navigation too.
## Common Failure Routing
- `ValidationError` or `extra_forbidden`: wrong constructor field or typo; verify against `references/browser-api.md`.
- `Unable to copy Chrome profile ... locked`: close Chrome or use CDP with the already-running browser; see `references/troubleshooting.md`.
- `Navigation blocked by security policy`: inspect `allowed_domains` / `prohibited_domains`; see `references/security-and-dom.md`.
- `Chrome failed to start`, missing executable, or no display: install Chromium through Browser Use tooling, set `headless=True`, or use `Browser(use_cloud=True)`.
- Screenshot/video/HAR path empty: ensure the browser was started, path directories are writable, and the feature is supported by the chosen local/cloud session.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!