v0.62.0
charmbracelet/crushv0.62.0Apr 22, 2026by github-actions[bot]
AI Summary
Major release focusing on token optimization with 98% reduced system prompts now default, plus fetch tool size limits reduced and automatic diff detection.
Key Highlights
- Reduced system prompt tokens by ~98% (saves ~120k tokens/session) - now default
- Reduced fetch tool max size from 5MB to 100KB
- Automatic diff detection and rendering in edit tool
- Fixed LSP stale diagnostics
- Silenced skill path warnings in logs
New Features
- Short tool descriptions by default (opt-out with CRUSH_SHORT_TOOL_DESCRIPTIONS=0)
- Auto-rendering of diff-like output
- Reduced fetch truncation size to 100KB
Full Release Notes
# 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](https://github.com/charmbracelet/crush/releases/tag/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 5MB, 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: <p><img width="750" src="https://github.com/user-attachments/assets/b23073ca-9c69-49be-b1a3-ea6d44a84b8b" /></p> After: <p><img width="750" src="https://github.com/user-attachments/assets/e6eebb4d-0a34-41de-a330-9e517482085f" /></p> ## 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 :sparkles: ## Changelog ### New! * f7beb12689a337dade9d9c9bef575947188bcab7: feat: generally render output that looks like a diff as a diff (#2607) (@meowgorithm) ### Fixed * d3f6d98ab9c02d560c40b34a2899438f04f9cc53: fix(lsp): mitigate stale diagnostics (@meowgorithm) * 9d555a70b64e33e1b0051cc237043d28f1f12f7c: fix: reduce `fetch` and `view` tools truncation size to 100KB (@andreynering) * da3388385da340dcd94a2c73491e3152e8e4cacf: fix: reduce token usage, use short tool descriptions by default (#2679) (@andreynering) * 7437d2b830477f06cb8a84c12f779d54423ca300: fix: silence unless warning about non-existent skill paths (@andreynering) ### Other stuff * bbab2bcbd45ead4033d57308d45ebd2b3191f382: chore: auto-update files (@charmcli) * b0b5c140e8262a94b96e65ea98e735c1e8b1b1d2: chore: remove CODEOWNERS (@andreynering) * 7cc020b7d36eb4669d8f35c8eb857048e6f17775: chore: update catwalk to new domain (#2680) (@andreynering) --- <details> <summary>Verifying the artifacts</summary> First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.62.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.62.0/checksums.txt.sigstore.json) files, for example, with `wget`: ```bash 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`](https://github.com/sigstore/cosign): ```bash 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.txt ``` If the output is `Verified OK`, you can safely use it to verify the checksums of other artifacts you downloaded from the release using `sha256sum`: ```bash sha256sum --ignore-missing -c checksums.txt ``` Done! You artifacts are now verified! </details> <a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a> Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@charmcli), [Bluesky](https://bsky.app/profile/charm.land).