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
| Surface | Best for |
|---|---|
| Coro plan mode | Exploratory tasks, vague ideas, choosing FAST vs STANDARD vs DEEP, first-time users with coach mode on |
| Classic form | You 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
- 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.
- Describe the task in plain language. Use Shift+Enter for multiline input; Enter sends.
- Coro may ask up to three short clarifying questions (one at a time). It mirrors your language and stays concise.
- 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).
- 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:
| Tool | Use when |
|---|---|
tracker_get_issue | You name a ticket key (PROJ-123, ENG-42, …) |
tracker_search_issues | You describe work and Coro should find an existing ticket |
scm_read_file | Coro needs a specific file to scope the brief |
scm_search_code | You 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:
workflows/job/workflow.md(STANDARD) — default for almost all scoped work.workflows/job-fast/workflow.md(FAST) — tiny, single-touch changes only.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:
| Limit | Value |
|---|---|
| Max turns per session | 8 |
| Max output tokens per turn | 4,000 |
| Max total tokens per session | 30,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
| Symptom | Likely 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 reviewers | Model could not infer from context; edit the Run brief card before dispatch or mention repo/reviewers explicitly in chat. |
| No spec artefact after spec-writing | Spec 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. |
Related reading
- Your first job — end-to-end from install to merged PR.
- Dashboard tour — Settings → General, run detail artefacts.
- Configuration —
coachModeandintakekeys. - HTTP API —
POST /intake/streamSSE contract. - Switch lanes — FAST / STANDARD / DEEP after planning begins.