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 tabsEvery 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-flowWorked 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 doneConcurrent 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.