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 / 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 workspace 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_ 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 #
- The button is disabled while the relay works, and the dialog stays open.
- The relay checks the folder, creates the conversation with your provider, model and effort, and saves the folder.
- 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.
- 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/ 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- and other image models |
auto, 1024x1024, 1536x1024, 1024x1536 |
dall- |
1024x1024, 1792x1024, 1024x1792 |
dall- |
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.