v1.20Grok Build CLI support →

Tabs

Tabs belong to profiles. One agent can drive several tabs of one profile; many agents can drive many profiles concurrently.

The model

A profile is the identity. A task is a unit of work an agent is doing in that profile. Inside a task, one or more tabs are open against URLs the agent has navigated to. Tabs are scoped to the task — ending the task closes them without touching tabs that belong to other tasks of the same profile.

Start a task

export AGENTS_BROWSER_TASK=$(agents browser start --profile linear-prod --url https://linear.app/inbox)

start writes the resolved task name (something like swift-crab-falcon-a3f92b1c) to stdout. Commentary about which Chromium binary was used goes to stderr, so $(...) capture stays clean.

List, focus, close

agents browser tabs                  # list tabs open under the current task
agents browser tab focus tab123      # switch focus to a specific tab
agents browser tab close tab123      # close one tab without ending the task
agents browser done                  # end the task; closes all of its tabs

Every other browser command — refs, click, type, screenshot — addresses the focused tab of the focused task.

Override per call

To work against a different task from the same shell, pass --task:

agents browser screenshot --task other-flow

Worked example: two tabs, one agent

Open a Linear ticket and a Notion spec in the same task, then read both before replying:

export AGENTS_BROWSER_TASK=$(agents browser start \
  --profile linear-prod \
  --url https://linear.app/team/issue/ENG-4421)

# Open a second tab inside the same task
agents browser tab open --url https://notion.so/spec-auth-rewrite

agents browser tabs
# tab123  https://linear.app/team/issue/ENG-4421
# tab124  https://notion.so/spec-auth-rewrite

agents browser tab focus tab124
agents browser screenshot

agents browser tab focus tab123
agents browser type 22 --text "Spec attached. Migration plan follows."

agents browser done

Concurrent agents

Two agents can run two tasks in two profiles in parallel. Each task owns its own tabs; neither agent sees the other's state.

# Terminal A
agents run claude "triage the inbox" --secrets none
#   internally: agents browser start --profile work-slack ...

# Terminal B (same machine, different profile)
agents run codex "draft the changelog post" --secrets none
#   internally: agents browser start --profile personal-gmail ...

See browser profiles for how profiles isolate cookies and login state across concurrent agents.