The plan board
When an agent in plan mode has a plan, OAR shows it with a board: the plan text and a few buttons that decide what happens next. You read the plan, then either have it carried out or take over yourself. The board is how a plan turns into work without you retyping anything.
The board is headed Plan ready for review on every provider. It sits inside the agent's reply, below the text and above its attachments and tool lines. While the turn is still running it sits in the running turn's bubble, and moves into the reply when the reply arrives. If the reply already contains the plan, the plan is shown once, as the reply, and the board adds only its buttons.
For what plan mode is and how firmly each provider holds to it, see Relay modes.
The buttons #
| Button | What it does |
|---|---|
| Implement in autopilot | Sends a message for you in autopilot mode: "Please implement the approved plan now." followed by the plan. The composer switches to Autopilot. |
| Stop here and prompt myself | Sends a message for you in agent mode: "I approved the plan. Let's proceed interactively with implementation." followed by the plan. The composer switches to Agent. |
| Stop here | Closes the board. Sends nothing, and leaves the mode as it is (still plan). |
The two messages appear in the transcript as your own messages and run as ordinary turns. They use the conversation's latest model. The plan in them is the board's text, cut at 12,000 characters.
There is no field for instructions on the board. To change the plan, type a message in the composer as usual, for example "Drop step 3 and use the existing helper instead". With the composer still on Plan, the agent revises the plan and a new board can follow.
A board takes one choice. After you click, the buttons give way to a line that
says what was chosen, for example Chosen: Implement in autopilot. The plan
stays in the reply. If the board was closed without a recorded choice, the line
reads Dismissed or Closed. In a shared read-only view the buttons are not
shown.
While the board is open #
On Claude, DeepSeek and Copilot's SDK engine the agent is not waiting. The plan tool is refused on purpose, so the agent does not roll on into implementing, and the agent is told to end the turn with a short closing message: your decision arrives as a new message. On Cursor and Grok the board is made from the finished reply, so the turn is already over. On Copilot's extension engine the board is posted when the agent makes its plan call, and that call is not refused. So on most providers the turn is over when you see the board and the conversation is idle; on the extension engine the agent may still be finishing.
The board has no time limit and nothing closes it on its own. It stays until you use a button or delete the conversation. Typing a normal message does not close it, and its buttons keep working afterwards. The conversation list shows no special state for a pending board: the title colour follows the session, as described in The conversation list.
Any device signed in to the relay can answer the board, and every open page updates. The first answer wins: a second one is refused because the board is no longer pending.
How a plan is recognized #
A plan board comes from one of two sources:
- The provider's own plan tool. The agent calls it when it has finished planning. OAR takes the plan text from the call.
- The text of the reply. When the provider has no plan tool, or the tool
gave no text, OAR looks at the final reply of a plan turn. If at least two
lines start with
-,*or a number and a dot (1.), the reply is treated as a plan and the reply's text becomes the board. Leading spaces do not matter, so indented lines count. A plan written as prose gets no board.
Each turn gets at most one board.
By provider #
| Provider | Board comes from | When |
|---|---|---|
| GitHub Copilot and OpenAI, SDK engine | The runtime's exit-plan call, else the reply text | Text rule applies in plan, and in ask if no action that changes something was approved in that turn |
| GitHub Copilot and OpenAI, extension engine | The agent's exit-plan or task-complete call, else the reply text | Text rule applies in plan only |
| Claude | Claude's plan tool (Exit), else the reply text |
Text rule applies in plan only |
| DeepSeek Added in 0.9.17 | As Claude | As Claude |
| Claude Cloud | No board | A Claude Cloud chat has no relay modes |
| Cursor | The reply text only | plan only. See Cursor |
| Grok | The reply text only | plan only. See Grok |
| OpenAI Image | No board | Modes have no effect there |
On Claude and DeepSeek, a plan that arrives as a file path instead of inline text is read from that file. If no plan text can be found, no board comes from the tool, and the agent is told to restate the full plan as its final message; the text rule then gets its chance.
On Copilot's extension engine the agent's plan call may carry its own list of actions. The three buttons above are the default. A call may add Implement with autopilot fleet, which sends "Please implement the approved plan using autopilot_fleet where useful." in autopilot mode.
Notifications #
A ready plan sends a push notification titled Plan ready for review. With no message preview enabled on the device, the text is "The agent posted a board for review."; with a preview, it shows the board's title. The switch is Boards (plan reviews) under Settings → Notifications, on by default. Like every push, it is sent only while no device has the app in the foreground. See Settings.
In the transcript afterwards #
The board stays in its reply: the plan, then the line Chosen: .... It is
loaded again when you reopen the conversation. The message a button sent is a
normal user message after it. After Stop here there is no message; the
board shows Chosen: Stop here.