Skip to content

Side panels

The desktop app's side panel and its tabs.

The side panel sits right of the conversation. Terminal, Browser, Files and Diffs exist only in the desktop app (what each app has).

TabShows
ArtifactsPull requests, branches, commits and files the session produced
DiffsThe agent's edits, and the working tree against HEAD
FilesThe session's folder as a tree, with a viewer and an editor
TerminalThe session's terminals
BrowserA browser for the app you are building
InboxPlans and questions waiting for you
TodosThe agent's todo list
QueueMessages you sent during a run, waiting for it to end

Open, resize and arrange the panel#

KeysDoes
Control Shift AShows or hides the panel
Control Shift ] Control Shift [Next or previous tab (opens the panel)
Command Option Right Arrow Command Option Left ArrowNext or previous item inside the focused tab: an open file, a changed file, a terminal
Control W or Command WCloses the open file or terminal, else the active tab
Control TShows or hides Todos
Command \Splits the active tab into a new group on the right
Option Command \Splits the active tab into a new group below
Action or behaviorDetail
Show or hideThe button at the top-right of the window. It stays in the same place, with the panel open or closed. While the panel is closed, it shows the session's artifact count.
No tab openThe panel lists every tab it offers, with its icon and one line about it. Click one to open it.
Full screenThe button left of the toggle. The panel covers the conversation. Click it again, or hide the panel, to leave full screen.
ResizeDrag the edge (starts at 420 px)
Reorder tabsDrag a tab
Narrow windowThe panel opens over the conversation
Tab groupsSplit a tab with the keys above to show two tabs side by side or one above the other. Drag the divider to resize the groups.
BadgeA tab that needs you shows a badge. The badge pulses when the agent waits on you. The composer's badges open Inbox, Todos and Queue too.
+ at the end of the stripAdds panels your extensions register
DraftsA new chat draft has panels before the first message
Own windowThe button left of full screen opens the side panels in a new window. The palette and the row menu also do this.

The app saves the layout (open tabs, tab groups, width, terminal drawer, file tree) per session. A new session starts from the last layout of its project. Open files and the terminal order are per session. Files filters are per project.

Artifacts#

Pull requests, branches, commits and recorded files from the session, plus kinds extensions add. Click one to open it. Settings › Interface › Conversation › Artifacts turns tracking off.

The Artifacts tab listing a pull request and a commit.

Diffs#

SourceShows
SessionThe edits the agent made, from the transcript
Working treegit diff HEAD plus untracked files, live

The left list shows every changed file (Hide file list folds it). Views are unified or split, with optional line wrap. Changed images, video and audio show Before and After side by side.

To review, select lines, then click the gutter + or right-click:

ActionDoes
CommentDrafts a review comment. Command Return attaches the file, the range, the excerpt and your note to the next message.
Add to chatAttaches the lines to the next message
CopyCopies the lines

Command F finds in the diffs. Command Shift F searches across the changes.

The Diffs tab showing a working-tree diff in unified view.

Files#

The session's folder as a tree with git status. A file opens in a tab. A dot marks unsaved changes.

In the treeDoes
Search filesFilters the tree by name
Changed only / All filesShows only changed files, or everything
Show ignored / Hide ignoredShows or hides gitignored files
RefreshReads the folder again

A changed file opens on its changes. Plain view shows the file alone. Editor and Finder open it in your editor or the system file manager.

Settings › Interface › Files & editor rowDoes
File tree sideTree on the left or right
Open files and diffs inClicks go to the panels (default) or to $EDITOR. Command-click sends to the other one.
Edit files in the panelType in the viewer. The Save row picks when the app writes your edits: on Command S (default) or on focus loss. If the file changed on disk since you opened it, the save stops and the tab shows a conflict bar.
Check files with the project's toolsA diagnostics chip and marks under problem lines, from tsc, ESLint, Biome, Ruff, cargo check or go vet. + Language servers adds hover cards and Command-click to a definition.

Every option: Settings › Interface › Files & editor.

KeysDoes
Command FFinds in the open file
Command Shift FSearches across the folder's files

Files and Diffs read files where the session runs: a sandbox, a worktree or a server.

The Files tab: a file tree on the right and a TypeScript file open in the editor.

Terminal#

The session's terminals run where the session runs: this computer, its container or sandbox, or its server. The drawer under the conversation shows the same terminals.

Terminals run in the daemon, so they need Settings › Advanced › Experimental › Shared daemon runtime (Settings › Interface › Terminal & browser shows the connection state). They keep running after you close the window.

The header has no terminal button. Use the keys below, or Toggle terminal in the palette.

KeysDoes
Control ` or Command JShows or hides the drawer
Control Shift `Opens a new terminal

A session holds 12 terminals that you opened, plus the agent's task terminals. A tab shows starting, failed to start, disconnected or exited. Drag tabs to reorder them. Each session keeps its order.

Showing the drawer starts a shell when the session has none of yours. A drawer that is already open when you get to the session (a new session copies its project's layout, and the app restores it after a restart) starts none: it shows a New terminal button.

Archiving a session ends its shells, except those in a cloud sandbox (E2B, Daytona), which pause with the sandbox. A shell on this computer or on a server also ends after 30 minutes with no window showing it, no output and no typing, if nothing runs in it. A dev server, or a job you left in the background with &, keeps it running.

The host keeps the last 4 M characters of each terminal's output. A window that opens the terminal again shows that history, up to 5,000 lines of scrollback. The drawer and the Terminal tab each keep the last 3 terminals you looked at ready. An older one replays its history when you show it again. Only the focused terminal's cursor blinks.

In a terminal's menuDoes
Restart terminalStarts a fresh shell in the same tab
ReconnectReattaches after the daemon dropped
Hide from the agent / Show to the agentHides the terminal from the agent's terminal tools, or shows it again
Add to chatAttaches the selected text to the next message
New terminal on this MacFor a session on a server: opens a local terminal instead

URLs, localhost:5173 and file:line:col paths in the output are links. On macOS the usual line-editing keys work, such as Option Left Arrow to move by word.

With Settings › Agent › Agent tools › Agent can use your terminals, the agent reads your terminals and types in them after you approve. With Agent's background tasks in terminals (on by default), each background command that the agent starts gets a tab. Stop in that tab ends the task. Show terminal in Running work brings a task's tab up, focused, without opening a shell of your own. With Settings › Interface › Terminal & browser › Close terminals that exit cleanly (on by default), a clean exit closes the tab. A failed shell stays open.

The Terminal tab with a shell showing the latest commit and git status.
The terminal drawer open under the conversation.

Browser#

The Browser tab is a browser for the app you are building, with one page per session. The address bar takes a URL or a bare port (5173). Only http and https pages load. An empty tab shows the last 6 pages of the project that loaded as cards, with their icon, title, address and how long ago you visited them, and lists dev servers running on this computer. A page counts once per address and path: a different query or hash, or a route change inside your app, is the same page. An address that failed to load does not count. Right-click a card, or use its ⋯ button, to open the page in your usual browser or remove it from the list. Press Enter in an empty address bar to go back to it.

ControlDoes
Back, Forward, ReloadMove through the page's history
Screenshot to the promptAttaches the visible page to the next message
Pick an element for the agentClick an element on the page and the agent gets it
Annotate the page for the agent, Command .Mark elements and areas of the page, with a comment for each. The tray under the page sends the marks to the agent or discards them. You can rebind the key in keybindings.json (rebind a key).
DevicesOff, Responsive with a width and height, or a standard device. Rotate swaps the sides.
More › Color schemeSystem, Light or Dark for the page
More › Open DevTools in a windowDevTools for the page. DevTools can also dock under it, with a drag handle.
More › Open in system browserOpens the page in your usual browser
More › Clear site data for this projectRemoves the project's cookies and storage

Each project has its own browser profile, so logins and local storage stay after a restart. The pages of the last 2 sessions that showed the browser stay loaded. Another session's page reloads at its last URL when you show it again. A crashed page reloads at its last URL, 3 times in 30 seconds at most. After that, the tab shows a reload button.

With Settings › Agent › Agent tools › Agent can use the browser, the agent opens, reads, clicks and types with the browser_* tools. A cursor shows where it acts. Your own click or typing interrupts it. Settings › Interface › Terminal & browser › Show the browser when the agent uses it opens the tab the first time in a run that the agent uses the browser of the session on screen.

The Browser tab showing a local development page.

Inbox and todos#

Inbox holds the plans and questions that the agent waits on in the open session. The current one shows as a card, and older ones stack under it. A new request opens the tab (where requests wait).

Todos shows the agent's live todowrite list and keeps it with the session after the run. Click a status to cycle it, click an item to edit it, add or remove items, or clear the list. The badge counts open items. The Todos badge of the composer also opens the tab.

The Todos tab with one item done, one in progress and one pending.

Queue#

Queue lists the messages you sent during a run, in the order they go out when the run ends. The tab's badge and the composer's Queued badge count them.

ActionDoes
Click the textEdits it. Return saves, Shift Return adds a line, Command Return sends it now, Escape cancels.
Play buttonPushes it into the running turn, between tool calls
Remove buttonDrops it

Attachments show as one chip that opens them in a preview. While you edit a message, paste, drop or attach files to add one, or remove one.

Reference#

  • Extensions: registerPanel and the panel content model.
  • Terminals: how terminals run in each environment.