Start and continue a thread
On this page
A thread is a Codex or Claude Code conversation running on a cloud machine, where the agent can edit files, run your app, and test changes. The same thread is available on desktop, mobile, and the CLI, so you can read replies and continue the conversation from any of them.
Start a thread
By default, a new thread gets its own devbox: a separate cloud machine prepared from your project's saved environment. The agent edits and tests its own copy of your codebase there, using that machine's own files, services, and ports.
- Open your project in the desktop app and choose New thread in the thread list.
- Choose Codex or Claude. If the draft asks you to set up that agent, connect it first. For Codex, choose Provider above the reply box if you want to use a saved OpenRouter, Vercel or custom connection, then select its model and reasoning level.
- In a project with several repositories, choose the starting working directory. In a project with one repository inside the project folder, the thread will start in that repository. An existing thread will keep the directory it started in.
- Describe the task, add any attachments, and send your first message. Say what outcome you want, where the agent should look, and how to check the result; see Give useful instructions.
A Codex thread keeps its provider connection after it starts. You can change models and reasoning within that connection. To use another provider, choose Start new thread with… from the provider label in the thread header; the new thread will start without copying the old conversation.
In a project with a Template box, new devboxes use its latest saved snapshot. If your Template box has newer changes the task needs, take a new snapshot before creating the devbox. If no snapshot exists yet, boxes.dev may offer to take the first one. Managed projects have no personal Template box; their new devboxes use the team's current saved version.
You can also start a thread on a machine that already exists. To ask another agent about files already on a devbox, choose New thread on that devbox's row; both threads will share its files and running services.
A devbox with more than one thread appears in the thread list as a group
titled after its first thread. To give the devbox its own name, choose
Rename devbox from the group's menu on desktop or mobile, or press r on
the group in dvb agents. The name will stay on the group even if you archive
all but one of its threads, and teammates who can see those threads will see
it too. Clear the name to go back to the first thread's title.
For environment changes that future devboxes should inherit, use New thread on the Template box, then save a snapshot after the changes.
When the agent finishes, review the changes and checks it reports, then reply in the same thread to ask a question, request a correction, or continue the task with the conversation so far.
Add files and images
On desktop, use the attachment menu, drag files into the reply box, or paste an image. Where file search is available, you can also reference project files. Desktop files can be up to 5 GiB each, with up to 10 GiB of active uploads per user. Image limits depend on the selected agent.
To attach a whole folder, choose Add folder from the attachment menu or drag
the folder into the reply box. boxes.dev will compress it on your computer and
unpack it on the box, where the agent can read it like any other folder. A
folder can be up to 5 GiB after compression. Everything inside is included, so
a project folder with node_modules or .git will take longer to add.
For Codex, image input also depends on the model. If your selected model cannot read an attached image, choose an image-capable model or remove the image before sending. Changing models will keep the attachment in your draft.
For a connected box, boxes.dev will check free disk space before accepting new attachments. Files for a new or sleeping devbox can upload while the box prepares. Free space will be checked again before the files are copied onto the box. If the files will not fit, free up space or choose fewer files and retry; your existing draft will stay intact.
On mobile, use the attachment menu for photos or files, including ZIP archives. On iOS, you can also copy an image, touch and hold the reply box, and choose Paste to attach it. Files can be up to 50 MiB each, with up to 100 MiB of files on one message.
Use a skill
Skills are saved instructions that help an agent with a particular kind of
task, such as following your team's commit conventions. On desktop or mobile,
type / in a Codex reply box to list the skills available on that box,
then choose one to add it to your message. On desktop, Codex's commands, such
as Model and Compact, are listed first, followed by the skills. You can
also type $ to list only the skills. Each skill is labeled Project,
Personal, Plugin, Account (from your ChatGPT account or workspace), or
Built-in.
On desktop, the skill will appear as an inline tag. Hover over it to see its
file path. Codex will load the skill you selected when you send the message,
even if another skill has the same name. On mobile, the picker adds $name;
that name needs to be unique on the box for Codex to load it automatically.
If the list doesn't appear on an
existing Template box or devbox, the box may still need its next automatic
boxes.dev update.
In a Claude reply box, type / to list Claude's commands and skills. Choosing
one will add it to your message as /name. Account skills are the ones synced from your claude.ai account.
When Claude works in the project folder, the list also includes the skills from
each repository inside it.
/clear, /new, and /reset aren't available in a Claude thread and won't
appear in the list. To clear Claude's context, start a new thread.
Both lists show the skills and commands you choose most often first. Recent choices count more than older ones, so a skill you stop using will gradually move back down. Your choices are saved with your account, so the order is the same on desktop and mobile.
Before a box connects, including in a new thread, the lists come from a recent thread in the same project. Once connected, they use that box's current skills and commands. Account skills and Claude's built-in commands come from the agent account that's selected, so switching accounts will change them. If no list has been saved yet, open one of the project's existing threads once.
Use a suggested message
When a response finishes on desktop, the empty reply box may show a suggested next message in gray. Press Tab or Right Arrow to move it into the reply box, where you can edit it before sending. Press Esc to dismiss it, or start typing to write your own message. Enter won't send a suggestion.
You won't see a suggestion after every response. Some models don't offer them, and Claude will pause them when your plan is close to a usage limit. Suggestions use your agent plan or API credits. To turn them off, open Settings → Agents → Agent replies on desktop and turn off Suggest next messages. Suggestions will disappear right away, though active Claude threads may keep generating them.
Send a follow-up while the agent works
Choose Queue for another task that can wait until the current response finishes, or Steer for a correction relevant to the work underway. For example, if the agent is fixing a validation bug, you might queue “Add a test for that case afterward” or steer with “Use the existing validation helper in the account module.”
Waiting messages can be edited or removed through their queue controls. Messages sent during startup or reconnection will also appear in this queue.
To choose a default for both agents, open Settings → Agents → Agent replies on desktop, or Settings → Coding agents → Follow-up messages on mobile. Choose Queue or Steer to apply the same default on both devices. App defaults will keep each app's existing preference. On mobile, the composer's Queue/Steer control can change the choice for the current thread; reopening the thread will apply your account default again.
On desktop, Enter or the send button will use your default. Press Cmd+Enter (Ctrl+Enter on Windows and Linux) to use the other action.
Codex
A Steer message joins the response Codex is working on now. Queue messages wait until that response finishes, then run in order. While Codex is working, you can attach files or images to a steer but not to a Queue follow-up.
A steer may discard text Codex was still writing; completed messages will stay in the conversation. Running commands may continue while Codex changes direction.
To bring queued work forward, choose Steer now. It will interrupt the current response and start the oldest waiting message next. The remaining messages will stay queued in order.
Claude
Claude will read a Steer message at its next opportunity without interrupting a running tool. A steer sent during the final response may get a separate response afterward. Once Claude accepts a steer, you can't edit or delete it through the queue controls. Both Queue and Steer support attachments. On desktop, Edit all queued prompts will return your waiting Queue messages to the reply box as one editable draft.
With App defaults, Claude will steer on both desktop and mobile, unless you chose Queue with the composer control on that phone. On desktop, press Cmd+Enter (Ctrl+Enter on Windows and Linux) to queue instead. Slash commands will wait for the current response to finish.
Answer the agent's questions
If Codex pauses for an answer, its pending question or form can appear while the app is still connecting to the agent. You can read it while you wait; answering, approving, or opening a service's browser flow needs the connection. The initial preview omits prefilled form values and browser destinations. These will appear once connected. A long request may show a shortened preview first. If you already answered on another device, the request will disappear when the app reconnects. People with permission to read the thread can also see its pending request; only the owner can answer it.
Codex can ask you questions while it keeps working; they appear in a panel above the reply box on desktop, and your existing message draft stays where it is. Choose an option to advance through the questions, or type a custom answer and select Continue or Send. Choosing an option on the last question will submit your answers. Use Skip to leave a question unanswered. When several questions are waiting, use the arrows at the top of the panel to move between them. Once you send or skip the last question, the panel will close for the rest of the response. To come back to the questions later, select the X or press Esc to minimize the panel instead, then Answer questions to reopen it. Codex will keep working while the panel is minimized. If the response ends before you send edited answers, they will move to the reply box. Answers will reach the running response even if ordinary replies are set to Queue. Returning to a thread won't reopen old questions automatically; select Answer questions to open any you haven't sent or skipped.
On mobile, Codex questions appear one at a time in the scrollable conversation. Tap an option to answer and move to the next question; on the last question, tapping an option will send your answers. For a written answer, type it and tap Continue, or Send on the last question. Use the arrows at the top of the form to move between questions. The form stays visible until answered or the response ends; edited unsent answers will then return to the reply box.
Claude questions also appear one at a time, in a card above the reply box on desktop and in the conversation on mobile. When Claude asks several, use the arrows at the top of the card to move between them. A question can allow one or several choices. When it allows one, choosing it will take you to the next question that still needs an answer, and your answers will be sent once every question has one. For several choices or a custom answer, select Continue, or Submit on the last question. On desktop, you can also press a number key to choose an option. Use Type something else... for a custom answer, Skip when Claude offers to skip a question, or Chat about this to ask Claude to clarify the question. Chat will send any partial answers as context without recording a completed answer. If the box went to sleep while the question was waiting, answering will wake it, and your answer will be sent once the app reconnects.
To let Claude continue when you haven't answered, open Settings → Agents → Agent replies on desktop or Settings → Coding agents on mobile. Set Question auto-continue timeout to 60s, 5m, or 10m. The default, Never, will leave the question waiting for you. After the time you choose, Claude will be told you haven't responded and asked to proceed using its best judgment. Permission requests and plan approvals will still need your response.
The time starts when the question appears and will restart when you interact with its card. When it expires, Claude will receive any partial selections or custom text that reached the box. Your choice will apply across devices to subsequent questions. The timeout will also run with the app closed, as long as the box is awake. A sleeping box must wake before Claude can continue. A box running older software will keep waiting until it updates. Update the app too so it can report card interaction and partial answers. The CLI view uses Claude's own terminal setting separately.
Stop the current response
Choose Stop to interrupt the agent. In Codex, you can also press Escape. Stopping won't delete the thread or undo files the agent changed. Afterward, inspect the changes or reply in the same thread to continue.
Queued follow-ups stay scheduled when you stop the current response, including messages still waiting for delivery. They run in order when the agent is ready. This applies to Codex and Claude on desktop and mobile.
To cancel messages still waiting for delivery, choose Edit message or Edit messages. Their text and attachments will return to the reply box in order, before any text already there. Messages you send after choosing this action stay scheduled. If returning to draft is interrupted or fails, choose Edit message or Edit messages again to complete it.
Use the agent's queue controls to remove messages it has already accepted. A steer already accepted by Claude cannot be taken back through those controls. If Claude doesn't respond to Stop, any steer it hasn't read yet will return to the reply box unsent.
If Stop is unavailable, wait for the current operation to finish. If the whole machine is stuck, see Sleep, wake, and recover.
Leave a draft or wait for startup
You don't have to send a new thread's first message right away. On desktop and mobile, you can leave a draft and come back to its text or attachments. A pinned draft or one with a devbox already assigned will also stay in the list; an untouched empty draft will be discarded when you leave it. For terminal drafts and their image attachments, see Use the CLI.
For a new devbox, boxes.dev can begin preparing the machine while you type. The terminal, files, ports, and other machine controls may stay hidden until the thread has a specific devbox. You can send more messages during preparation or reconnection; they will wait in order for the agent to become ready.
On desktop, sending to an existing thread on a sleeping machine will wake it and put the message in the same queue. Keep the app open until attachments finish uploading and the message reaches boxes.dev. After that, delivery will continue even if you close the app. Messages still saved only on your computer will resume when you reopen their thread.
Use Edit message or Edit messages to return waiting messages to the reply box, including during uploads. If you quit before an upload finishes, you may need to attach those files again; boxes.dev will name any attachments it couldn't restore. On mobile, you can return to the thread list after tapping Send and reopen the thread to check its progress.
Recover from a failed start or message
If startup fails before the agent accepts your first prompt, boxes.dev will restore the recoverable prompt and show an error. Send it again when you're ready to retry; switching threads or reloading won't start a retry for you.
If delivery temporarily fails before the agent receives a message, boxes.dev retries it while later messages wait. After three failed attempts, it shows Send failed on the message and Message send failed above the reply box. Choose Retry to try that same message again, or Edit message (or Edit messages, when several are waiting) to edit the waiting messages together. Waiting for startup or reconnection does not use those attempts.
For a failed Claude message, Resend appears only when boxes.dev can confirm that Claude never received it. If delivery is uncertain, read the conversation before sending the same request again. Delete will remove a failed message bubble without deleting saved conversation history.
If a send warning remains after you've reviewed the conversation, choose the × at the top-right of that message in the desktop app (Dismiss send warning). It will hide the unconfirmed message and warning without resending it, cancelling agent work, or deleting saved conversation history. The dismissal will persist after reopening the thread; a later successful send won't dismiss it for you.
If Codex stops with an error after receiving your message, continue with a reply. Retry, when available, will resubmit the original input; it is limited to failures without command, file, or tool side effects. Otherwise, ask Codex to inspect the current files before continuing.
If an MCP sign-in notice appears above the reply box, choose Open MCPs and follow the MCP connection instructions. That sign-in is separate from the agent account.
Import threads from your computer
If you've been working with Codex or Claude Code on your computer, you can copy those conversations into a project and continue them there. You can choose threads during setup, or import them later with the CLI on your computer. Imported threads will appear in the project's thread list under the Template box. Only the conversation history is copied; agent sign-ins, settings, and plugins stay on your computer.
To import threads after setup:
- In a terminal on your computer, go to the project's folder.
- Run
dvb threads import --project <project> --dry-run, using the project's name in boxes.dev, to list the threads that will be imported. - Run the same command without
--dry-runto import them.
By default, the command imports every unarchived thread that ran in that folder
or its Git worktrees. You can narrow the list with --agent codex,
--agent claude, --since 30d, or --limit 20, add archived Codex threads
with --include-archived, or include threads from other folders with
--all-local. To pick individual threads, pass their IDs from the dry run
with --thread. A coding agent on your computer can do this for you: ask it to
list your threads and import the ones you choose.
You can run the import again safely, because threads already in the project will be skipped. If a thread has changed since an earlier import, for example because you continued it in boxes.dev, the import will skip it and tell you. Projects created from a Team Template don't have a Template box of their own, so you can't import threads into them.