All pages
On this page

Starting a conversation

+ New Chat opens a dialog where you decide what the conversation runs on and where it works: the provider, the model, how hard the model thinks, and the folder on the relay host. You choose these before the conversation exists. The provider cannot be changed afterwards, so it is worth a look before you press Start chat.

The dialog #

The dialog is titled Choose model for new chat. Fields appear only when they apply: when you pick another provider, rows come and go and nothing from the previous provider stays on screen.

Field What it is Default
Working directory The folder the agent works in, on the relay host. Default, shown with its path, unless your last chat started in another folder that is still in the list (see The working folder).
Provider Which agent runs the conversation. Hidden while Copilot is the only one. Copilot, every time.
Model The models this provider offers. The model you used last, if this provider offers it. Otherwise auto where the list has it (not for OpenAI Image), otherwise the first entry.
Reasoning effort How much the model thinks. Its options are the ones the chosen model supports. The effort you used last, or the nearest one this model offers. Without one, the first option that is not none; on DeepSeek, high.
Context window The window of the chosen model. Read-only. Copilot only, and only when the window is known. You change the tier from the composer once the chat is open.

"Used last" means the last model or effort you chose in the composer or started a chat with, on this browser. A dialog you cancel, or a chat the relay rejects, changes nothing. A Claude Cloud chat never changes them either.

Effort options read as the model's own steps (low, medium, high and so on). A model that cannot turn reasoning off shows none as default. On Claude models that support xhigh, the list ends in Ultracode. It is preselected only if it was your last choice.

The chat also starts in the relay mode that is selected in the composer; see Relay modes. A Claude Cloud chat has no relay modes and starts in agent.

When no provider is ready #

If no provider is ready, the dialog says so above the buttons:

Turn on Claude, Cursor, OpenAI, Grok or DeepSeek in Settings → Providers, or sign in to the Copilot CLI on the relay host.

Open Settings → Providers becomes the main button, and Start chat changes to Start a Copilot chat anyway, because the Copilot check can be wrong. If the chosen provider has no model to offer, the dialog does not open and a notice says "No model is currently available for a new conversation."

When Claude API refuses the chat Added in 0.9.18 #

A new Claude API chat is refused while Claude API has no key, is switched off, or has reached its monthly cap. The dialog then stays open and says why, with Claude API settings and, while Claude is on, Start on subscription, which starts the same chat on your Claude subscription instead. Nothing was created. On a phone the dialog scrolls to the message.

One provider per conversation #

The provider is chosen in this dialog and stays with the conversation. To use another provider, start another conversation. Added in 0.9.18 A Claude chat is the exception: it can switch between your subscription and the Claude API key between turns. Above the composer, a note says which one it is, coloured per provider:

🔒 Session locked to GitHub Copilot models.

The note shows as soon as the chat is open, also before the first message. The name in it is one of GitHub Copilot, OpenAI, OpenAI Image, Claude SDK, Claude API, Cursor SDK, Grok, DeepSeek or ☁ Claude Cloud. The composer only offers models the conversation's provider can serve.

Once the first message has been sent, OpenAI and Grok conversations also pin their model. The note then names it in parentheses, and the model list shows it as a locked entry that you cannot change.

A provider that is switched off #

A conversation that has not sent its first message, and has nothing queued, can still be moved. If its provider goes away, the relay moves it back to Copilot, so you are never left with a conversation that cannot start. What counts as "goes away" differs:

Provider Unstarted conversations move to Copilot when
OpenAI You remove the API key. Switching OpenAI off does not move them.
Claude You switch Claude off.
Cursor You remove the API key. Switching Cursor off does not move them.
Grok You switch Grok off.
DeepSeek Added in 0.9.17 You remove the API key. Switching DeepSeek off does not move them.
Claude API Added in 0.9.18 You remove the API key, or switch Claude API off.

Conversations that have already sent a message, and those of other providers, stay as they are. Claude Cloud is the exception to the rule: switching it off only takes it out of the dialog, and its conversations are left alone.

OpenAI, Cursor, DeepSeek and Claude API do not let you remove the key while one of their conversations has sent a message or has one queued. Switch the provider off for new chats instead.

The working folder #

The agent works in a folder on the relay host. The Working directory list offers, in this order:

Entry What it is
Default The folder the relay uses when you pick nothing. It is the Default CWD for new sessions from Settings → General, or the relay's own workspace folder when that is empty. If the saved folder is gone, a notice says "Saved default CWD is unavailable. Update it in Settings."
The open conversation's folder Its current working directory.
The relay workspace The relay's own workspace folder.
The file browser's folder The folder open in Browse files.
Recent folders Folders recent conversations used; the relay remembers the last 12.
Custom path… A text field for the full path of a folder on the relay host.

The 📁 button next to the list opens the file explorer to pick a folder. The folder you pick lands in the Custom path… field and is checked the same way as one you type. 📁+ New folder in that explorer can create the folder you need.

Underneath, the dialog says where the chat will start, for example This chat starts in /home/dev/projects/shop. The folder of your last chat is selected again next time if it is still in the list. This is remembered per browser, and only once the conversation exists, so a refused path never becomes the next default.

The folder is applied before the conversation's worker first launches, so the first launch already happens there. A path must be an absolute path to an existing folder. If it is not, or it is outside the allow list, the relay refuses it, the dialog stays open and you can fix it. If the folder disappears between the check and the start, the chat is created anyway, in the default folder, and a notice says so.

Changing it later #

🗂️ Change CWD in the conversation's ⋯ menu opens a dialog that shows the Current CWD and the Next launch folder. Enter a Manual path (📁 opens the explorer) or choose from Known CWDs; a manual path wins over the list. Two buttons decide when it takes effect:

Button Effect
🗂️ Save next-launch CWD Saves the folder. The running agent keeps its current folder; the new one applies the next time the conversation's agent launches.
🚀 Set new CWD and (re)launch Saves the folder, stops the agent and starts it again in the new folder. It waits for a running turn: "Wait for the active turn to finish before changing CWD."

If the running agent keeps its folder after a relaunch, a notice says so and tells you to stop it and launch again. A Claude Cloud conversation has no Change CWD: it works on a clone at Anthropic.

Limiting where chats may start #

To keep conversations inside certain folders, set workspaceRootAllowList in the relay's config file to a list of absolute paths:

{
  "workspaceRootAllowList": ["/home/dev/projects", "/srv/sites"]
}

A folder is allowed when it is one of the listed folders or inside one. COPILOT_WORKSPACE_ROOT_ALLOW_LIST sets the same list from the environment, separated by your platform's path delimiter; if both are set, the variable wins. The relay reads it when it starts. Unset, or an empty list, allows any existing folder. The list checks every folder you pick or type in the New chat dialog and in Change CWD, and refuses one outside it. Default sends no folder, so the list does not check it. An entry that is not an existing folder is logged and left out, so a typo cannot lock you out.

The title #

A new conversation is called New Conversation. Rename it in the conversation's ⋯ menu with ✍️ Edit conversation title, or right-click its row in the list (a long press on a phone) and choose Edit title. A title cannot be empty and is at most 120 characters.

When you press Start chat #

  1. The button is disabled while the relay works, and the dialog stays open.
  2. The relay checks the folder, creates the conversation with your provider, model and effort, and saves the folder.
  3. Unless Session worker routing has been turned off in Settings → Features, the relay then starts the conversation's worker process. The chat opens when that has succeeded.
  4. The chat opens empty, with No messages yet and the line Start the conversation below. The folder is shown in the header.

If the worker could not start, the conversation exists anyway and opens, with a notice: "The chat was created, but its session could not start: …". With routing turned off, a notice says the worker prestart was skipped. If the relay rejected something, such as the folder, the dialog stays open with the message and you can correct it and press Start chat again.

A Claude Cloud chat creates its session at Anthropic with your first message, not when you press Start chat.

Claude Cloud: repository and branch #

A Claude Cloud chat works on a clone of a GitHub repository, so the dialog shows Repository and Branch instead of a reasoning effort. The Working directory only fills them in: it is read for its GitHub remote and current branch, and nothing runs in it.

Field What you enter
Repository owner/repo or a GitHub URL. The list suggests the repositories the Claude GitHub app can reach, and ↻ reads it again.
Branch A branch name, with suggestions for the chosen repository. Empty means the repository's default branch.

The model list is the Claude Cloud tab's, and the model preselected is its Default model. Errors appear next to the field they are about, for example "Enter a GitHub repository." The dialog also warns about commits that are not pushed, changes that are not committed and a repository the app cannot reach.

OpenAI Image: quality and size #

An OpenAI Image (BYOK) chat offers only image models. The reasoning row is called Quality instead, and a Size row appears:

Model Sizes
gpt-image-* and other image models auto, 1024x1024, 1536x1024, 1024x1536
dall-e-3 1024x1024, 1792x1024, 1024x1792
dall-e-2 256x256, 512x512, 1024x1024

The size you used last is preselected when the model offers it; otherwise the first size in the list.

By provider #

The dialog is the same for GitHub Copilot on the SDK engine and on the extension engine. What differs is below.

Provider Shown in the list as Offered when Differences in the dialog
GitHub Copilot Copilot Always Shows the read-only Context window when known.
OpenAI OpenAI (BYOK) OpenAI is switched on Models are the ones saved for the key.
OpenAI Image OpenAI Image (BYOK) OpenAI is switched on Image models only. Quality and Size.
Claude Claude SDK Claude is switched on Efforts per model; Ultracode on xhigh models.
Claude Cloud Claude Cloud Claude Cloud is switched on Repository and Branch, no effort, no Change CWD.
Cursor Cursor SDK Cursor is switched on Efforts per model; some models show none as default.
Grok Grok Grok is switched on None.
DeepSeek Added in 0.9.17 DeepSeek Enable DeepSeek for New Chat model selection is on, which needs a saved API key Effort low, high or max on every model; high when there is no last effort to take over. See DeepSeek.

Which providers to switch on, and how, is covered in Providers at a glance.