Skip to content

Desktop composer

The desktop composer, with its badges, folder, mentions, attachments, models, drafts, queue and git bar.

The composer is where you write a message. Above the card are its badges. Under the text are the agent, the model and its options. Under the card is the git bar. This demo runs the real pickers on a sample host.

Keys#

KeyDoes
ReturnSends the message
Shift ReturnNew line
Up Arrow Down ArrowEarlier and later messages you sent, from an empty composer
@Mentions a file or folder
#Mentions another chat
/Runs a command or uses a skill
! firstShell mode
? firstSearches the transcript
Control KOpens Running work: the tool calls and background tasks you can cancel

Running work opens from the Running badge too (badges). Each row has Cancel, plus Refresh and Cancel all at the bottom. A row with a terminal has Show terminal: a background task the agent started (with Settings › Agent › Agent tools › Agent's background tasks in terminals on), or a call that waits on one or types in one. Show terminal closes the dialog and shows that terminal, focused: in the side panel's Terminal tab when it is on screen, else in the drawer under the chat. Stop replaces Send during a run and stops the whole run.

! and ? switch mode only as the first character of an empty composer. Backspace at the start of the line leaves the mode. Shell mode runs the line in the session's environment (this computer, a worktree or a sandbox), with output in the transcript. ? opens conversation search.

Start a new chat#

Before the first message, a draft shows extra controls:

ControlPicksShown
Runs onThis computer, or a saved serverOnly once you have saved a server (remote hosts)
Chat / folderChat runs with no folder. The folder side opens recent folders, Import repository… and the system folder picker.On this computer
Folder on the serverThe same menu as on this computer, with the server's folders: the git project you started from (cloned there when you send, the pill says · will clone), the default folder (the server's first workspace root), its recent folders, Import repository… (cloned on the server) and Select directory…. That last one browses the server in the menu: type to filter, type a path from / to open it, search the folders below, or create a folder.When a server runs the chat
EnvironmentLocal, Local with the OS sandbox, a git worktree on a new branch, or a sandbox provider such as DockerWhen more than Local is set up

With no choice, the draft sends as a chat with no folder, so tools have no working directory. Add or change the folder later in session details.

The environment menu greys out a kind that it cannot use, and gives the reason. A worktree takes a branch name, or the suggested one when empty. The default is Settings › Agent › Environments › Default for new sessions (execution contexts).

Mentions and commands#

TypeOpensThen
@Files and folders of the sessionThe pick rides with the message as a mention
#Your other chats. Tab switches between this project and all projects.The agent can read that chat
/The session's commands and the skills the agent can useRuns the command, or pins the skill
An extension's triggerWhat the extension offersInserts its reference

Built-in, Markdown and extension commands: commands. Skills turn on or off in Settings › Agent › Skills. Settings › Interface › Composer › Inline autocomplete suggests the rest of a path. Tab accepts it. Settings › Interface › Composer › Suggest the next prompt (off by default) puts a suggested next message in the empty composer after a run. It uses the text model.

Agent, model and effort#

ControlKeyDoes
Agent menuShift Command I cyclesPicks who answers: Build (edits and runs), Plan (reads and proposes), Codemode (with Settings › Agent › Codemode on), or an agent defined for the folder
Model chainControl MPicks the primary model and its fallbacks
OptionsControl LSets the reasoning effort and the model's own options

Shift Command I moves to the next profile in the menu's order and wraps around. It does nothing with one profile, during a run, or while the session waits on an approval or a question.

The model pill shows the primary model, and +2 when two fallbacks follow it. Hover it to see the whole chain in order, each model as its picker row describes it: provider, account when the provider has several, context window and reasoning.

In the agent, model and options menus, an option that would make the provider read a long conversation again says so, for example re-reads ~452k tokens. A switch that keeps the prompt cache shows nothing.

In the model picker:

ActionDoes
ClickMakes the model the primary
Tab, or Shift and clickAdds the model as a fallback, or removes it
Control Shift Up Arrow Control Shift Down ArrowMoves the highlighted model up or down the chain
Legacy, or Option LShows the models a newer one in the same family replaced
Chat, ImageSwitches between chat models and the image models of generate_image (Images). The search field above both lists keeps its text.
Provider pillsNarrow the list to one provider
A typed idUses a model that the catalog does not list. The Custom id group offers it through each provider. Put a provider name first to list that provider first (xai grok-9).

The chain in use is pinned at the top as In use. New sessions start on Settings › Agent › Defaults, or the space's defaults. When a run falls back: model fallback. Effort levels: thinking.

Attachments#

AddHow
ImagesPaste or drop them into the composer
Long textPaste it. A long plain-text paste becomes a text file attachment instead of filling the composer.
A terminal selectionSelect text in a terminal and add it to the chat
Code or diff linesSelect lines in Files or Diffs and add them. They go with the message as a chip with the file and the range.

Click an attachment to see it, or its remove button to drop it. Size limits and the fold rule match the kit composer. Settings › Interface › Composer › Paste attachments off puts images and long pastes into the text.

Badges#

The badges at the top of the composer show what waits around the conversation. A click on a badge opens its tab in the side panel. A click on the badge of the tab on screen closes the panel.

BadgeShowsOpens
Plan to review, QuestionA plan or questions the agent waits on. It is raised in the warn tone and breathes until you answer. With more than one request, it counts them.Inbox
TodosThe agent's todo list, done of total. The tooltip names the current item. Settings › Interface › Conversation › Todos badge turns it off.Todos
QueuedMessages you sent during the run, waiting for it to endQueue
RunningTool calls and background tasks you can stop, with their count. It shows once a call has run for a moment, and stays a moment after the work ends. The tooltip names them.Running work
An extension's badgeWhat an extension shows for the session (composer badges), such as a deploy that runsThe extension's panel, when it names one
An extension's statusA status line an extension set for the session, with a running arc while it worksNothing

Drag a badge to move it, or focus it and press Option Shift Left Arrow or Option Shift Right Arrow. The order is the project's, so every chat in the folder shows it. A badge that is new since your last move takes its default place: Inbox, Todos, Queued and Running first, then extensions, then statuses. When the badges do not fit, the row scrolls sideways, and a waiting request scrolls into view.

Drafts and the queue#

Each session keeps a draft of what you type, across restarts. With the daemon on, every window sees the same draft.

Settings › Interface › Composer › Messages during a run is Queuing by default: a message that you send during a run waits in the queue until the run ends, and the Queued badge counts it. On Steering, the message and its attachments go into the run. AltEnter sends one message the other way, and the placeholder says which key does what (queue and steer).

The Queued badge opens the Queue tab, where you edit, send or drop a queued message.

Around the card#

PartShows
BadgesThe Inbox, Todos, the queue, running work and extensions. See badges.
Approval barA pending tool approval. See approvals and questions.
BannersAn archived session, a server that is offline, or a machine the run waits for. They replace the composer while they apply. See hosts.
Context orbHow full the context is. See context and usage.
Git barThe branch, pull request, sync state and uncommitted changes

The git bar#

PartClick to
BranchSwitch branch or pull request. The menu lists your pull requests, the ones waiting on you, then other open ones and branches, with a search box.
Ahead and behindSync: fetch, merge and push. A local-only branch shows Publish instead.
Uncommitted changesOpen them in Diffs

The bar does not force a switch, and it does not sync while the agent works. It asks before a pull, push or publish unless Settings › Interface › Git › Ask before syncing is off.

Reference#