Changelog
Every banish release and what it changed, newest first. banish compacts shell output before it reaches Claude Code, Cursor, or any MCP agent, so each release is about cutting more tokens from more commands. Install or upgrade with:
New here? Start with the quickstart, see the benchmarks and the methodology behind them, browse every command, or read the guides on reducing MCP token usage and Claude Code usage limits.
v0.6.0 - 2026-07-12
Compaction you can audit, verify, and reverse. Every dropped line is now accounted for, and the original output of any recent command is one command away.
- New audit footer: when a filter drops lines from a large output, the compact result ends with a machine-readable footer listing exactly how many lines each filter stage removed - and the recover command for getting them back. Small outputs stay footer-free.
- New
banish raw <hash>: print the original stdout and stderr of a recent command byte for byte, from a local cache (user-only permissions, 1 hour TTL, 50 MB cap,banish raw --clear, disable with{"cache": {"raw": false}}). No re-running commands to see a dropped detail. - New
banish_rawMCP tool: the same recovery pathway for agents that call tools instead of shelling out. - New trace mode for filter authors:
BANISH_TRACE=1annotates every dropped run inline instead of removing it silently, so a new.bshfilter is easy to verify. - Accurate token counting, opt-in: set
{"tokenizer": "anthropic"}in~/.banish/config.jsonto measure benchmark savings with real token counts instead of the char-based estimate. - Shell completions for bash, zsh, and fish via
banish completion. - Beta and rc release channels:
banish upgrade --channel betaopts in to prereleases; stable users never see them.
v0.5.0 - 2026-07-11
Self-update and a smoother install. banish can now update and remove itself, and a fresh install no longer needs a password on a typical machine.
- New
banish upgrade: download the latest release, verify its checksum, and replace the running binary in place.banish upgrade --checkreports whether a newer release exists without installing it. - New
banish uninstall: remove the binary, with--purgeto also delete~/.banish(extensions, cache, and savings data). - A one-line update notice when a newer release is out. It only appears on an
interactive terminal, never in agent, hook, or CI output; silence it with
BANISH_NO_UPDATE_CHECK=1. - The install script now installs to a
user-writable directory when
/usr/local/binis not writable, socurl -fsSL https://banish.sh/install.sh | bashno longer prompts for a password on a typical macOS setup.
v0.4.0 - 2026-07-10
Cloud CLIs join the party. banish now compacts the verbose output of the three major cloud CLIs before it reaches Claude Code, Cursor, or any MCP agent.
- Comprehensive AWS pack: 186 rewrites plus a generic JSON renderer, with
measured savings of 53 to 95 percent across common
awscommands. - Comprehensive Azure pack: 106
azrewrites plus the JSON renderer, 61 to 91 percent saved. - Comprehensive Google Cloud pack: 96
gcloudrewrites plus the JSON renderer, 63 to 89 percent saved. - New AWS, Azure, and Google Cloud benchmark fixtures so every cloud savings figure is reproducible.
- CI hardening: Go bumped to 1.26.5 to pick up an upstream security fix.
See the full list in the built-in filters reference.
v0.3.1 - 2026-07-07
Security patch for the MCP server. Recommended for
anyone running banish serve.
- Extension verb arguments are shell-escaped before they run, closing a command-injection vector where a crafted MCP argument could execute arbitrary shell commands.
- Tool arguments (positional and modifier) are encoded with the interpreter's exact escape set, so a URL or a value with control bytes survives intact.
- Command detection is quote-aware: a quoted target containing a dash is no longer mistaken for a shell flag.
echoand other builtins return the raw argument value instead of a re-quoted form.
v0.3.0 - 2026-07-07
Smarter renderers and broader coverage - more of the output an agent reads every day now shrinks before it enters the context window.
- JSON-preferring renderers for
kubectlandgh: banish requests structured output and returns a compact form, so MCP tool output stops eating your context window. - Lockfile-aware
git diffrenderer: package-lock.json, yarn.lock, Cargo.lock, and go.sum collapse to the dependencies that actually changed. - New
banish benchsubcommand and a fixture corpus, so every savings figure on this site is reproducible. - New filter packs: dotnet, JavaScript
test/lint runners, make/cmake/ninja, and the GitHub
ghCLI. banish --versionand-vwork as flags, not just theversionsubcommand.- Manifest discovery skips a directory named BANISH instead of erroring on every command.
v0.2.0 - 2026-07-04
The compaction rewrite - the core of how banish reduces Claude Code token usage.
- New rewrite/render/cap compaction pipeline, with the built-in defaults shipped as embedded .bsh.
- Shell commands run verbatim; the
.bshgrammar applies only to registered verbs, so your commands are never reinterpreted. - OS-aware shell selection so banish works on Windows.
- Honest token-savings accounting in
banish gain.
v0.1.0 - 2026-06-16
First public release - three tools in one binary for LLM coding agents.
- The bash proxy: run a command through banish and get compact output back.
- The MCP server (
banish serve), exposing verbs as tools over stdio. - The .bsh language for defining verbs and output filters without a recompile.
- Token-savings tracking and core filters for git, docker, kubectl, npm, cargo, and more.