# witcheer's Wingtips #49: compaction thresholds

Written by [witcheer](https://x.com/witcheer) at Nous Research. Republished with credit.

Canonical: https://hermeswatcher.com/wingtips/49  
Published: 2026-08-19  
[Original](https://notwitcheer.github.io/hermes-recipes/wingtips/49-compaction-thresholds/) · [On X](https://x.com/witcheer/status/2090030442363670584) · [Full collection](https://notwitcheer.github.io/hermes-recipes/) · [Official docs](https://hermes-agent.nousresearch.com/docs/developer-guide/context-compression-and-caching)

[Source Markdown](https://raw.githubusercontent.com/notwitcheer/hermes-recipes/8653fb699a137a32e81936fa33cabacd3f4f2095/docs/wingtips/49-compaction-thresholds.md): use this file as the base for relative links in the verbatim text below.

Sources: [Hermes docs: Context Compression And Caching](https://hermes-agent.nousresearch.com/docs/developer-guide/context-compression-and-caching)


Hermes Wingtips #49: compaction thresholds

when your Hermes Agent stops mid-task to summarize, the number in that warning is not random. compaction fires at a fixed fraction of your main model's context window.

the fraction is `compression.threshold` in config.yaml, and it is always read off the model you chat with, never the summarizers' window.

on smaller context windows Hermes waits longer by default, so a compaction cannot fire with half the window still free.

and if you switch between a huge-context model and a small one, `compression.model_thresholds` sets a different trigger per model, matched on the model name.
