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:
- the Primary seat in Settings → Models → Manage Team
- failing that, the Secondary seat
- 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.