Start a new thread
Open a new tab: pick which agent runs it and which folder it works in, then tap Start thread. The tab uses the last model and effort you chose for that agent on this device. It is selected for you. On a phone it opens at the left of the strip, where your thumb already is — unless you started it from the new-thread page past the right end, when it opens at the right instead, beside the tab you left; on a window at least 760px wide it opens at the back of the strip, and with a mouse or trackpad the composer takes the caret, so you can type straight away.
Why you would use it
You want a second conversation running beside the one you have — another repo, another agent, or the same repo with a separate task. Each tab is its own thread with its own transcript, queue, folder and agent.
How to use it
Open the new-thread card (
#newthread) from any of these:- the plus right after the last tab (
#new-tab). On a wide screen that plus is in each pane header instead (data-act="new-tab"), right after the pane's tabs, and the tab it makes lands in that pane - "New thread" at the bottom of the tab drawer (
#drawer-new) - the new-thread page past either end of the tab strip (
#endpage) — a tap anywhere on it opens the card Ctrl+TorCtrl+Non a keyboard (⌘Tor⌘Non a Mac), which opens the same thing the plus does. A browser keeps both for itself, so they reach the page only in the installed app; with Shift they stay the browser's- the NEW THREAD section at the top of the
Threads sheet, which is the same form in another host.
All threads (
#newthread-manage) in the card's header goes the other way: the card closes and the sheet opens
In the VCode app on app.v-code.dev the row starts with a box pick (
.new-box): the box the tab is made on. It shows the active tab's box; tap it to pick another. The agents and folders the form offers are that box's. Its last entry, Add or pair a computer, opens the box list. See work-on-several-boxes.- the plus right after the last tab (
Tap the agent button (
.new-agent) and pick Claude, Codex, OpenCode or Cursor from the list that drops down. If Claude, Codex or Cursor is not logged in, its row reads· log inand the card offers phone login instead of starting the thread.

- Tap the folder box (
.new-cwd) and type or pick a folder. See pick-a-folder. - Tap Start thread (
.new-thread), or press Enter in the folder box.

On a wide window the same tab opens at the other end, behind every tab already open, so nothing you were looking at moves.

What you see
The agent button shows the agent's brand mark and its name (Claude, Codex,
OpenCode, Cursor). Until you pick one there, it recommends the agent of the tab on
screen — a new tab beside Codex work starts on Codex — and it keeps following
that tab while the card is open. Once you pick, the pick sticks.
The folder box is seeded with the folder of the tab you were just
in, shown ~-short, and is selected whole so the first keystroke replaces it.
The card opens with the caret already in that box, so the folder list is showing before you touch anything, on a phone as well as on a desktop.
The card closes as soon as you tap Start thread or press Enter, and a toast
with a spinner reads starting thread… until the server answers. More taps or
Enters in that time do nothing, and neither does the new-tab button, so a slow
box still makes one tab. When the thread is created the toast goes, the new tab
is selected, and its name is the folder's last path segment until you rename it.
If you started from the Threads sheet, the sheet closes too.
Where the tab lands follows the frame. A phone puts it first in the strip,
unless it was started from the new-thread page past the right end of the strip,
which puts it last, beside the tab it was left from. A
window at least 760px wide puts it last, because the whole strip is on screen
there and a tab arriving in front of the one you are reading shifts every other
tab under the pointer. On that wide window, if the pointer can hover — a mouse or
a trackpad — the composer (#draft) also takes the caret, so the new tab is
ready to type into.
With no folder picked the toast reads pick a folder. A folder that does not
exist is refused by the server: no such folder: /path/you/typed. A path that
is a file, not a directory, is refused the same way. The spinner gives way to
the error toast, and the card stays closed.
In the app, a folder that belongs to a box other than the picked one is refused
before the card closes: that folder is on <box>, not <box>: pick it again. The card stays open. A folder you typed stays as you typed it; a folder
the card filled in is replaced with one on the picked box. See
pick-a-folder.
Options and settings
| Option | Default | What it changes |
|---|---|---|
| Box (app only) | the active tab's box while it is open, else the first open box | Which box the tab is made on, and whose agents and folders the form lists |
| Agent | the last one you picked in this form, else the agent of the tab on screen, else the first agent the server offers | Which CLI runs the tab. The picker's choice is shared between the sheet and the card |
| Folder | the current tab's folder, else the server's default cwd | The tab's working directory |
| Model | the last model chosen for the selected agent on this device, else auto | The model the new tab starts with |
| Effort | the last effort chosen for the selected agent on this device, else auto | The reasoning effort the new tab starts with |
Colour new tabs (#tabs-auto-colour) |
off | Gives every new tab a colour. See tab-colours |
Limits and known gaps
- The form has no model or effort control. Change either value in a tab with the
composer's model (
#modelpick, switch-the-model) or effort (#effortpick, set-the-effort) picker; later tabs for that agent use the new choice. The preference belongs to this browser, not to the server or another device. - Only agents the server has adapters for are offered. The test-only
mockagent never appears in the picker. - The folder must exist at creation time. This is checked when the tab is made, not at the first turn, so the error names the typo rather than the agent.
- A new tab is created with no title of its own; the name shown is the folder's basename.
- The end is the frame's, not a setting. A tab opened on a desktop sits at the back of the strip on your phone too — the order is one list, shared by every device.
- The caret is not taken on a phone, or on a touchscreen tablet wide enough for the wide frame: the soft keyboard would cover the transcript the new tab is there to show. It is not taken from a field you are typing in, or while a sheet, popup or drawer is over the screen, either.
Related
- pick-a-folder — how the folder box finds folders
- work-on-several-boxes — the box pick in the app
- new-tab-command —
/newfrom the composer - threads-sheet — the manager, which carries the same form
- tab-drawer — the other way in
- the-three-agents — what the agent button is choosing between
- switch-the-model — the model the form does not set
- reorder-tabs — moving the tab off the end it opened at
- switch-tabs — picking a tab, which takes the caret the same way
- type-to-start-a-message — typing into a tab the caret is not in