v0.48.0

charmbracelet/crushv0.48.0Mar 12, 2026by github-actions[bot]

AI Summary

This is a significant release of Crush (v0.48.0) introducing notifications for permission requests and task completion, comprehensive CLI-based session management for both humans and agents, and a user-agent string for network observability. The release also includes several bug fixes addressing issues with metrics, UI formatting, and non-interactive mode.

Key Highlights

  • Notifications system alerts users when Crush needs attention (permission requests) and when tasks complete, with easy toggle functionality
  • CLI-based session management with `crush session list` and `crush session <id>` commands, plus rename and delete capabilities
  • User-Agent string (Charm-Crush/0.48.0) for better network observability and identification
  • Bug fixes for panic when metrics disabled, UI formatting (XHigh vs Xhigh), and non-interactive title generation
  • Full JSON output support for agents and machines to inspect past sessions programmatically

New Features

  • Notifications for permission requests and task completion with toggle control
  • Session management via CLI: list, view, rename, and delete sessions
  • Structured JSON output for session inspection (for agents/machines)
  • Custom user-agent string for network requests
  • Command palette entry for toggling notifications
  • Improved examples in `crush --help`

Full Release Notes

# Notifications, CLI-based session management, and more

:wave: 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!

<p><img width="275" src="https://github.com/user-attachments/assets/706221e6-a59c-4402-a9c6-eae702496466" /></p>

If you find this annoying, it's easy to toggle notifs on and off, too:

<p><img width="500" alt="image" src="https://github.com/user-attachments/assets/2f0ef33e-0af0-45c0-a8c9-3989978121d4" /></p>

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`.

<p><img width="582" height="467" alt="image" src="https://github.com/user-attachments/assets/43533bb0-6fe1-40df-96f0-2ca454333410"></p>

<details>
<summary>Demo: listing sessions:</summary>

<p><img src="https://github.com/user-attachments/assets/68cc2b12-2790-4434-bbee-ec0d6a64c0db" width="600"></p>
</details>

<details>
<summary>Demo: viewing sessions:</summary>

<p><img src="https://github.com/user-attachments/assets/bd54ecf8-4eff-43a0-8c0b-b487fee27465" width="600"></p>
</details>

## 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!
* f8da538c509f77dffd1ad1926f8a41ac75953016: feat(notification): alert on turn completion and permission request (#1356) (@Amolith)
* cfcbd69eb24e2d992a74d835384ce9b0426fb4ce: feat: CLI-based session access and management (#2373) (@meowgorithm)
* a897f65d682f7634539a763f74da8c32c998b0d4: feat: set user-agent to Charm Crush/<version> (#2357) (@meowgorithm)
### Fixed
* ec8c8dd22b46496729e725387e15a33ddede26c9: fix(events): panic when metrics are disabled (@meowgorithm)
* e0d3141af1477da55bf4591a85fe98a8a80a6f28: fix(events): remove redundant posthog exit event (#2371) (@meowgorithm)
* 2dacfbd90c237d269d2f42b4cfc9880a54c72857: fix(noninteractive): actually use models to generate titles (#2372) (@meowgorithm)
* 7f2e9f88ea2285c212abfba4996f7e4db7a54d54: fix(ui): format xhigh as XHigh (not Xhigh) (#2369) (@meowgorithm)
* 4fee559a7e675ff21bb04162d44cca3b89dcdcc5: fix(ui): properly truncate info message (#2379) (@aymanbagabas)
### Other stuff
* a3bfa1975f4a9842e4f52735424145f521e9bab1: chore(agent): allocate errors once, reuse errors (@meowgorithm)
* 7d50e8f8e7a8bc9b32000a5c97c43f8fc1b1b8df: chore(agent): cleanup logic (@meowgorithm)
* ca32607dc23f2b3f93204dcad32c89ef6ebb7e7a: chore(ui): add command palette entry for toggling notifications (#2402) (@meowgorithm)
* 79c3ffa3ae922655a025d7ce0b0a4b5ec3722d61: chore: improve examples in `crush --help` (@meowgorithm)
* 45c25b34733f5f0b59bb9f7a05b057100eae3632: chore: update AGENTS.md (#2388) (@meowgorithm)
* 53ca4dc3e9eb84fffc9d7128a764bddbd5973b2b: chore: update and improve ui/AGENTS.md (@meowgorithm)
* cee203d423aa9a1249fcc40fb7ea06225d27a290: chore: update user-agent string to better follow the convention (@andreynering)
* 5ff8d6876005ba48686a58fa71417c3a3f17bebe: refactor(config): introduce ConfigStore and Scope for better config m… (#2395) (@aymanbagabas)

---

<details>
<summary>Verifying the artifacts</summary>

First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.48.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.48.0/checksums.txt.sigstore.json) files, for example, with `wget`:

```bash
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`](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).