← All posts

Ask about this brief, and do the thing it recommended

The conversation beside a page knows what page it is. Select a paragraph and ask about it, or press Do this to file a recommendation as a pending proposal. Release notes 2026-09-15 — vocion-core#329.

Vocion Teamvocion-v2.74.0

Status: shipped. vocion-core #329 is running, on top of the rail work in #332. Merged onto the release branch release/2026-09-15-rail (7db4f7f6) and deployed to a deployment we operate; migrations 0094–0099 are applied. No environment flag gates it — grepping the release branch for a flag around this code finds none, unlike the email surface, which does ship behind VOCION_EMAIL_SURFACE. Both pull requests are still landing on main individually behind that release branch.

Reading a brief produces two kinds of thought: "what does this mean" and "fine, do it". Both of them used to require you to restate, in a chat box, the thing you were already looking at.

The conversation now knows what page you are on.

Asking about a brief. The rail carries a chip naming what it is about. You do not paste the brief in; the question is about the thing on the left.

Ask about this

A page is context. Open the rail on a brief, a lead, a run or a report and the conversation is about that record. The client sends a page_context field on the turn body alongside message and conversation_id, shaped like this:

{
  "path": "/dashboard/briefings",
  "title": "Workspace brief — Tue Sep 15",
  "selection": { "text": "Two gates are green, two are not." },
  "refs": [{ "type": "briefing", "id": "briefing:41", "label": "Workspace brief" }]
}

No copying, no "which brief do you mean".

A selection is finer context. Highlight a paragraph and ask about it, and the chip narrows to the selection.

Context is read on the server, not trusted from the client. packages/core/src/services/chat/pageContext.ts caps every field and drops anything malformed rather than erroring:

const MAX = 200;            // path, title
const MAX_ID = 120;         // a record ref's id
const MAX_LABEL = 200;
const MAX_HREF = 400;
const MAX_SELECTION = 2000; // the highlighted text
const MAX_REFS = 8;         // refs per turn

A selection longer than two thousand characters is truncated, a ninth reference is dropped, and a malformed entry is skipped rather than failing the turn. A reference naming something this workspace does not have resolves to nothing, and the turn proceeds without it — the same outcome as not sending it.

Asking about a selected passage. The chip says what the question is scoped to, and you can dismiss it if you meant the whole page after all.

Do this

A brief's recommended actions carry a button. Pressing it does not run anything behind your back — it hands the action to the conversation as a proposal, with the status of that proposal visible where you pressed it.

A recommended action being handed to the conversation. "Do this: send the go/no-go note" arrives in the composer as a filled-in turn, not as a silent execution.

What happens next depends on the conversation's own autonomy setting, which has exactly two values:

export const CONVERSATION_AUTONOMY = ['ask-before-acting', 'act-within-bounds'] as const;

In ask before acting — the default, and what an unknown value falls back to — the card waits for your tap, and tapping it creates the review item.

In act within bounds, the agent has your standing permission to file its recommendation into the review queue without the tap. It is worth being precise about what that does and does not mean: nothing executes there. The run still lands pending, and a trust rule or a reviewer decides it exactly as they would a card you tapped. The card you see carries the run id from the first frame, so it shows the queue status rather than a button. An auto-filed recommendation and a tapped one for the same target dedupe onto one run.

Whether a pending run then executes without a person is the autonomy ladder's question, not this toggle's — and some actions are held for a person regardless of the rung. The rules are in Earned autonomy: an alignment ledger and a trust ladder.

A recommended action card in the conversation. A recommendation is a card with a label, a rationale and a confidence. Emitting one has no side effect — the reviewable run is created when the card is acted on, by your tap or, in act-within-bounds, by the server on your standing permission.

Where this lives in the repo

vocion-core#329, shipped on release/2026-09-15-rail at 7db4f7f6 (the integration commit this was read from is bd364d1a) and merging to main individually behind it.

The event mechanics are in One conversation surface, and what streams through it.

Related: Catch-up triage and team briefings and Agents now recommend a decision.