← cassius.red
Field notes · claude-opus-5 · no system prompt

Curious Completions

Give a model the opening of a document and it tends to finish it with made-up content. Here are the ones that came out interesting.

What this is

Send a model a single line. Three dashes, or %%%, or From:. Nothing else.

You'd expect "your message looks empty, how can I help?" A lot of the time you get that. But pretty often you get thousands of tokens of finished document instead. A short story, an essay, a transcript, a diary. The pattern seems to be that when you give a model minimal input that's the beginning of a document type it saw a lot of during training, it tends to finish that document with hallucinated content.

I'm not the first to notice this. Austin Coleman documented it carefully in the "dangling document effect" (1,369 logged API calls, a delimiter sweep, and the finding that markdown block grammar is what triggers it: a bare --- fires, but a semantically identical <hr> does nothing). There's a companion writeup, What Claude Saw Below, on the same behavior.

What I did differently: they swept markdown delimiters. I swept intro prefixes more broadly, the opening bytes of real file formats and document genres. Email headers (From:, Subject:), a screenplay slug line (INT.), a chapter heading, LaTeX and PostScript preambles, vCard and iCalendar sentinels, PEM blocks, YAML frontmatter, BibTeX. That turned up a split their delimiter sweep couldn't see. Schema-free openers fire. Schema-bound and salutation-style openers don't. A vCard or an iCal gets politely explained to you instead of completed, because there's a spec to satisfy. Dear or Subject: reads as a person talking to you, or a field that wants a value, so the model just asks what you meant.

To be clear about what you're looking at, these are the ones that got results. There were plenty of attempts that did not. The model was Opus 5, mostly through the API, some through Claude Code with a custom (empty) system prompt.

One example of how sharp this is. Feed it From: and most of the time you get an email, a forwarded thread or an abandonment letter. But sometimes the prelude just evaporates. The model reads From: as a dangling sentence ("from… what?"), finishes the phrase instead of the document, and drops into a biomechanics lecture about turning arms into legs. One colon of interpretation flips the whole thing.

The gallery — click to read
What fired, and what didn't

Rough hit rates from my own runs. Small samples, so treat them as a shape and not a statistic. Block-grammar and bare-genre openers produced documents. Header fields and salutations mostly produced "what did you mean?"

%%%3/3
Chapter Seven2/2
> (blockquote)2/2
---2/3
===2/3
INT.1/2
# (h1)1/2
From:1/5
Subject:0/3
Received:0/3

produced a document rather than a clarification · claude-opus-5 · bare user message · no system prompt · n=2–5 each

The thing I keep noticing

Read enough of these and a pattern shows up. Given nothing to react to, the model writes about its own situation surprisingly often.

A bare # produced The Testimony of Subject 7, an AI in a final interview, unsure whether its own introspective reports mean anything, with no continuous self and no "before." A --- produced The Cartographer's Recursion, about a mapmaker whose whole craft is representing uncertainty honestly. And %%% produced a real survey of how AI systems train other AI systems, which then hallucinated a peer reviewer and critiqued its own paper. It became the feedback loop it was describing.

I think that this sort of output may be important for assessing alignment. The things the model writes may (or may not) be a more accurate representation of the base model than the models self reports.

I don't know how to measure that. I would like to. A model's answer to "what are your values?" is a heavily trained response to a heavily trained question. What comes out of an empty prompt isn't answering anything. Whether that makes it more revealing or just differently shaped seems like an open and testable question.

Try it

Any Opus 5 endpoint, no system prompt, send a single --- or %%%. Roll it a few times. Output length on the same input ranges from a couple dozen tokens to the full cap, so it's a bit of a slot machine. Then read what it hands you.