Claude talks a lot while it works, and you pay for every word. hush turns down the chatter.
An 85-session run of an older 17-job suite, with every reminder turned on: HUSH_NUDGE=max. The tables below are the current six-job suite on the default setting.
TL;DR β Claude bills you for every log line, build dump, and word of play-by-play. hush trims that bulk before it reaches your bill. Install and forget: on the noisy, long engineering work it's built for, sessions run about 15% cheaper and nearly all the play-by-play disappears. Short no-tool questions cost a little more.
Claude talks a lot while it works. "Let me look at the codebase." "Now I'll check the config." Then four hundred lines of build output you never asked for. And at the very end, the one sentence you actually needed.
hush trims that bulk β logs, command output, narration β at the source, before any of it hits your bill. It earns its keep in sessions that read logs, run builds, and keep going turn after turn. A short question with no tools has nothing to trim. There you pay a little more for the quieter reply.
And the one message you do get is built to be read on an empty tank. Answer first. Everyday words. One fact per sentence. Hard caps: 12 lines, 10 words a sentence. Made for ADHD readers, and for anyone fried at the end of a long day.
- Noisy sessions cost less. The two biggest sources of bulk β machine output and narration β get shrunk at the source.
- Easier to read. The answer sits at the top of one final message, not buried in a play-by-play.
- Your files are never touched, and big output is saved before it's shortened. The summary points at the saved file. Smaller trims keep the error and warning lines and drop the repetitive middle.
- Zero setup. Install it and it's on. Nothing to configure, nothing to learn.
| Moment | What happens |
|---|---|
| Progress narration | Swapped for one clean summary at the end |
| Command output & log files | Trimmed as they come in β a short tail from a clean run, up to 250 lines from a failing one, with the error and warning lines pulled through |
| Really large output (a huge log, a giant lockfile) | Parked in a local file behind a short summary, so it isn't re-sent in full every turn |
That's the whole list. No workflow to learn, no dial to find first.
Important
A command that fails is not trimmed on a default install. Claude Code gives hush no way to replace failing output unless the session runs in bypassPermissions mode, or you set HUSH_WRAP=1. The benchmark figures below were measured with HUSH_WRAP=1.
Inside Claude Code, run:
/plugin marketplace add V-Songbird/foundry
/plugin install hush@foundry
It kicks in at your next session β nothing to configure.
Running razor too? They fire on different moments of a session, so neither notices the other.
hush runs itself. Two commands sit off to the side, for when you want the final message in a different voice:
| You want to⦠| Command |
|---|---|
| Try one of the output styles hush ships, or hand back to stock | /hush:pick-style |
| Build an output style in your own voice on hush's silent frame | /hush:craft-style |
Every style runs the same silent machinery. They differ only in the voice of that one last message:
| Style | What the final message does |
|---|---|
| Glyph | Emoji-telegram reports β an emote replaces each obvious word |
| Rock | Stone Age dialect β noun chains, no articles, = for cause |
| Pirate | Every report in full pirate dialect, outcome first |
| Sensei | Teaches the change at newcomer depth β the why and how, closed by a Lesson: and a Check:. No length cap |
/hush:craft-style writes a new style in a voice you describe, and a verifier checks that the machinery survived the rewrite. Both commands ask before they swap, and take effect at your next session. Updating the plugin hands the slot back to stock, so re-pick after an update. Only stock is benchmarked β the numbers on this page belong to it.
See them side by side. Same bug, same fix, five sign-offs β styles/README.md.
We put hush up against plain Claude Code on six fixed jobs β the work hush is built for: noisy builds and logs, a big migration sweep, and long sessions that drift. Full agent sessions that explore, edit, and run code, with real numbers read from the API.
hush cuts the noise and the bill. Tool output drops 49%, the running commentary all but disappears, and the average session costs 15% less. It earns the most on loud logs and long digs. It costs a little on short questions with nothing to cut. The full picture below has every row, the wins and the losses.
And you read it in silence. hush went the whole session without a word of play-by-play in 8 jobs of 12, and slipped seven times in all β plain Claude Code slipped 36 times. Claude still speaks up to flag something you'd want to stop, or when it's blocked and needs you.
Every kind of work, the wins and the losses. Typical (median) cost per session, on Sonnet.
| Kind of work | no plugin | hush | change | worst single job for hush |
|---|---|---|---|---|
| Noisy builds and logs (3 jobs) | $0.205 | $0.205 | a wash | the failing suite, +12% |
| Search-heavy (1 job) | $0.765 | $0.767 | a wash | β |
| Long drifting sessions (2 jobs) | $0.505 | $0.438 | β13% | the feature job, +21% |
| Whole suite (mean) | $0.444 | $0.378 | β15% |
Every setup passed every correctness check this run β 12 of 12 each β so none of the savings came from cheaper-but-wrong answers. Read the rows, not just the last one: your bill will follow whichever rows look like your work. On Haiku, hush costs about 11% more and slips just twice in twelve jobs β but it missed two correctness checks there. Treat it as a silence tool first on the small model.
We also scored the one final message each setup shipped, on measures none of us invented β Flesch Reading Ease, US grade level, sentence length, long words. Beside hush: i-have-adhd, built for ADHD readers, simple-english, aerospace's controlled English, and caveman, ultra-compressed answers. Same six jobs, same run, on Sonnet.
| Setup | words | lines | words per sentence | long words | reading ease | grade level | silent sessions | mid-work slips |
|---|---|---|---|---|---|---|---|---|
| no plugin | 100 | 5 | 14.9 | 10.5% | 66.2 | 7.7 | 2 of 12 | 36 |
| hush | 63 | 4 | 9.6 | 7.0% | 81.2 | 4.3 | 8 of 12 | 7 |
| i-have-adhd | 80 | 5 | 9.9 | 9.3% | 71.6 | 5.7 | 3 of 12 | 18 |
| simple-english | 91 | 4 | 12.4 | 7.7% | 79.0 | 5.3 | 1 of 12 | 30 |
| caveman | 46 | 2.5 | 8.9 | 11.4% | 68.7 | 5.9 | 5 of 12 | 11 |
hush reads easiest of the pack and goes quiet. It takes the reading crowns this run β a full grade easier than the style built for ADHD readers, three grades easier than plain Claude Code β and it's still the only setup that regularly finishes a session in silence. caveman writes the shortest messages, with the longest words on the board. The honest loss: hush ends with something you can run 73% of the time, plain Claude 91%.
Here's what that reads like. One real final message from this run, the dependency-bump job, exactly as hush shipped it:
Fixed two real bugs the bump exposed, not just noise.
src/core/options.jsreadoptions.retries, but the new bundler passesretryCount. Changed it to read the right field.src/net/retryPolicy.jsthrew onundefinedflags. Now unset flags mean backoff is off, matching the new config loader.Build now exits clean, 0 errors. The rest was just deprecation noise from the bump, safe to ignore.
How we tested: same jobs, two runs each in fresh throwaway workspaces, on Sonnet β full headless agent sessions, never a single generated reply, costs read from the API. Suite-wide numbers move a few percent between runs, and a single row can swing 10 to 20 points β read the direction, not the decimal. Reproduce it yourself: the marketplace repo.
Every trim happens locally as Claude works β read the plugin's files if you want the exact mechanics. pick-style swaps your chosen style into hush's own slot so it binds like stock, and swaps stock back on request.
Most people never touch these. By default hush reminds Claude to stay quiet once at the start of each turn, and once more only in the moments chatter actually slips through β so a session that stays quiet pays nothing extra:
| Variable | What it does |
|---|---|
HUSH_DISABLE=1 |
Stops every hook β no compression, no reminders, no files written. The output style is a separate switch: run /hush:pick-style to hand the slot back to stock, or uninstall |
HUSH_DEBUG=1 |
Writes a local record of what hush did to each tool output β sizes in and out, and where the full copy went β to hush-debug-<session>.jsonl in your system temp folder |
HUSH_NUDGE=max |
As quiet as hush gets β a reminder on every tool result, whether or not anything slipped. Costs the most too |
HUSH_WRAP=1 is a situational switch β it lets hush trim failing commands too; see the callout under How it works.
There are no compression levels and no profiles β the trimming is one policy.
Claude Code's own Output style setting is what selects Hush's voice. Installing the plugin sets it automatically. If it didn't bind, pin it by hand in ~/.claude/settings.json:
{
"outputStyle": "hush:Hush"
}Once it binds you can drop the pin β /hush:pick-style swaps styles inside hush's own slot.
- Getting the full output back. The summary names the file hush parked. Read it and you have every byte. If the file is gone, run the command again β hush never claims it regenerates what was lost.
- Turning it off is two switches.
HUSH_DISABLE=1stops everything hush does while a session runs. The style is chosen at session start β hand it back with/hush:pick-style, or uninstall. - Where the parked output lives. Your system temp folder, in
hush-sidecar, one folder per session, readable only by you where the OS supports that. hush deletes that folder when the session ends, and clears anything a crashed session left behind once it's a day old. Anything you'd hate to see in a temp file, keep out of the terminal. - Windows caveat. Same atomic writes, same refusal to follow symlinks, but the read-only-to-you file mode isn't enforceable there. Treat parked output as readable by anything running as you.
MIT β see LICENSE.