Skip to main content

Chat formatting

Agent replies render as GitHub-flavoured Markdown: headings, lists, tables, code blocks, links. On top of that the chat understands two container directives an agent can use to structure a long, layered answer — no product change required, just a mention in the agent's system prompt.

Both start with ::: at the beginning of a line and are closed by a line containing only :::.

Collapsible sections: ::: detail​

::: detail Evidence in full
| Document | Statutory reference |
| --- | --- |
| Pension record | § 9(2) sent. 1 no. 3 |
:::

The text after the keyword is the heading, which stays visible; everything else is collapsed and revealed on click. With no heading it reads Details. ::: details works the same way.

This is the tool for answers that carry both a summary and the full reasoning: the summary stays readable and the reasoning is one click away instead of two screens down.

While the agent is still typing, a section that has not been closed yet renders expanded — so you watch it being written — and collapses the moment its closing ::: arrives.

Callouts: ::: warning and friends​

::: warning Unreviewed draft
This answer was generated automatically and has not been approved.
:::

Seven keywords, four appearances:

KeywordAppearance
note, infoneutral
tip, successgreen
warning, cautionamber
dangerred

note and info stay neutral deliberately: an aside as loud as the warning beside it devalues the warning.

The text after the keyword is an optional title. Use a callout for the one line that must not be missed — a caveat, an open question, a deadline. Not for every other paragraph; a document made entirely of callouts has no hierarchy left.

Nesting and limits​

  • Containers may nest (a callout inside a ::: detail), up to eight levels deep.
  • The body is ordinary Markdown — tables, lists, code and quotes all work inside it.
  • Nothing is transformed inside a fenced code block (```), so an example of the syntax stays an example.
  • Containers must sit at the top level, not indented inside a list item.
  • An unknown keyword (::: sidebar) is left as literal text rather than disappearing.

Wide tables​

A table wider than the window scrolls horizontally instead of squeezing its columns, and column headers are never broken mid-word. That said: on a phone, three to four columns is the most that stays readable without scrolling. Anything that wants more columns usually belongs in more rows, or in a ::: detail.

Citations​

When an agent draws on a knowledge set it points at the retrieved passages with [1], [2]. Those markers become clickable chips; for a PDF the click opens the file at the cited page. A prose reference ((file, page 47)) cannot do that — it stays text someone has to look up by hand. An agent that should point at pages ought to use the [n] markers.