Skip to main content
A conversation is a single agent session on the active backend. It has its own message history, tool calls, file changes, selected agent profile, and conversation-specific plugins.

Branch From a Message

Use Branch from here on a message when you want to explore a different path without changing the original conversation. Branching creates a new conversation from the selected point in the current conversation. The original conversation remains available in the sidebar.
Conversation branching is available on local agent-server backends that support conversation forks.

Branching User Messages

Branching from one of your own messages works like edit-and-resend:
  1. Hover over the message.
  2. Select Branch from here.
  3. Agent Canvas opens a new branched conversation.
  4. The selected message appears in the composer so you can edit it before sending.
The new branch starts from the parent of that message. This lets you rewrite the prompt and continue from the earlier state.

Branching Assistant Messages

Branching from an assistant message creates a new conversation that includes history through that assistant response. Use this when the agent reached a useful point and you want to try a different next step without changing the original thread.

What Branching Preserves

The branch keeps the relevant conversation history, agent configuration, workspace context, and backend-managed state needed to continue from the branch point. The branch is independent after creation:
  • messages you send in the branch do not modify the original conversation
  • the original conversation stays in the sidebar
  • branches can be branched again
  • the branch gets its own conversation title

Branching vs Starting Fresh

Start a fresh conversation when you want no prior context. Branch a conversation when you want the agent to remember what happened up to a specific message, but you want to test a different instruction, correction, or follow-up.

Run a Goal

Use the /goal command when you want the agent to keep working until a specific objective is complete or the goal reaches its iteration limit.
/goal [--max N] <objective>
For example:
/goal --max 3 add unit tests for the parser and verify they pass
When you start a goal, Agent Canvas runs the agent and uses a judge LLM to check whether the objective is complete after each round. If the judge finds missing work, Agent Canvas sends that feedback back to the agent and continues until the goal is complete or the maximum number of rounds is reached. While a goal is running, Agent Canvas shows a status banner with the objective, current round, status, judge score, and any missing work. When the goal finishes, the final status appears inline in the conversation history. Goal statuses include:
StatusMeaning
runningThe goal loop is active
completeThe judge confirmed the objective is done
cappedThe goal reached its maximum number of rounds
interruptedA normal user message interrupted the active goal
Sending a normal message while a goal is running interrupts the goal and gives control back to you.
The /goal command requires a backend that supports conversation goal routes. It uses both the agent LLM and a judge LLM, so goal runs may make additional model calls beyond the agent’s normal work.