github charmbracelet/crush v0.99.0

3 hours ago

Catwalk v3, hooks!

A big one! Crush now runs on Catwalk v3, hooks can see every part of a run, and editors that host Crush get a whole new set of tools to feel right at home.

Small overview of Catwalk v3:

Crush now speaks Catwalk v3. Provider type describes the API format a provider uses, not who made it:

  • completions: OpenAI-compatible APIs
  • responses: OpenAI, or anything routed through it
  • messages: Anthropic-compatible APIs

Your config is migrated automatically when it loads, so openai, openai-compat and anthropic keep working. No edits needed.

The provider add and model add flags follow along:

crush provider add deepseek \
  --type completions \
  --base-url "https://api.deepseek.com/v1" \
  --api-key "$DEEPSEEK_API_KEY"

crush model add deepseek/deepseek-chat --thinking toggleable --max-attachments 5
  • --can-reason is now --thinking always|never|toggleable
  • --max-attachments N is new
  • Reasoning levels show friendly names in the picker, like "X-High"

Hooks, everywhere 🪝

Hooks are no longer just about tools. They can now follow the whole run: sessions, turns, permissions and more!

Hooks are now checked against the list of known events, so a typo gets caught early. The docs cover each event and how it lines up with Claude Code.

Client/server mode

If you build something that runs Crush inside it, this release is for you:

  • Host themes: the host app can theme the TUI over the server API, so Crush matches your applications.
  • Host context: the host can tell Crush what's in view, like open files, and those files appear in completions.
  • Append to the next prompt: clients can add text the agent reads with the next prompt, without starting a run or cluttering the chat.
  • Shared viewing: clients can see which session other clients are looking at.
  • Piped permissions: set CRUSH_PERMISSIONS_PIPED=1 and the host answers permission prompts, so you aren't asked twice.
  • http:// addresses work as an alias for tcp:// when starting the server.

Steadier server

  • SIGHUP now reloads the config instead of stopping the server.
  • Closing the terminal or stopping Crush through a service manager now shuts down gracefully, so work in progress is saved instead of left looking stuck.

That's all for now!
Charm XX 💫


Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

Changelog

New!

Fixed

Docs

Other stuff


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.99.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.99.0/checksums.txt.sigstore.json'

Then, verify it using cosign:

cosign verify-blob \
  --certificate-identity-regexp '^https://github.com/charmbracelet/crush/\.github/workflows/(release|nightly)\.yml@' \
  --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:

sha256sum --ignore-missing -c checksums.txt

Done! You artifacts are now verified!

The Charm logo

Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

Don't miss a new crush release

NewReleases is sending notifications on new releases.