Notifications, CLI-based session management, and more
👋 Hello all! This is a fairly beefy release with a some nice features and a slew of bugfixes.
Notifications
Sometimes LLMs take a while to do so things and, naturally, we go and do other things in the meantime. Now, Crush will send a notification when it needs your attention (e.g. permission requests) and when it finishes its work. How thoughtful!
If you find this annoying, it's easy to toggle notifs on and off, too:
This feature was implemented by star contributor @Amolith, who waited so patiently for us to QA this incredibly tricky feature across the various platforms we support.
Sessions on the CLI for humans and agents
We're big believers in crush run, Crush's non-interactive mode, and this release brings a host of session-based features to the CLI for humans and agents alike.
In particular, now you can browse sessions with crush session list and inspect former sessions with crush session <id>. Agents and machines can add --json for structured output, allowing you to fully inspect past sessions in their entirety. You can also rename and delete sessions, opening a lot of possibilities around non-interactive mode, i.e. crush run.
For full details on headless session management see crush session --help.
A Crush User-Agent
Now Crush will present itself on the network with a user agent, e.g. Charm-Crush/0.48.0 (https://charm.land/crush). This makes it a lot easier to identify with observability tools. Enjoy!
Crushing the bugs
We also absolutely hosed a handful of bugs in this release. Good riddance!
Happy hacking,
Charm ✨
Changelog
New!
- f8da538: feat(notification): alert on turn completion and permission request (#1356) (@Amolith)
- cfcbd69: feat: CLI-based session access and management (#2373) (@meowgorithm)
- a897f65: feat: set user-agent to Charm Crush/ (#2357) (@meowgorithm)
Fixed
- ec8c8dd: fix(events): panic when metrics are disabled (@meowgorithm)
- e0d3141: fix(events): remove redundant posthog exit event (#2371) (@meowgorithm)
- 2dacfbd: fix(noninteractive): actually use models to generate titles (#2372) (@meowgorithm)
- 7f2e9f8: fix(ui): format xhigh as XHigh (not Xhigh) (#2369) (@meowgorithm)
- 4fee559: fix(ui): properly truncate info message (#2379) (@aymanbagabas)
Other stuff
- a3bfa19: chore(agent): allocate errors once, reuse errors (@meowgorithm)
- 7d50e8f: chore(agent): cleanup logic (@meowgorithm)
- ca32607: chore(ui): add command palette entry for toggling notifications (#2402) (@meowgorithm)
- 79c3ffa: chore: improve examples in
crush --help(@meowgorithm) - 45c25b3: chore: update AGENTS.md (#2388) (@meowgorithm)
- 53ca4dc: chore: update and improve ui/AGENTS.md (@meowgorithm)
- cee203d: chore: update user-agent string to better follow the convention (@andreynering)
- 5ff8d68: refactor(config): introduce ConfigStore and Scope for better config m… (#2395) (@aymanbagabas)
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.48.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.48.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.




