Session Pruning
Session Pruning
Session pruning trims old tool results from the in-memory context before passing it to the CLI agent subprocess. It does not rewrite the on-disk session history (*.jsonl).
When it runs
- When
mode: "cache-ttl"is enabled and the last CLI agent run for the session is older thanttl. - Only affects the messages passed to the CLI agent subprocess for that run.
- Currently optimized for the Claude runtime (cache-aware TTL behavior).
- For best results, match
ttlto the CLI agent’s cache retention policy (short= 5m,long= 1h). - After a prune, the TTL window resets so subsequent requests keep cache until
ttlexpires again.
Smart defaults
- When cache-TTL pruning is enabled, RemoteClaw applies sensible defaults for heartbeat intervals and cache retention.
- If you set any of these values explicitly, RemoteClaw does not override them.
What this improves
- Why prune: reducing the context payload passed to the CLI agent subprocess avoids re-processing stale tool output and can improve cache behavior for runtimes that support prompt caching.
- What gets cheaper: pruning reduces the payload size for the first run after the TTL expires.
- Why the TTL reset matters: once pruning runs, the cache window resets, so follow‑up runs can reuse the freshly cached context instead of re-processing the full history again.
- What it does not do: pruning doesn’t add tokens or “double” costs; it only changes what gets passed to the CLI agent on that first post‑TTL run.
What can be pruned
- Only
toolResultmessages. - User + assistant messages are never modified.
- The last
keepLastAssistantsassistant messages are protected; tool results after that cutoff are not pruned. - If there aren’t enough assistant messages to establish the cutoff, pruning is skipped.
- Tool results containing image blocks are skipped (never trimmed/cleared).
Context window estimation
Pruning uses an estimated context window (chars ≈ tokens × 4). The base window is resolved in this order:
Default 200000 tokens.
Context window limits are determined by the CLI agent’s own configuration; RemoteClaw uses this default as a pruning budget estimate.
Mode
cache-ttl
- Pruning only runs if the last CLI agent run is older than
ttl(default5m). - When it runs: same soft-trim + hard-clear behavior as before.
Soft vs hard pruning
- Soft-trim: only for oversized tool results.
- Keeps head + tail, inserts
..., and appends a note with the original size. - Skips results with image blocks.
- Keeps head + tail, inserts
- Hard-clear: replaces the entire tool result with
hardClear.placeholder.
Tool selection
tools.allow/tools.denysupport*wildcards.- Deny wins.
- Matching is case-insensitive.
- Empty allow list => all tools allowed.
Interaction with other limits
- Built-in tools already truncate their own output; session pruning is an extra layer that prevents long-running chats from accumulating too much tool output in the model context.
- Compaction is separate: compaction summarizes and persists, pruning is transient per request. See Session management — compaction.
Defaults (when enabled)
ttl:"5m"keepLastAssistants:3softTrimRatio:0.3hardClearRatio:0.5minPrunableToolChars:50000softTrim:{ maxChars: 4000, headChars: 1500, tailChars: 1500 }hardClear:{ enabled: true, placeholder: "[Old tool result content cleared]" }
Examples
Default (off):
{ agents: { defaults: { contextPruning: { mode: "off" } } },}Enable TTL-aware pruning:
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", ttl: "5m" } } },}Restrict pruning to specific tools:
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", tools: { allow: ["exec", "read"], deny: ["*image*"] }, }, }, },}See config reference: Gateway Configuration