v0.57.0
charmbracelet/crushv0.57.0Apr 13, 2026by github-actions[bot]
AI Summary
Session hardening and token savings release with opt-in flag for reduced tool descriptions and improved skill discovery.
Key Highlights
- Opt-in short tool descriptions (saves ~120k tokens/session)
- Session hardening - prevents corruption from malformed image data
- Better skill discovery in non-latin contexts
- crush_info tool shows attribution settings
New Features
- CRUSH_SHORT_TOOL_DESCRIPTIONS flag for token savings
- Session corruption prevention
- Improved skills parsing and discovery
Full Release Notes
# Session Hardening, Token Savings and More There are a bunch of solid housekeeping improvements in this release, including opt-in token savings and some serious work on session integrity and guarding against session corruptions. ## Fewer Tokens (Preview) In this release we're introducing a new flag that reduces the size of tool call descriptions by about 98%, which we're estimating will save about 120K tokens/session! The `tl;dr` is that LLMs are a lot better nowadays at tool descriptions and shorter descriptions will do. We're just keeping this behind a flag a bit to test more models with it, but find it generally works well for most models. If you want to opt-in, just do: ```bash export CRUSH_SHORT_TOOL_DESCRIPTIONS=1 ``` ## Session Hardening When a session becomes corrupted, things really suck. This release contains two fixes to prevent that: * Crush will now detect malformed image data and gracefully handle it so the session doesn't break. This is a common situation when doing frontend web development, including using MCPs, like Figma's MCP. * Prior to this fix, tool calls could fire off while streaming, which could result in tool results without tool calls. This would in turn result in a corrupted sessions. Not anymore! ## Better skill discovery @huaiyuWangh came in hot with another solid patch, this time improving how Crush discovers and parses your skills, particularly in non-latin contexts (e.g. Chinese, Japanese, Korean, Arabic, and so on). ## Crush Info Improvements The `crush_info` tool also got a little bit smarter, and now show your attribution settings. If you don't yet know, `crush_info` is a tool available for the model that shows your current Crush configuration. It's one of the things that helps Crush to debug and configure itself. Pair it with `crush_logs` and the `crush-config` skill and you'll find Crush is quite self aware! That's all for today! Keep Crushing and see you in the next release. Charm™ ## Changelog ### New! * a2081e1f3717e5f8d7ebd23497d5c4c821aad3ed: feat(config): support `HYPER_API_KEY` for hyper auth (#2583) (@andreynering) ### Fixed * 7a6a179ccc0fc1d5744bad3a7ccabd085a6474ca: refactor: simplify skills parsing and improve discovery visibility (#2350) (@huaiyuWangh) * 4a1298ecd1dff83e1e704ca6b65b5a18d86e0490: chore: bump bubbletea and ultraviolet to v2.03 and 73592393e1ad and fix (@aymanbagabas) * 4d62229045b4cc0242056ae2b57caedb14a53320: fix(tools/bash): restore cross-platform instructions in bash tool (@meowgorithm) * efe42e801fbb5a44db1463f2e8ace2957328e504: fix(agent): prevent session corruption due to malformed image data (#2597) (@meowgorithm) * c41a1a0e40b90fa2ce20b076a3741cfa6dbdff8a: fix(agent): validate tool call/results + strip tags from titles (@meowgorithm) * e5712f07f08e1a6d81e07ab766dd3528251c3713: fix(ci): use stable Go version in security workflow (@aymanbagabas) * d9f857fb29317f25d2af8f7104802d88b3417a5b: fix(events): prevent early events from being dropped before init (#2611) (@meowgorithm) * d96d0443c2d61e4684514ce8545dd3db919063e3: fix(tools): add missing strconv import (@meowgorithm) * f78baed0f06e40a3be64d21c69422ef8a6def832: fix(tools): drastically reduce tool call description lengths (@meowgorithm) * 2e8767df512b4ab2245c7477f1f18ad6ae690c27: fix(tools): modernize string split (@meowgorithm) * 40b7cdd46685c3d4b96b74cdcab48a2181951cb0: fix(ui): format code in ui.go (@aymanbagabas) * 95fcd88870eee23c0389d97784b297b1482ccb15: fix: show attribution setting on `crush_info` tool (#2594) (@andreynering) * b680a4a1cf96e757d772e7f462e08da2809418e2: fix: use proper bool check (@meowgorithm) ### Other stuff * 3e8c1489e44f5cf34f4702fefe2ec98a81b9e2c6: chore(agent): move filter logic into a function (@meowgorithm) * ff003b461548c4efd0a41178d31aac00a07e80bc: chore(tests): re-record vcr cassettes (@meowgorithm) * a02ce4a98b6af7ff4f75491d838c901f4a3916a4: chore(tools): gate short descs with CRUSH_SHORT_TOOL_DESCRIPTIONS (@meowgorithm) --- <details> <summary>Verifying the artifacts</summary> First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.57.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.57.0/checksums.txt.sigstore.json) files, for example, with `wget`: ```bash wget 'https://github.com/charmbracelet/crush/releases/download/v0.57.0/checksums.txt' wget 'https://github.com/charmbracelet/crush/releases/download/v0.57.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).