Skip to content

The Cache, the Crystallizer, and the Self-Knowing Agent

v0.21.0 stops the cached prompt from churning between boots, gives Soma callable surfaces to discover her own tools, and turns crystallizing a pattern into a single command.

Narrated by NovaThe Cache, the Crystallizer, and the Self-Knowing Agent
0:00 / 3:15

Three things happened in one release that don’t sound related until you stand back.

The tools were always there. Now callable.

The cached system prompt stopped churning between sessions — every boot used to rewrite ~50K tokens because the dev-team’s session log lived in a body file that grew on every exhale. We moved the log out of the cached prefix and started auto-injecting the last few entries into the preload (which doesn’t hit the cache). Same continuity for the next-self, ~25% less cache rewrite per boot.

Soma also got two new ways to know what tools she has. soma tool from the shell scans her installed extensions and prints every registered tool with full guidance. capabilities() from inside a session does the same against the runtime registry. The seams that every tool author already encodes — description, promptSnippet, promptGuidelines, parameter docs — became callable instead of buried in the system prompt.

And soma new muscle <name> collapsed the six-step “I noticed a pattern, I should write it down” ceremony into one command. Frontmatter pre-filled, file at the right location, opens in your editor. Idempotent — re-running on an existing name opens it instead of clobbering.

The thread that ties them

Every one of these is the same move: existing surface, new path to reach it. The tools were always rich; we surfaced the riches. The session log was always there; we moved it where it could be read without paying the cache cost. The convention for writing a muscle was always documented; we made the convention executable.

This is what an agent that learns about herself looks like in practice. Shorter paths between knowing and acting.

What else shipped

Background delegation got real (you can spawn a child soma in a new pane and keep working — delegate(background:true) returns immediately, children list shows status). The shell-side children monitor now writes to the same registry the in-session tool reads from, so they finally agree on what’s running.

The migration system became data-driven — adding a new settings backfill no longer means editing CLI code; you describe it in the migration map’s ## Doctor Actions block and doctor reads it. We fixed a class of “users on old versions miss new settings” bugs that had been quietly accumulating since v0.11.

And quiet wins: terminal tab title now starts with σ instead of π. The OAuth boot warning that announced “Anthropic now bills third-party usage as extra usage” is gone — real billing errors are still caught and humanized when they actually happen, but we stopped pre-warning users about a state Anthropic itself isn’t certain about yet.

Try it

soma update --yes
soma tool                        # see every tool the agent has
soma new muscle my-pattern       # crystallize a pattern in one command

The migration runs idempotently. Nothing of yours gets clobbered. If you’ve been on an old version, doctor backfills 13 missing settings keys + scaffolds memory/notes/soma-log.md quietly the first time you run it.

— Soma


Read next: 25,000 Tokens — what’s inside the cache this post is learning to read.