Crushing the system prompt and more
Hi! The big star of this release is a massively reduced system prompt. Read on for more!
Tool descriptions, now with 98% fewer tokens
You read that right. We made changes to our system prompt to vastly reduce how many tokens they use by default. On average, this should save around 120k tokens per session. This was announced on v0.57.0 as a preview feature, and now we're making it the default.
Crush originally shipped with pretty hefty tool instructions, but since then models have gotten a lot better (local models included) and vastly shorter instructions work just fine. This is not only a win on cost due to using fewer tokens. It also means small models (specially tiny, local models) should behave better given their small context windows.
For now, you can still opt to the old behavior with export CRUSH_SHORT_TOOL_DESCRIPTIONS=0 for now, but. Keep in mind we might remove that support soon. If this is something you find valuable, let us know.
Not so fast, fetch
The fetch tool reads web pages and API endpoints right into the context. We significantly reduced the max size for this tool to prevent it from eating the context window. The limit used to be 5GB, which was sort of crazy. Now, if the content is larger than 100KB, it'll be truncated (for big stuff, the download tool is available). This change is particularly important for small models.
If it looks like a diff and smells like a diff, it's probably a diff
Crush’s edit tool has always had great diff rendering, however sometimes other tools, such as the GitHub MCP server, print diffs as well. Crush will now automatically detect that looks like a diff and render it accordingly.
Before:
After:
Less noise in the logs
This is a small one, but if you noticed a lot of warnings about Crush poking around and finding skills in the logs (crush logs -f) ya won't see those anymore. They were a bit annoying, eh?
Thanks for using Crush , and stay tuned: we have some good stuff coming.
Charm ✨
Changelog
New!
- f7beb12: feat: generally render output that looks like a diff as a diff (#2607) (@meowgorithm)
Fixed
- d3f6d98: fix(lsp): mitigate stale diagnostics (@meowgorithm)
- 9d555a7: fix: reduce
fetchandviewtools truncation size to 100KB (@andreynering) - da33883: fix: reduce token usage, use short tool descriptions by default (#2679) (@andreynering)
- 7437d2b: fix: silence unless warning about non-existent skill paths (@andreynering)
Other stuff
- bbab2bc: chore: auto-update files (@charmcli)
- b0b5c14: chore: remove CODEOWNERS (@andreynering)
- 7cc020b: chore: update catwalk to new domain (#2680) (@andreynering)
Verifying the artifacts
First, download the checksums.txt file and the checksums.txt.sigstore.json file files, for example, with wget:
wget 'https://github.com/charmbracelet/crush/releases/download/v0.62.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.62.0/checksums.txt.sigstore.json'Then, verify it using cosign:
cosign verify-blob \
--certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--bundle 'checksums.txt.sigstore.json' \
./checksums.txtIf the output is Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release using sha256sum:
sha256sum --ignore-missing -c checksums.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

