Filing a conversation with /sleep

Handing a whole conversation to memory at the end of it — what it keeps, which model does the work, and when it refuses.

Recall only works on things that were written down. /sleep is how a whole conversation gets written down at once.

Type /sleep at the end of a session that mattered. Everything said in it is read back, distilled to what's worth keeping, and filed into this conversation's memory — so the next conversation opens knowing it.

Running it#

/sleep is one of two built-in slash commands (the other is /claude). It isn't a template file and it doesn't attach to your message: picking it runs it.

It runs in the background. You get a notice in the transcript when it starts — 💤 Sleep, counting the turns it's working through — and a second one when it lands, naming what it kept. You can keep typing the whole time. There is no spinner and nothing to wait for.

Running it again while a pass is still going is a no-op. It says so rather than starting a second one.

What it keeps#

Not the transcript. The pass reads the conversation and writes a handful of durable notes out of it — decisions, constraints, things about your project that will still be true next week.

The closing notice names them, so you can see what it took: how many were created, how many updated, how many dropped, and the memory they went into.

Note

Tool noise is shed before the pass reads anything — it sees the conversation, not the file reads and shell commands in between.

Which model does the distilling#

Not necessarily the model you were talking to. /sleep uses, in order:

  1. the Primary seat in Settings → Models → Manage Team
  2. failing that, the Secondary seat
  3. failing that, the model answering this conversation

That order exists so the distilling can be done by something small and cheap while you talk to something expensive. Putting a cheap model in the Primary seat is the intended setup, not a compromise.

When it refuses#

It needs one of your own API-key models. The distilling runs through a model Semantix calls directly, which means an OpenAI-compatible model you've configured — not Claude Code.

So on a Claude Code conversation with nothing in the Manage Team seats, /sleep stops before doing any work and tells you:

Sleep needs an API-key model to distill with. Pick one in Settings → Models → Manage Team (or chat on a custom model).

The fix is to put any custom model in the Primary seat. It doesn't have to be the one you chat with.

Note

/sleep is in the / menu whether or not it can run — it doesn't hide itself when the model is missing. The refusal above is how you find out, which is worth knowing before you assume a silent failure.

It also stops early, with a notice rather than an error, when the conversation is empty — there is nothing to sleep on yet.

→ What it recalls as you type · What's stored, and where