Skip to content

Child tabs

A tab can open tabs that stay attached and nested under it on every surface. Tabs close only when told, only themselves or tabs under them, and you can detach any.

How it works4 minutes to read
Copy & share
On this page4 sections

A tab can open another tab that stays attached to it. The new tab is a full chat with its own agent, model and history, and it sits under the tab that opened it everywhere you look. Use it when work needs its own visible lane, such as an audit you want to read later or a long fix that should not crowd the main chat. For short helpers, background agents are lighter.

Ask for oneLink to this section

Say what you want: "open a tab that audits the migrations while you keep going". The agent calls link with tab_open, gives the tab a name and a reason, and sends it its first message. The child says who opened it and why, and starts working at once. The parent gets a one-line confirmation, not the child's answers, so its context stays small. A child can open its own children, as deep as the work needs.

Agents open tabs only when you ask or the work truly needs its own lane. Each agent sees its parent and children marked in its list of tabs, so it knows which ones it may manage.

Where children appearLink to this section

SurfaceHow a family looksCollapseDetach
Desktop tab stripChildren right after their parent, with a ↳ mark and the level from depth 2Collapse child tabs on the parent's right-click menu; the +N button opens it againDetach from … on the child's right-click menu, or /detach
Desktop projects sidebarIndented under the parent with tree linesThe chevron beside the parent, or the arrow keysRight-click menu or /detach
TerminalTree lines in the tab bar, the projects view and the tab pickersThe projects view's expand and collapse keys; (+N) shows what is hidden/detach
iPhone and AndroidIndented under the parent with "from …", a level badge past level 2The chevron on the parent; +N shows what is hiddenLong-press, then Detach from parent

Switching to a hidden tab opens its family again. Families, collapse state and detaches survive a restart.

RulesLink to this section

RuleWhat happens
Who may close a tabNothing closes on its own. An agent closes its own tab, or any tab under it, and only when you or its parent told it to. Never its parent, a sibling or an unrelated tab. You can close any tab.
Closing yourselftab_close with no to closes the agent's own tab when its turn ends. A message or steer that arrives first keeps it open, and the last open tab never closes this way.
Background workA tab told to close waits until its turn, its background shells and its background agents have finished, then closes. The agent is told how many are still running so it can stop the ones that should not finish. A parent that calls tab_close on the same child again stops the child's turn and background work and closes it at once, so a stuck child never blocks its parent.
Asking each otherlink ask blocks until the other tab answers. If that tab is itself waiting on an answer from you, the second ask is refused at once with the id to reply to, so two tabs never wait on each other until the timeout.
Closing a parentIts children move up to the closed tab's parent, or become top-level. Nothing closes with it.
DetachingYou can detach any child. An agent detaches only when you ask. A detached tab is a normal tab, and its old parent can no longer close it.
ResultsA child's answers stay in the child. When the parent wants results, it says so, and the child sends them with link send.
What the parent hearsA child opening, closing or leaving shows up as one short line in the parent's tab list at its next step. It never wakes an idle parent.
Handing overtab_handover sends a summary to the parent, or the tab it names, which picks up from there. The tab that hands over stays open until it is told to close.
LimitsAt most 12 tabs opened by agents can be open at once in each checkout: the main folder and every worktree have their own engine and their own limit.
Moving a tabA tab with a parent or children cannot move to another checkout until you detach it.
WorktreesA tab in a worktree opens its children in the same worktree.
Headlessempryo --headless waits for the child tabs a run opened, and for any messages they send, before it exits.
ActionWhat it does
tabsShows your parent, your children and their children, each working or idle
tab_open {text, reason, label?, mode?, model?}Opens a child that starts on text; you get a short confirmation
tab_close {to?}Closes a tab under you, or your own tab when the turn ends if to is left out
tab_detach {to}Cuts a child loose, or yourself when to is your own id
tab_handover {text, to?}Sends your summary to your parent, or to; your tab stays open

See tabs for how tabs share a project and message each other.