Prompt cache and ping
Check prompt-cache retention in the terminal and use /ping to keep a supported lane warm while idle. Understand provider limits, costs and when to stop.
Copy & share
On this page4 sections
Prompt caching lets a provider reuse an unchanged part of your request. It can reduce repeated input cost and latency. It does not save your conversation or replace sessions.

See the countdownLink to this section
Open /cache in the terminal for live cache information and retention controls. TTL means time to live: how long the provider is expected to retain cached context. Support and duration depend on the model and provider. A countdown is not a promise that the provider will serve a cache hit.
Keep a lane warmLink to this section
After a conversation, enable idle cache refresh for that tab:
/ping start/ping also starts it. Stop it with:
/ping stopEmpryo refreshes supported lanes before their known cache lifetime expires. Normal work takes priority. A model change can reconfigure or stop keepalive if the new model does not support it.
Keepalive makes provider requests and can cost money. Use it when you expect to return soon, not as a way to keep every tab alive indefinitely. It cannot guarantee retention during sleep, disconnection or provider failure.

When the cache breaksLink to this section
Every request is compared with the previous one before it leaves. When the cached prefix cannot be reused, the tab shows a notice that names the cause and the exact edit, for example:
Cache broke · system prompt changed (block 3/3 text, −322 chars) · 290k re-written ≈ $1.09 · text after «callable by name with run_tool(…): advisor, »: −"computer, computer_act, …" · evidence 2026-10-01T00-45-39-120Z-system.json
Cache broke · system prompt changed (block 3/3 text, −30 chars) · 290k re-written ≈ $1.09 · text after «Key dependencies: react: 72»: −"4 files" +"3 files" · meanwhile: agent rebuild requested: live config change (taskRouter) (just now); genome map re-rendered (cold refresh) → epoch 3, 57,241 chars (just now) · evidence 2026-10-01T01-57-00-390Z-system.json
Cache broke · msg 178/199 EDITED (assistant: reasoning + tool call explore_script, part 1/2 reasoning, +2,978 chars) — history must be append-only · thinking after «…the user wants»: +"…" · flipped back to a version already sent (×2) — a per-request rewrite of this message is not stable · evidence 2026-10-01T00-51-02-004Z-messages.jsonsystem prompt changednames the block (on the Claude subscription lane, block 3 is Empryo's own instructions; the first two are the lane's attestation). On OpenAI-shaped lanes the system prompt travels as message 1, so the same change readsmsg 1/N EDITED (system …).tool schema changedlists the tools added (+), removed (−) or changed (~).msg N/M EDITEDmeans an earlier message was rewritten in place. The field (text,thinking,signature,input) and a short excerpt follow.flipped back to a version already sentmeans the same message keeps alternating between two forms, which points at a per-request transform rather than a one-off edit.meanwhile:lists what the engine did between the two requests, oldest first:agent rebuild requested: live config change (taskRouter),genome map re-rendered (cold refresh) → epoch 3,instruction files reloaded (project file changed). The step that explains the break is in that list.- The
evidencefile in~/.empryo/logs/cache-breaks/holds the full before and after of what changed, plus the samemeanwhilelist (the last 40 are kept).
A notice that starts with Cache re-written on purpose or Cache expired is expected: a compaction, a /clear, or an idle window longer than the provider's retention.
Choose the right controlLink to this section
| You want to | Use |
|---|---|
| Inspect retention and countdown | /cache |
| Keep the current lane warm while idle | /ping start |
| Stop idle refresh | /ping stop |
| Check actual spend | /usage |
| Recover an earlier conversation | Ctrl+P |
Compare actual usage before and after enabling it. A warm cache is useful only when its savings exceed the refresh cost.