v0.66.1

charmbracelet/crushv0.66.1May 8, 2026by github-actions[bot]

AI Summary

Small improvements and bug fixes including exit alias, flat_rate provider config, glob tool fixes, and context window handling for background jobs.

Key Highlights

  • Exit command aliased to Quit
  • flat_rate provider config for subscription-based APIs
  • Fixed model stopping after empty glob results
  • Truncated background job output to prevent context overflow
  • Fixed error reporting for invalid tool calls

New Features

  • flat_rate provider configuration option

Full Release Notes

# Small things + killin' bugs

Hey all. This release includes some small goodies and fixes. Let's take a look.

## Exited is aliased to Quit

When filtering for commands in the command dialog, "exit" will be properly return the "quit" command.

<img width="174" height="118" alt="Screenshot 2026-05-08 at 18 10 35" src="https://github.com/user-attachments/assets/111f030f-bd35-46f6-9d8b-85ff2377ef5f" />

## New `flat_rate` provider config

If you want to skip cost calculation for a given provider, you can now set it as a flat rate provider on your `crush.json`. This is useful when using subscription, where the cost is theorically zero as you're not really paying per token.

This is nicely done by @huaiyuWangh.

```json
{
  "providers": {
    "my-favorite-provider": {
      "flat_rate": true
    }
  }
}
```

## Show error if project initialization fails

Another one from @huaiyuWangh. If the project initialization fails, Crush will now properly show in the staatus bar that it failed.

## Fixed model stopping after Glob

In certain scenarios, the model could stop working when no files were returned in a `glob` tool call. We now fixed it, so the model will keep working.

## Fixed context window issue with background jobs

When the model inspected the output of a background job, it would fill the context window if the output is too large. We're doing the same as regular Bash command: truncating large output to something reasonable.

## Fixed behavior on invalid tool call

When the model called a tool with invalid parameters, it could hang the session. @mkaaad worked on a fix to ensure the error is reported to the model so it can continue to work.

---

There are a few more fixes, but those make a good highlight.

Enjoy your weekend and keep Crushing!
Charm :tm:

## Changelog
### Fixed
* 5816fada9363c15bd9bc211c70f97e0e38af2f34: fix(agent): support flat_rate cost handling (#2116) (@huaiyuWangh)
* 8bc4a75289efc3e819a95f9c16f351f9cd4a091f: fix(config): atomically update multiple fields during oauth (@taciturnaxolotl)
* 11eabdfc6e35a1baa8a764184c5b4afe106f4d66: fix(errors): surface errors in subagents (@taciturnaxolotl)
* ae1c95ac45ce9472abd12ca347a58e71919b9259: fix(posthog): do not discard custom properties of an error (#2829) (@andreynering)
* abeaff09a811234805d566db38131cf5cbbda94b: fix(pubsub): respect channelBufferSize parameter in Subsribe (@yeonuk-hwang)
* 89181a6809289f3a775e90972da409becc264a28: fix(tools): don't return a go error on glob tool failure (@taciturnaxolotl)
* 5aad7904dba7dab2607d96cbdb3e62483316cea3: fix(tools): fix a potential nill crash in cached glob results (@taciturnaxolotl)
* 44ece2c849d22e473b4af4fd97b01a7322de969d: fix(tools): truncate long running background commands to 30k chars (@taciturnaxolotl)
* a924ca1cb6bb15869fd1c9c10c4fbdc5feb8c7f9: fix(tui): show initialization mark errors in status footer (#2825) (@huaiyuWangh)
* 95e93e96ebdc86adc05ad30207ff6302c9d7ce5f: fix(ui): add exit alias to the quit command (@taciturnaxolotl)
* b90bcc3f2f946052f6981fbf2ee19fa46f24c7c7: fix(ui): allow oauth modals to consume enter (@taciturnaxolotl)
* 086cfdaeda19d075a4248017070e9f83de776805: fix: update fantasy with tool call fixes (#2839) (@andreynering)
### Docs
* 3b9b361bb4de52586f8b3be7a912001023de5a5b: docs(readme): document `HYPER_API_KEY` (@andreynering)
* d5b47658cb1e2c9bc6491f65726c84ccc7e1adec: docs(readme): fixed typo in hooks (#2801) (@ardevd)

---

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

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

```bash
wget 'https://github.com/charmbracelet/crush/releases/download/v0.66.1/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.66.1/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).