Skip to content

Coro plan mode

Coro plan mode is the conversational intake on Runs → New Run. Instead of filling every field by hand, you describe the work in chat; Coro asks a few targeted questions, then emits a structured brief you can edit before dispatch.

Plan mode is backed by a lightweight LLM call on the runner (POST /intake/stream) — it does not clone a repo, run workflow tools, or spawn a full agent session.

When to use it

SurfaceBest for
Coro plan modeExploratory tasks, vague ideas, choosing FAST vs STANDARD vs DEEP, first-time users with coach mode on
Classic formYou already know repo, reviewers, workflow, and description — or tracker-triggered runs

Set your default under Settings → General → Default new-run mode, or pick Ask each time to choose at the door. Switch to the classic form anytime via Use the form instead in the New Run page header.

How a session works

  1. Open Runs → New Run. When plan mode is active, the left column is a chat composer; the right column shows a dashed placeholder until a brief is ready.
  2. Describe the task in plain language. Use Shift+Enter for multiline input; Enter sends.
  3. Coro may ask up to three short clarifying questions (one at a time). It mirrors your language and stays concise.
  4. When it has enough context, Coro emits a <brief>…</brief> block. The dashboard hides the raw JSON in chat and shows a friendly hand-off message. The right column updates to two stacked cards:
    • Run brief — editable repository, service name, description, reviewers, workflow dropdown, interactive checkbox, and Start this run.
    • What will happen — the selected workflow’s phase timeline, duration band, checkpoint summary, and mid-run controls (same panel as the classic form’s right-hand preview).
  5. Review or edit fields on the brief card, confirm the workflow phases on the preview card, then click Start this run.

Model choice

Click the Model: label at the bottom-left of the chat (same row as Force brief now) to open a model picker. Your choice applies to the current browser session only; it is not persisted to ~/.coro/config.json.

When no override is set, plan mode resolves the planning tier from your LLM aliases (typically a high-capability model such as Claude Opus or your tenant’s tier:planning binding).

Force brief now

Skips further clarifying questions and asks the model to produce a brief immediately from whatever context exists so far. Useful when you already wrote a detailed first message.

Read-only lookups (trackers and repos)

When Allow read-only lookups is enabled under Settings → General (default on), plan mode can call a small curated tool set — reads only, never writes:

ToolUse when
tracker_get_issueYou name a ticket key (PROJ-123, ENG-42, …)
tracker_search_issuesYou describe work and Coro should find an existing ticket
scm_read_fileCoro needs a specific file to scope the brief
scm_search_codeYou mention a symbol or ask where something lives

Tools appear in chat as subtle inline indicators (e.g. “Coro is reading PROJ-123…”). Each call is capped at 15 seconds; the session token budget rises to 60,000 when tools are enabled.

Plan mode never comments on tickets, transitions issues, commits code, or opens PRs — those actions belong to the workflow agents after dispatch.

Disable lookups anytime via Settings → General → Allow read-only lookups.

Start from an example

On the classic form, Start from an example opens a drawer of sample prompts (bug fix, refactor, feature, etc.). Selecting one seeds the description field—handy when you switch from plan mode or want a concrete starting point on the form.

What the brief contains

The model emits JSON inside <brief> tags with this shape:

{
"repo": "org/repo-name",
"serviceName": "short human label",
"description": "task + acceptance criteria for downstream agents",
"reviewers": ["alice"],
"workflowPath": "workflows/job/workflow.md",
"interactive": true
}

Workflow selection inside plan mode follows a lightest-lane-first policy:

  1. workflows/job/workflow.md (STANDARD) — default for almost all scoped work.
  2. workflows/job-fast/workflow.md (FAST) — tiny, single-touch changes only.
  3. workflows/job-deep/workflow.md (DEEP) — genuinely high-stakes work that needs an architecture step (new public API, auth/security, irreversible migration, cross-service contracts).

When uncertain, plan mode prefers STANDARD; the Planner can still call switch_workflow later if the repo contradicts the initial guess. Change the workflow on the Run brief card before dispatch—the What will happen preview updates immediately.

After dispatch — spec writing

Jobs created from a plan-mode brief still enter the workflow’s spec-writing phase first (for STANDARD and DEEP lanes). The Spec Writer agent turns your description (or tracker ticket) into feature-spec.md and registers it as a spec-md artefact on the dashboard.

That phase uses the workflow’s coding tier (typically Claude Sonnet) — not the mini tier used for lightweight subagents like inline code review.

Tracker-triggered jobs additionally read the ticket via tracker_get_issue; CLI and plan-mode jobs work directly from params.description.

Coach mode interaction

When coach mode is enabled (default for new installs):

  • Interactive defaults to on for your first few runs.
  • Extra guidance appears on the New Run page until you graduate (default: after five completed dispatches).
  • Default new-run mode defaults to Coro plan mode while coach mode is active.

Graduation is automatic — the runner increments coachMode.totalRuns on each dispatch. You can disable coach mode or change intake defaults anytime under Settings → General.

Session limits

Plan mode enforces per-session budgets on the runner to keep costs predictable:

LimitValue
Max turns per session8
Max output tokens per turn4,000
Max total tokens per session30,000 (60,000 when read-only tools are enabled)

If a limit is hit, the stream returns an error event; start a fresh session (refresh the page or clear the chat) to continue.

Classic form and ticket mode

Switch to Classic form from Use the form instead in the plan-mode page header, from the mode chooser (when Ask each time is configured), or by setting Default new-run mode → Classic form in Settings.

From ticket mode is unchanged: enter a tracker key, pick SCM/tracker plugins when multiple are active, and dispatch from the sticky bottom bar. Plan mode and ticket mode are orthogonal — ticket runs skip the conversational brief but still flow through workflow phases normally.

Troubleshooting

SymptomLikely cause
”Coro plan mode unavailable — runner plugins not initialized”No LLM executor loaded; finish Settings → LLM provider setup and relaunch the desktop app or restart coro start.
Empty or instant failure after “thinking”Executor healthcheck failed; verify API key or Claude login.
”Request was aborted” (older builds)Known Express 4 + Node 20 interaction with premature request close events — upgrade to a build that decouples plan-mode streams from HTTP lifecycle.
Brief missing repo or reviewersModel could not infer from context; edit the Run brief card before dispatch or mention repo/reviewers explicitly in chat.
No spec artefact after spec-writingSpec Writer must call post_artifact({ kind: "spec-md", data: { path: "feature-spec.md" } }) — ensure your tenant has not replaced agents/spec-writer.md with a version that omits this step.