---
title: Code blocks that are really prose
---

# Code blocks that are really prose

## What it is

A fenced block that holds **prose** rather than code no longer arrives as a column of
short, ragged lines: Omniscio reflows those blocks into flowing paragraphs, and leaves real
code exactly as it was written.

### The problem it solves

A code block's whole job is to keep every line break exactly where the author put it. That is
correct for code — two statements glued onto one line is gibberish.

But agents do not only fence code. They also fence **prose**: a prompt for you to copy, a quoted
message, an excerpt from a document. And that prose usually arrives already wrapped at about 90
characters, while the block on screen fits about 80. So each line spills a short scrap onto the
next row — and that scrap starts hard against the left margin, exactly where a real new line
starts.

The result reads as garbage. You cannot tell which line breaks the author wrote and which ones
the box invented. It looks like the app is broken, when in fact the block is faithfully showing
you line breaks that were genuinely there.

## Where to find it

There is nothing to open and nothing to switch on: this happens inside the conversation itself,
anywhere an agent reply contains a fenced block. You will notice it as a block that reads like a
normal paragraph instead of a narrow strip. When you want the untouched version, the control for
it sits on the block itself, next to its copy button — see **Seeing the original** below.

## How it behaves

### What happens now

Blocks that are really prose are rendered as flowing paragraphs. The wrapped-up fragments are
joined back into their sentences, and the blank lines between paragraphs stay put.

Real code is untouched.

Deciding which is which happens in two stages:

1. **A free, instant check** looks for positive signs of code — a language tag on the fence, a
   line ending in a brace or semicolon, a shell prompt, a diff marker, a file path, a timestamped
   log line, a table drawn in box characters. Anything it can positively identify as code is
   settled on the spot and never touched. On real data this settles about 95% of blocks.
2. **Everything left over** — roughly five blocks a day — gets one question to a cheap AI model:
   is this code, prose, or structured text? Only a clear "prose" answer causes a reflow.

The answer is remembered by content, so the same block is never asked about twice no matter how
many messages it appears in.

### What it will never do

- **Reflow real code.** Nothing overrides this.
- **Change anything when it is unsure.** No answer yet, an answer that did not arrive, an
  answer it did not understand, the budget spent for the day — every one of those renders the
  block exactly as it always has.
- **Flatten a list or a table.** Reflowing joins the author's wrapped lines and nothing else.
  A list item, a quote, a heading, a table row, or a deliberately indented line always keeps its
  own line.
- **Change what you copy.** Copying a reflowed block gives you exactly the characters the agent
  wrote, not the reflowed version.

### Seeing the original

Hover a reflowed block and a three-dot (⋯) menu appears next to the copy button. Open it and
choose **Show original text** to see the text exactly as it was written; the same menu then
offers **Show as paragraphs** to flip back.

### Cost

Effectively nothing. About five questions a day to a cheap model, a fraction of a cent, with a
hard daily ceiling on top. Each distinct block is asked about at most once, ever, and the work
happens in the background — it never delays a message appearing or slows anything you are
waiting on.

### If you would rather it did not

The whole feature can be switched off, and with it off the app renders exactly as it did before
it existed.

## Related

The other half of how an agent reply is drawn — how narration and tool activity are laid out
around these blocks — is on the [Agent Message Display](agent-message-display.md) page, and the
formatting an agent is allowed to use inside a reply is on the
[Agent reply formatting](agent-markdown-formatting.md) page.

- [Agent Message Display](agent-message-display.md) — how agent narration and tool activity are
  laid out around these blocks.
