---
name: browser-automation-57b9112d0484
description: "Control web pages: tabs, clicks, forms, downloads, screenshots; host or Docker browser."
triggers:
  - "browser automation"
  - "web automation"
  - "open website"
  - "open URL"
  - "navigate browser"
  - "interact with web page"
  - "JavaScript page"
  - "browser screenshot"
  - "screenshot webpage"
  - "visual verification"
  - "multi-tab browsing"
  - "download file from website"
  - "upload file in browser"
  - "host browser"
  - "local browser"
  - "my browser"
---

# Browser Tool

Use this skill after the compact `browser` tool prompt points you here. It is the progressive-disclosure workflow guide for rendered pages, multi-step browser work, logins, downloads, JavaScript-heavy sites, screenshots, host/container browser mode, and visual inspection. Prefer `search_engine` or `document_query` for plain text research.

For fragile forms, load `browser-form-workflows` with `skills_tool:load` before acting when selects, checkboxes, radios, file uploads, contenteditable fields, validation, or final submission state are central to the task.

## Core Workflow

1. `open` creates a browser tab and returns a `browser_id`.
2. `content` returns readable markdown plus typed refs like `[link 3]`, `[button 6]`, `[input text 8]`.
3. Interact with refs using `click`, `type`, `submit`, `scroll`, etc.; iframe/shadow targets may return frame-chain metadata in action results.
4. Use `navigate` on an existing `browser_id` for serial browsing.
5. Keep only a small working tab set; close pages when finished.
6. If the user asks for an existing tab, page title, or already-open URL, call `list` first, match by `title` or `currentUrl`, then use `set_active` or `navigate` on that `browser_id` instead of opening a new tab.

## Modes

When the user asks for "my browser", "host browser", "local browser", a local Chromium browser, or opening a URL in their host browser, use this `browser` tool. Do not substitute `computer_use_remote`, `code_execution_remote`, `xdg-open`, `sensible-browser`, or Python `webbrowser.open`. If setup fails and mentions remote debugging, tell the user to open the browser inspect page, such as `chrome://inspect/#remote-debugging` or `opera://inspect/#remote-debugging`, enable "Allow remote debugging for this browser instance", run `/browser host on`, and retry.

The same tool may run in Docker container mode or A0 CLI host-browser mode, depending on project/plugin settings.

- Container mode: browser and upload paths resolve inside the Agent Zero container.
- Host mode: browser and upload paths resolve on the connected A0 CLI host machine.

In host mode, page content and screenshots may be blocked by host-content policy when remote models are active.

## Screenshots And Vision

Screenshots are explicit only; the browser does not automatically load images into model context.

1. Call `browser` with `action: "screenshot"`.
2. Call `vision_load` with the returned `vision_load.tool_args.paths` value.
3. Reason from the latest loaded screenshot.

Screenshot args include `quality`, `full_page`, and optional `path`. Without `path`, the screenshot is saved as a chat-scoped artifact and returned through `vision_load.tool_args.paths`; with `path`, PNG is used when `path` ends with `.png`, otherwise JPEG is used.

## Forms And Files

- `select_option` works for native selects and detectable ARIA listbox/combobox controls; pass one choice via `value` or several via `values`.
- `set_checked` works for checkbox, radio, switch, and toggle-like refs; pass the desired state via `checked`.
- `upload_file` works for file input `path` or multiple `paths`, file input refs or associated labels; verify files exist in the active browser environment.
- For fragile forms, call `skills_tool` with `action: "load"` and `skill_name: "browser-form-workflows"`, then follow that form-specific workflow before filling or submitting.

## Pointer And Keyboard

- Prefer refs/selectors and DOM/CDP actions over viewport coordinates.
- Interaction targets use `ref` from the latest `content` output; `hover`, `double_click`, `right_click`, and `drag` also accept viewport coordinates when no reliable ref exists.
- Coordinates are Chromium viewport CSS pixels and match screenshots; treat them as visual fallback, not the default interaction path.
- Coordinate args: `x`/`y` position the pointer; `drag` adds destination `to_x`/`to_y` or destination `target_ref`; element-relative offsets use `offset_x`/`offset_y` and drag `target_offset_x`/`target_offset_y`.
- `mouse` sends raw pointer input with `event_type` (default `click`) plus `x`/`y` and `button`.
- `click` with `modifiers` (e.g. `"Control"`) alters the click; `focus_popup: true` targets an auto-registered popup window.
- `key_chord` presses `keys` in order and releases in reverse; `keyboard` types `text` or presses a single `key`.
- `content` narrows extraction via `selector` or a list of `selectors`.
- `evaluate` runs JavaScript in the page via `script` and returns the evaluated result.
- Browser settings set the evaluate deadline (default 30 seconds, range 0.1–60 seconds); there is no tool-call timeout override. A timeout interrupts JavaScript in place and preserves the page when execution stops. If async execution remains pending, recovery may reload the affected tab, losing unsaved DOM edits; cookies and tab storage normally survive. The error explicitly reports a reload or fallback closure; use `list` before retrying a closed tab. Host evaluation requires an updated connector; Safari rejects it because its backend cannot forcibly interrupt JavaScript.
- `wheel` scrolls by pixel deltas `delta_x`/`delta_y` at `x`/`y`.
- `clipboard` actions are copy, cut, or paste, chosen via `clipboard_action`; paste inserts `text`.
- `set_viewport` resizes the page viewport via `width` and `height`.
- `navigate` takes the destination `url` on an existing `browser_id`.

## Tabs And Popups

- Popups and target-blank tabs are auto-registered.
- `list` shows open tabs; pass `include_content: true` sparingly.
- `set_active` deliberately changes focus.
- Operations on a non-active tab do not steal focus unless browser rules require it.

## Browser Action Multi

`multi` is only a browser action, never a top-level tool. Use:

```json
{
  "tool_name": "browser",
  "tool_args": {
    "action": "multi",
    "calls": [
      {"action": "content", "browser_id": 1},
      {"action": "screenshot", "browser_id": 2}
    ]
  }
}
```

Use browser action `multi` for parallel reads across tabs. Avoid mutating the same tab twice in one batch unless serial order is intended.


---
Source attribution: agent0ai
Original project: https://github.com/agent0ai/agent-zero
License: MIT
License information: https://opensource.org/license/mit
Original upstream instructions; downloaded from Dave AI.

## Upstream license notice

MIT License

Copyright (c) 2026 Gabriel Moreira

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.



# Dave AI resource metadata

Creator / publisher: agent0ai
Original project: https://github.com/agent0ai/agent-zero
Attribution basis: Upstream repository explicitly recorded in package mirror path

Fields of work: Development & Engineering
Roles: Data Engineer, DevOps / SRE, QA / Test Engineer
Specialties: DevOps, Word Documents, Frontend, Testing
Tools: Docker, GitHub
Country applicability: Country not specified
Classification basis: Source catalog labels
Instruction SHA-256: 3f2f0250180d9e810e4a64f1d5d8ba29fa84be57e59f0bb82be318cdfaa63bb7
