AI CLIs & agents · Charm

Crush changelog

Glamorous AI coding agent for your favourite terminal.

Latest version
v0.98.1
Last shipped
10d ago
Updates · 90 days
19
Avg. release gap
3.6 days
Weekly activity · last 26 weeks3 updates · 25w ago3 updates · 24w ago3 updates · 23w ago4 updates · 22w ago2 updates · 21w ago4 updates · 20w ago2 updates · 19w ago1 update · 18w ago3 updates · 17w ago1 update · 16w ago1 update · 15w ago4 updates · 14w ago1 update · 13w ago2 updates · 12w ago1 update · 11w ago1 update · 10w ago1 update · 9w ago2 updates · 8w ago2 updates · 7w ago1 update · 6w ago2 updates · 5w ago3 updates · 4w ago1 update · 3w ago2 updates · 2w ago2 updates · 1w ago1 update · this week

Release history

Recent updates

Friday, October 9Oct 9, 2026

Release v0.98.1

Crush v0.98.1

Tiny patch This fixes new GPT-6 models via Copilot! Enjoy, Charm XX 💫 Changelog Fixed 8584922dc75b0911bf5dea2cbaec64af557f7a45: fix: route newer Copilot models through the Responses API (#4048) (@DaVinci42) Verifying the artifactsFirst, download the…

Read full notes

Tiny patch

This fixes new GPT-6 models via Copilot!

Enjoy, Charm XX 💫

Changelog

Fixed
  • 8584922dc75b0911bf5dea2cbaec64af557f7a45: fix: route newer Copilot models through the Responses API (#4048) (@DaVinci42)

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

Thursday, October 8Oct 8, 2026

Release v0.98.0

Crush v0.98.0

Rex, OSC 7501, xAI/Grok OAuth and more Hey! There’s some good quality of life stuff in this release. Let’s take a look! It’s Rex Time Following an update on Bubbletea Crush now supports the Program Status Protocol, aka OSC 7501, created by Superlogical for…

Read full notes

Rex, OSC 7501, xAI/Grok OAuth and more

Hey! There’s some good quality of life stuff in this release. Let’s take a look!

It’s Rex Time

Following an update on Bubbletea Crush now supports the Program Status Protocol, aka OSC 7501, created by Superlogical for Rex! As a bonus, TUIOS also supports the protocol.

x.AI OAuth

Now Crush supports Grok OAuth login. Enjoy!

Many more fixes

A lot of fixes were introduced this version:

  • Server side improvements by @meowgorithm
  • External editor swallowing empty buffer
  • Models behind OAuth couldn't be used if they weren't in Catwalk
  • Fixed MCP toggled misbehavior

And a lot more from @taciturnaxolotl. Read all below!

Good luck, Charm XX 👋🏻

Changelog

New!
  • 19e7dd4e9df41fcad81082de3471004cde4ab606: feat: OSC 7501 (#4041) (@andrinoff)
  • 30145cbc8fbb1b33eeeaafb527328474eb20e093: feat: grok OAuth (#3833) (@andrinoff)
Fixed
  • 8b1d542c2ef1be9a3022f67363d696e53f31b0d4: fix(mcp): keep sessions alive when a server doesn't support ping (#4033) (@taciturnaxolotl)
  • ca6ae26ce016b980407ce32f012a467ec10c1e2f: fix(ui): keep multi-line tool output aligned under sub-agent branches (#4019) (@taciturnaxolotl)
  • 5e3fe4b563b31e75692f103b6c95c41588f07ac1: fix(ui): render multiline question answers as one line (#4020) (@taciturnaxolotl)
  • 76cc5c574e15072b15aaed0f4f843a5711fae0d9: fix(ui): stop the attachment row from claiming files that are visible (@taciturnaxolotl)
  • 011a9416c0624341420f9dc8787680308f45b994: fix: Toggle MCPs bug with global and local (#4042) (@andrinoff)
  • 5f295a6f55dd93d718c3d843b002272beb972525: fix: change anim colors on previewTheme too (#4015) (@andrinoff)
  • 65865e01950368379ad1f9746b620a77fb7a5da8: fix: exclude signing from test (#4035) (@andrinoff)
  • b4dd6e6d48eee2c315d6d0690b84c06f14099838: fix: openEditor swallowing an empty buffer (#4007) (@andrinoff)
  • 140e8cb9707faa6a68d87d0ecc3a85b9c65e25d5: fix: stop intermittent CI test failures across all three platforms (#4034) (@taciturnaxolotl)
Other stuff
  • bdcf796cb1ff241b0eb18139071d46a84dc1ee91: chore: auto-update files (@charmcli)
  • 73d1a50a8b07cd0d296c63966ad9b26e7b105b4d: chore: jailbreak crush out of the meta repo (#4008) (@andrinoff)
  • 2fbaa90b55ec711f713c35ed55602eeb789e6048: perf(prompt): read the current git branch without spawning a shell (@taciturnaxolotl)
  • 08984f59d87587aa1cfd644b152034e644892def: refactor(ui): poll the git branch off the render path (@taciturnaxolotl)
  • ee76ff2f206c6fe8e7c607ca6f4569de56787d80: server: add deadline to MCP fetch so hung server won't freeze UI (@meowgorithm)
  • 5b7377befd23712e2c97b896425c8195e2a9c1ee: server: add support for git branches (@meowgorithm)
  • 263a0201b0aac5e16781901103bcb0155cb911b2: server: back off MCP starting-state retries (@meowgorithm)
  • 3297f43b9340996cd0de7507ae81b4b2422fb138: server: fix behavior where MCP status would not update in the UI (@meowgorithm)

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

Tuesday, September 29Sep 29, 2026

Release v0.97.1

Crush v0.97.1

Tiny patch Removed the glyph for Git branch display, as it won't display on when nerdfonts are not available. Changelog Fixed f2d66d286950109082c102d780013df84f741e55: fix: remove the powerline symbol (@andrinoff) Verifying the artifactsFirst, download the…

Read full notes

Tiny patch

Removed the glyph for Git branch display, as it won't display on when nerdfonts are not available.

Changelog

Fixed
  • f2d66d286950109082c102d780013df84f741e55: fix: remove the powerline symbol (@andrinoff)

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

Release v0.97.0

Crush v0.97.0

Crushed It! This release introduces many new features that improve QoL by a ton! Brought to you by Charm and our favorite contributors! Toggle MCPs Thanks to awesome @BrunoKrugel, you can now turn off MCP servers from the UI, globally, or locally. Git Branches…

Read full notes

Crushed It!

This release introduces many new features that improve QoL by a ton! Brought to you by Charm and our favorite contributors!

Toggle MCPs

Thanks to awesome @BrunoKrugel, you can now turn off MCP servers from the UI, globally, or locally.

Git Branches

At last: @taciturnaxolotl and @Gustave-241021 have brought Git branch display to Crush, which is so useful.

More UI and QoL changes:

  • ChatGPT OAuth now refreshes with Catwalk
  • Claude Channels, part 2/3 by @joestump
  • Toggle Sidebar on and off with ctrl+b by @andreynering
  • Quit dialog improvements and mouse support by @meowgorithm

Fixed!

  • Fixed clipboard false reporting successful copies by @taciturnaxolotl
  • Count Anthropic cache-creating tokens by @yanyukang2003-ux
  • Correctly resolving the project data directory in session and stats by @devYRPauli

This release is filled with improvements! Read more below!

See you next time, Charm XX 🔆

Changelog

New!
  • a9a257c46616a4ff32e0a796743384060c3e11c0: feat(mcp): Allow toggle MCPs on/off (#3725) (@BrunoKrugel)
  • 2da6f781c5473cc4f2525ebf315846ff37b6b8b2: feat(tui): display git branch (#2437) (@Gustave-241021)
  • 564d14e4453828614a3d631599fda796e6d2de7b: feat: Claude Channels delivery — session injection, exactly-once routing, reply-back (2/3) (#3346) (@joestump-agent)
  • 62de0deb86f87f704d5388bed6bd9f40419a3e0a: feat: toggle the sidebar with ctrl+b (#3935) (@andreynering)
Fixed
  • a98394ff35cd97379f4a68bdf9169879eb4d7b2b: fix(agent): count Anthropic cache-creation tokens (#3841) (@yanyukang2003-ux)
  • 4ab302dd44cc25895c69ca1aefd199380d56aa25: fix(clipboard): stop reporting successful copies as failures (#3952) (@taciturnaxolotl)
  • 00b33e4b92a290425c15be7aa675251cec47df5f: fix(cmd): resolve the project data directory in session and stats (#3936) (@devYRPauli)
  • fded9d7d7dffe33a0994c73b7b2e16310225825d: fix: reload OpenAI OAuth with Catwalk (#3949) (@andrinoff)
  • 1f3827bcd2d20f38076b2d46123683271e6ed9ba: fix: reorder migrations (@taciturnaxolotl)
Other stuff
  • 06e50a330e2b05b677726737d06852a35f5ff93f: chore: auto-update files (@charmcli)
  • 8b1139bbbe8bea2e48f2b485d6e229e1e366089c: chore: auto-update files (@charmcli)
  • 72654940d9e46961a7d804d536c45761e7084a08: chore: fantasy v0.45.1 (@andreynering)
  • e3dc6d2a66c0d0d4f22dfa185d1e0e4cac985b62: ui: add mouse support to the quit dialogue (@meowgorithm)
  • 04a2cd85d4e62e7ed2b2c51a8cc9391496e0c2ee: ui: align quit dialog button hit regions with centered row (@meowgorithm)
  • 6f1fd614952306c5788381d2681f76636cae6e6f: ui: cover quit dialog mouse buttons and hover reporting in tests (@meowgorithm)
  • 5c6dd666aa64fe0f3893521597a61b0dc698562d: ui: keep quit dialog buttons visible in small terminals (@meowgorithm)
  • f043451debd3cc1ddc2c9831923fc36efa2b5f99: ui: report all mouse motion while hoverable dialogs are open (@meowgorithm)

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

Monday, September 21Sep 21, 2026

Release v0.96.1

Crush v0.96.1

Quick little theme API adjustment Hey! ICYMI we released support for themes a few hours ago. Before they get too widely adopted, we’re making one small breaking API change to the names of keys.: insert_bg -> insert_code_bg delete_bg -> delete_code_bg This is…

Read full notes

Quick little theme API adjustment

Hey! ICYMI we released support for themes a few hours ago. Before they get too widely adopted, we’re making one small breaking API change to the names of keys.:

insert_bg -> insert_code_bg delete_bg -> delete_code_bg

This is what it looks like in code:

{
  // ...
  "diff_insert_fg": "#629657",
  "diff_insert_code_bg": "#2d3431",
  "diff_insert_gutter_bg": "#282d2c",
  "diff_delete_fg": "#a45c59",
  "diff_delete_code_bg": "#33272d",
  "diff_delete_gutter_bg": "#2a232a",
  // ...
}

See ya! Charm 🎸

Changelog

Other stuff
  • 56abdfa7f1fa2cbe1e073f553bc10b06598046f9: themes: prefix diff theme keys with diff_ (@meowgorithm)
  • a88b5735ff056b52eee8d30121b85c8a8ca79601: themes: small adjustments to the key names in the theme API (@meowgorithm)

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

Release v0.96.0

Crush v0.96.0

Themes and more! This release is HUGE and we are so excited to share what our team and contributors have done! The long awaited feature! Crush now has themes! 🎨 Open the new Themes dialog from the command palette to switch looks with live preview, try the…

Read full notes

Themes and more!

This release is HUGE and we are so excited to share what our team and contributors have done!

The long awaited feature!

out

Crush now has themes! 🎨 Open the new Themes dialog from the command palette to switch looks with live preview, try the built-in Gruvbox Dark, or create and edit your own custom palettes right inside the TUI. Thank @meowgorithm and @gurnben for this feature!

QoL and fixes

Small changes but no less important.

  • Hypercredits are now displayed in real time!
  • Added spaces to errors in chat by @taciturnaxolotl
  • Increased default timeout to 2 minutes by @andreynering
  • Fixed extended help, while in a mode by @meowgorithm
  • Fixed wrapping while displaying the plan
  • Fixed syntax highlighting on long bash calls by @taciturnaxolotl
  • More bang mode and bash tools improvement also by our favorite @taciturnaxolotl

See more below!

Happy week! Charm XX 💫

Changelog

New!
  • b07464e98e61248469ca2307ceb30520b1316d5b: feat(hyper): live display of hypercredits (#3699) (@andrinoff)
  • f38b7947fd52b635b84f9b4ce70713675534080c: feat: add theme support (#3884) (@gurnben)
Fixed
  • 051fb37ae1d6bd6d6f2f6cbc8a629d5f85aa9bd7: fifix(ui): color the to-do task name while the tool is still running (@taciturnaxolotl)
  • b8e93d119273032cb51cb249d87ca994d61fe7e5: fix(bash): let the agent recover truncated tool output (@taciturnaxolotl)
  • 10ec02a58c581c060aaa52279347bf716ad7ef08: fix(shell): bound bang-mode output and spill the rest to a file (@taciturnaxolotl)
  • 2019da14717e4e00aeee7664873c6b78f147a3eb: fix(tui): unfreeze spinner clock when the boot busy probe lands (#3839) (@andreynering)
  • 242b4d3aaa024e26937f7579869d81e007c17c42: fix(ui): drop the empty gap under a failed edit (#3851) (@taciturnaxolotl)
  • e41ae8ee78dafe884eb4f6e18ffd38d3d6d706e5: fix(ui): keep syntax highlighting across a wrapped tool parameter (#3850) (@taciturnaxolotl)
  • eb845a9eacd25c5ce6522ae90c82289f43b5833d: fix(ui): nudge the yolo/plan badges + align help (#3863) (@meowgorithm)
  • fd58b5ed201f490641d018cab6f06a29cdaff2c0: fix(ui): read the session transcript off the event loop (@taciturnaxolotl)
  • 87a5bbd874d4d78a506237ba4b6d94d8a4f5b59e: fix(ui): set the finish banner off from the message above it (#3815) (@taciturnaxolotl)
  • 9636af6446be2274b9b5b048c1d122ebad9c7b41: fix: wrapping in plan display (#3888) (@andrinoff)
Other stuff
  • 239d00630d719b8cc8838806201ae9205c12466e: chore: auto-update files (@charmcli)
  • 3bc8ff4fc76ef38fbecf3f6df338fce3d1616001: chore: auto-update files (@charmcli)
  • 27a53ef82b8b63817f92540d37850482dd9daddd: chore: auto-update files (@charmcli)
  • 591167920d6850effe669c423d8e76b184057570: chore: bump devShell to Go 1.27 (#3832) (@LarsArtmann)
  • 460653aa2599329a99b9c0d493e53e0f356d8ea5: chore: double default request timeout from 60 to 120 seconds (#3862) (@andreynering)
  • d55e017d60cdb87ecb21a19a9fed9a2097c0da64: perf(agent): read only the post-summary tail of a compacted session (@taciturnaxolotl)
  • 978d49d53f9343f2e57406cc503daddf282e12ae: perf(db): cap prompt history at the 200 most recent messages (@taciturnaxolotl)
  • 296b5c396260ece70fdceed288ed25c7a99ba349: perf(db): index messages by role so user-message reads stop scanning (@taciturnaxolotl)
  • 595f625f19a6a186307b911d59dd37c764541251: perf(message): decode message parts in one structural pass (@taciturnaxolotl)
  • 9207cb2c053ecbe3ec5c0c3985b746877c1f322d: perf(ui): skip the global prompt-history scan when a session is loading (@taciturnaxolotl)

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

Wednesday, September 16Sep 16, 2026

Release v0.95.0

Crush v0.95.0

Hello, Plan Mode This release introduces many improvements but, most importantly, and a solid new feature from one of our very talented contributors: Let’s plan At last, thanks to the very talented work of @vadiminshakov and @andrinoff, we present the long…

Read full notes

Hello, Plan Mode

This release introduces many improvements but, most importantly, and a solid new feature from one of our very talented contributors:

Let’s plan

At last, thanks to the very talented work of @vadiminshakov and @andrinoff, we present the long awaited Plan Mode.

Plan Mode is for…planning. Talk to the agent, answer questions, and put together a plan and then, when you’re ready, get to to work. You can activate plan mode with shift+tab.

Juicing more perf

@andreynering and @taciturnaxolotl marched forward in the quest for max perf in this release. Details below.

That's all for now. See you soon!

Cheers, Charm xx 🌟

Changelog

New!
  • 1648f10ac039e126635e26d4a16647331b2d6f0c: feat: add plan mode (#2822) (@vadiminshakov)
Fixed
  • 051fb37ae1d6bd6d6f2f6cbc8a629d5f85aa9bd7: fifix(ui): color the to-do task name while the tool is still running (@taciturnaxolotl)
  • 2019da14717e4e00aeee7664873c6b78f147a3eb: fix(tui): unfreeze spinner clock when the boot busy probe lands (#3839) (@andreynering)
  • fd58b5ed201f490641d018cab6f06a29cdaff2c0: fix(ui): read the session transcript off the event loop (@taciturnaxolotl)
Other stuff
  • d55e017d60cdb87ecb21a19a9fed9a2097c0da64: perf(agent): read only the post-summary tail of a compacted session (@taciturnaxolotl)
  • 978d49d53f9343f2e57406cc503daddf282e12ae: perf(db): cap prompt history at the 200 most recent messages (@taciturnaxolotl)
  • 296b5c396260ece70fdceed288ed25c7a99ba349: perf(db): index messages by role so user-message reads stop scanning (@taciturnaxolotl)
  • 595f625f19a6a186307b911d59dd37c764541251: perf(message): decode message parts in one structural pass (@taciturnaxolotl)
  • 9207cb2c053ecbe3ec5c0c3985b746877c1f322d: perf(ui): skip the global prompt-history scan when a session is loading (@taciturnaxolotl)

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

Monday, September 14Sep 14, 2026

Release v0.94.2

Crush v0.94.2

Lil’ OpenAI-Compatible Protocol Fix This is a hot little mini patch to fix a regression in OpenAI-compatible endpoints that could occur when turns were stopped partway through. This regression happened because we were furiously making improvements for the…

Read full notes

Lil’ OpenAI-Compatible Protocol Fix

This is a hot little mini patch to fix a regression in OpenAI-compatible endpoints that could occur when turns were stopped partway through. This regression happened because we were furiously making improvements for the DeepSeek V4.X Flash series that you all cannot seem to get enough of!

Thanks also to the very patient @teddytennant who fixed a small bug around turning home dirs into ~s.

xoxo, Charm

Changelog

  • 6f670995436a0bab99e3fdddd0eebc5c52c39072: fix(home): require path boundary when shortening or expanding ~ (#3552) (@teddytennant)
  • 066f4444d086aeac877ec0a67eb2a3d56fedde27: openaicompat: bump fantasy to fix regression around reasoning-only turns (@meowgorithm)

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

Saturday, September 12Sep 12, 2026

Release v0.94.1

Crush v0.94.1

ChatGPT subs, non-interactive improvements, and a touch of perf This is a pretty solid release with some nice contributions from both the Charm team and one of our fave contributors. Let's go! Use your ChatGPT subscription in Crush If you love Crush and your…

Read full notes

ChatGPT subs, non-interactive improvements, and a touch of perf

This is a pretty solid release with some nice contributions from both the Charm team and one of our fave contributors. Let's go!

Use your ChatGPT subscription in Crush

If you love Crush and your ChatGPT subscription you’ll love this release. Enjoy!

Non-interactive mode: reasoning

Headless Crush users now get more control with a new --reasoning-effort flag in crush run. Go crazy and orchestrate to the max!

If you (or your agent) mistypes a reasoning effort you'll get the proper accepted values, too.

crush run --model "hyper/glm-5.3" --reasoning-effort "max"

Shredding the perf

@taigrr contributed a bunch of solid performance improvements to scrolling and spinners. Mouse scroll events are coalesced, chat scrolls are memoized and the spinners all use a shared clock. This stuff is really good: check it out.

Choppin’ off 4MB

We also ripped the Swagger stuff from client-server mode with a hand-rolled—but fully OpenAPI v3.2.1 compliant—implementation. This shaved about 4MB off the binary and will nullify chances of in the long run. Thanks, Go type system!

Have a great weekend, Charm 💌

Changelog

  • efba40b7bf88ca143587cbdebb74cf1b463c316a: feat: OpenAI oAuth (@andrinoff)
  • 4a74b9e095792217e95867bf74c1aa86fef44ee2: fix(sessions): keep list position after deletion (#3769) (@ifsin)
  • 33be610debb1eaf33bac40e0b089e1aa84d05602: fix: @meowgorithm review (@andrinoff)
  • 63829edfa302a120d954866bada40e1ca9003ea8: fix: always emit tool results right after calls (#3743) (@andrinoff)
  • cdc72006bf73e9d137516d3fa44c44d64ec192cf: fix: always show full bash command in tui, output stays collapsible (@andreynering)
  • d25b5eee64b950bf8095506e312bc8f46b77cc26: fix: colorize CLI mode and use localhost URL (@andrinoff)
  • 45a45c5cc1768bf70c6ee5cb02760c3111eb6133: fix: do not remove from API catalogue (@andrinoff)
  • 80ebee418ceb66d79c0a2edd5a37f798a43e84e5: fix: dropped reasoning effort (#3748) (@andrinoff)
  • 074e41e18e794b578566ab14f43eedf844f6e2a7: fix: keep scroll position when expanding or collapsing chat items (@andreynering)
  • 094ac5db6dd347dd204f1b940b57e02f90e5c836: fix: match ex. anthropic UI on choice (@andrinoff)
  • 04eed5d491a91b80fb17a2849a30df0c521c8708: fix: refine first page (@andrinoff)
  • 652f74ffe2773b975aa8e74c8f51b973f0ddbaa9: fix: remove re-routing logic (@andrinoff)
  • 3a84d5e726fe5a03ddfc439129cd43f28282ba1a: fix: remove the Sign In with ChatGPT in catalogue (@andrinoff)
  • 616c17ba8a762656fa18a36ea504a35cf93e4ab8: fix: remove the separate sections (@andrinoff)
  • 833bef6306750976921f30fee17b834aff6a9d45: fix: show content in full when collapsing would hide only one line (@andreynering)
  • bb33cee2d32780cb5afa31fc3aa815302b9f7443: chore(event-bus): make event fan-in helpers generic methods (#3768) (@taigrr)
  • 8829832414aeb363f095e804c60c23baf7555b06: chore: bump fantasy (@andrinoff)
  • e5687e2d97eee9952bbe4fd6c79dc8949251ebf4: chore: lint (@andrinoff)
  • 8db8331c38ccc7e9434bc4317bd5b67244029b8d: noninteractive: add --reasoning-effort flag with model validation (@meowgorithm)
  • 18447d5fe71733c3d06ff94ad534aa8fb0e5a94a: oauth-cli: adjust inline logout TUIs (@meowgorithm)
  • bc3931c8ab45965b22817eb43b1a51af242bbf1f: oauth-cli: overhaul and unify oauth TUIs (@meowgorithm)
  • 7a63cb157a77079507b4eb54d9cc5a4e5a8e5fad: oauth-ui: small nudges (@meowgorithm)
  • e2f077cd157c0853ca955bb4c423d5914b05f093: oauth-ui: use ChatGPT instead of OpenAI in the auth dialog copy (@meowgorithm)
  • c21c7c45f1db69fb8e95beb80faffc9ea5ba0d3e: refactor: replace swaggo annotations with a Go-native endpoint registry (@meowgorithm)
  • 8ce2bdfb6da9f1375f99510678e053fb37bf47f7: ui-perf: drive all spinners from one shared animation clock (@taigrr)
  • 0ffab3f772bf02bf503e2636769ae4a1f5334367: ui-perf: memoize rendered frames for scroll-only updates (@taigrr)
  • 35b5f8777681fc991521c5621f5664998b71b4f7: ui-perf: stop coalesced wheel scrolls from rewinding to the selection (@taigrr)

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

Wednesday, September 9Sep 9, 2026

Release v0.93.1

Crush v0.93.1

Disable mouse support + more Hey, how's your week going? We have a few changes today, including mostly fixes but also a few nice additions. Disable mouse support Want to disable mouse support in Crush? Feel lucky because our favorite contributor @timotheosh…

Read full notes

Disable mouse support + more

Hey, how's your week going? We have a few changes today, including mostly fixes but also a few nice additions.

Disable mouse support

Want to disable mouse support in Crush? Feel lucky because our favorite contributor @timotheosh added just that.

With the config below you can achieve that. It's also possible to toggle it via the command palette dialog.

crushrc:

option ui mouse false

crush.json:

{ "options": { "tui": { "mouse": false } } }
imageimage

Fixed UX for non-vision models

In some cases, Crush were allowing you to attach an image even when the selected model was not vision-capable. The attachment was then being silent dropped in the request.

Now, we're properly validating it and showing a message so you know when it's not supported.

Fixed some models on GitHub Copilot

On Copilot some models only works on the /responses endpoint: named GPT-6 Astra and the Grok models.

Fixed some models on OpenCode Zen & Go

OpenCode also require some models to use specific endpoints. Not every model support the /chat/completions endpoint; some require /responses or /messages.

We fixed this issue for the models OpenCode currently supports.

Fixed Sentry MCP + others

A misconfiguration made it impossible to authenticate with OAuth2 with a few the MCPs, including the Sentry MCP. This is now fixed!

Fixed potential memory leak

@caniko discovered a memory leak, specifically when discover_models: true is set. This issue was fixed!

To read the technical explanation, see #3162 and #3683.


See you in the next release! The Charm Team :tm:

Changelog


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

Monday, August 31Aug 31, 2026

Release v0.92.0

Crush v0.92.0

Compact Exit Banner + Mode This release includes some fixes + an UX improvement. Compact Exit Banner It's now possible to configure the exits banner to more compact, if you so wish. .crushrc: option ui exit-banner compact option ui exit-banner none option ui…

Read full notes

Compact Exit Banner + Mode

This release includes some fixes + an UX improvement.

Compact Exit Banner

It's now possible to configure the exits banner to more compact, if you so wish.

.crushrc:

option ui exit-banner compact
option ui exit-banner none
option ui exit-banner default  # default

crush.json:

{
  "options": {
    "tui": {
      "exit_banner": "compact"
    }
  }
}

Default:

image

Compact:

image

Agentic fixes

We made quite a few fixes to Fantasy to make it more stable and fix a few issues with some inference providers.

Small Bash config fix

@devYRPauli made a fix to the Bash config. When adding a model, --price-cache-create and --price-cache-hit were swapped but this issue is now addressed.

The Charm Team

Changelog

New!
  • a83480eb156fd75cd96b4fecaf3cc40570bb3142: feat: centralize tui option defaults and extract exit banner rendering (@taciturnaxolotl)
Fixed
  • ee455a9966c33086494d897b2c8b4b73d70c0ff5: fix(config): resolve provider base URL before custom validation (#3350) (@joestump-agent)
  • 1e5be92e2ac9100959b34f90347522b2557f477a: fix(mcp): bound MCP init waits so a wedged server can't blank the app (#199) (#3467) (@joestump-agent)
  • 1ea2714720ba2f7c2cd0889d965d83e28c0883e3: fix(mcp): scope error teardown to the erroring session; serialize refreshers (#3468) (@joestump-agent)
  • 46469e2c710d65d2935da4503e7924f05479e54c: fix(selection): pin the selected item to the top (#3670) (@andrinoff)
  • 404a93c6c8e114fa8c9e07e16a02a5c9b7f3f902: fix(shellconfig): stop model add swapping the two cache prices (#3679) (@devYRPauli)
  • 7b38a40e760c1ee6e507334123761a1aee78dac9: fix(ui): preserve single line breaks in submitted user messages (#3655) (@joestump-agent)
  • 7944b8e52225d8805e31eacbf7ef24856b0dfb7a: fix: update fantasy with several inference fixes (#3667) (@andreynering)
Docs
  • 599a4abc2db6af374f773eb35ac066c5da07cff8: docs: fix typo regarding JSON format deprecation (#3604) (@wangjiawen2013)
Other stuff
  • 07d662d9a5b0a49adbb6a233eae884c669a7a3f8: chore: auto-update files (@charmcli)
  • 6d14dd93a9e526505f7de54ae5999431bc32a793: chore: auto-update files (@charmcli)
  • 773c35656467769a12394ccd77119ec3bc960abc: resume: compact resume banner option (@taciturnaxolotl)

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

Wednesday, August 26Aug 26, 2026

Release v0.91.2

Crush v0.91.2

Fixed GitHub MCP + UI fixes A small patch with a couple fixes. Fixed GitHub MCP The GitHub MCP stopped working in Crush in the recent days, but it's now working again. We "sessionless": true (or --sessionless true) that some MCPs might need to work correctly.…

Read full notes

Fixed GitHub MCP + UI fixes

A small patch with a couple fixes.

Fixed GitHub MCP

The GitHub MCP stopped working in Crush in the recent days, but it's now working again.

We "sessionless": true (or --sessionless true) that some MCPs might need to work correctly. For GitHub MCP, we're enabling that automatically so it works without extra config for you.

Code indentation fixes

We fixed a couple bugs with wrong indentation in code in the UI. This could happen on tool calls previews or code inside markdown.

Example screenshots:

Before

Screenshot 2026-08-26 at 11 28 55

After

Screenshot 2026-08-26 at 11 39 35

New Hyper models

Last news, we have 3 new models available in Hyper!

  • Qwen3.8-Flash
  • Qwen3.8-27B
  • Qwen3.8-2.4T-A95B

These are really good models, I hope you enjoy!

Don't know Hyper yet? Hyper is Charm's provider with a $20/m subscription. Check it out!

That's all for today. Keep crushing! Charm 💌

Changelog

Fixed
  • 82557e2af69ff67fe50e53055bbe83dddbe07f6b: fix(mcp): fix sessionless mcp servers (e.g. github mcp) (#3651) (@andreynering)
  • 460a877fcb60c32d3194a09f262be4cb4d5928bf: fix: preserve first line indentation in tool call previews (#3652) (@andreynering)
  • 75962c4887d87dcd203b5fba9bf46fd3b52c77c3: fix: weird indentation on code blocks (#3642) (@andrinoff)

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

Tuesday, August 25Aug 25, 2026

Release v0.91.1

Crush v0.91.1

Small patch Hello friends. This release address a few small issues. MCP fixes Our fave contributor @joestump did a couple fixes on how Crush handles MCPs to make it more reliable, specially when the MCP is mis-configured or mis-behaves. UX fixes @andrinoff…

Read full notes

Small patch

Hello friends. This release address a few small issues.

MCP fixes

Our fave contributor @joestump did a couple fixes on how Crush handles MCPs to make it more reliable, specially when the MCP is mis-configured or mis-behaves.

UX fixes

@andrinoff also made a couple fixes:

  • Fixed ctrl+a after v0.91.0.
  • Improved copying by selection with wrapped lines
  • Added documentation on how to set a custom Catwalk URL

That's all for today. See ya! Charm

Changelog

Fixed
  • cce887189161f4be7fb2bfcdd1bcd5d78d43e7bf: fix(mcp): repair stdio startup diagnostics (#3634) (@joestump)
  • a0fe47b62871ad39eea3723e9231a47ffb924cdf: fix: return to the start of the line (#3635) (@andrinoff)
  • 8f63ee5937e29174466896918f60a558e3dd103e: fix: wrapped messages counted as newlines (#3627) (@andrinoff)
Docs
  • 06345cc328127ae6e71ca83c32d3bba1a4f8342c: docs: add documentation on how to override catwalk URL (#3585) (@andrinoff)
Other stuff
  • b0115a1baa2f7827240c0d443e2296a7d13638ac: chore: bump bubbles (#3636) (@andrinoff)
  • c824c880768a4a251c841213d69b09bc0ab4d954: chore: bump golangci version to 2.13.1 (#3628) (@andrinoff)
  • c4835512e04464fd8ea8dd9fdbc1059b9ec485d4: chore: merge main after v0.91.0 (@Amolith)

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

Saturday, August 22Aug 22, 2026

Release v0.91.0

Crush v0.91.0

Text selection and better mouse support Just a few QOL improvements to the prompt editor and session picker for the weekend! Text selection Hold shift and use the arrow keys or click and drag with your mouse to select text in the prompt editor. From there, you…

Read full notes

Text selection and better mouse support

Just a few QOL improvements to the prompt editor and session picker for the weekend!

Text selection

Hold shift and use the arrow keys or click and drag with your mouse to select text in the prompt editor. From there, you can use any of the fancy new shortcuts 👀

  • ctrl+shift+a selects everything
  • ctrl+shift+c copies the selection
  • ctrl+shift+x cuts the selection
  • ctrl+shift+v pastes text

Typing or pasting over selected text replaces it.

Mouse support in the session picker

We've been missing mouse support in the session picker for too long! You can now scroll through sessions with the mouse wheel, click an entry to select it, or double-click to open it.

A small Windows fix

Pressing a modifier key by itself could send some dialogs back to the top on Windows. They should stay put now.

Keep crushing! Charm 💌

Changelog

New!
  • 08552fb918a3b6247c2f8366d330f3b7f02fc891: feat: textarea selection (#3507) (@andrinoff)
  • 90bc466d6f35b120070b6fd8a73f4262f155086a: session picker: add mouse support (@Amolith)
Fixed
  • 8661a1c4baa171f49b6f7ab3d4db7836cf5b5548: fix(windows): scrolling up on modifier keys alone (#3598) (@andrinoff)
Other stuff
  • 37f36e93824e5c4f892e4a817f7f628e2682fe14: chore: auto-update files (@charmcli)
  • 7d78d7422a92918441a68d01d96d48fa3b9fd9db: chore: standardize go toolchain on v1.26.6 (#3592) (@aleksclark)

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

Wednesday, August 19Aug 19, 2026

Release v0.90.0

Crush v0.90.0

Tiny patch This is a tiny release, but we thought it would be worth it. Updated Bubble Tea with a couple fixes for some terminal emulators. Updated Fantasy with fixes for AWS SSO and better cache hitting. Fixed wrong background color on permissions dialog.…

Read full notes

Tiny patch

This is a tiny release, but we thought it would be worth it.

  • Updated Bubble Tea with a couple fixes for some terminal emulators.
  • Updated Fantasy with fixes for AWS SSO and better cache hitting.
  • Fixed wrong background color on permissions dialog. This was a regression from adding Bash syntax highlighting on v0.89.0.
  • Updated our .gitattributes to make development easier on Windows. We're normalizing LF (instead of CRLF) as line breaks to fix some tests on Windows.

Changelog

Fixed
  • ed15da4c46e0bdc3afae4842db54e7def7b9f15e: fix(ui): use dialog background for bash syntax highlighting in permissions (#3575) (@andreynering)
Other stuff
  • 0f14334fb03703a5557f875d182e347e6375e0e7: chore: normalize line endings to lf via .gitattributes (#3555) (@Lin-BoYuan)

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

Wednesday, August 12Aug 12, 2026

Release v0.89.0

Crush v0.89.0

A couple QoL goodies We're releasing a few Quality of Life :tm: enhacements for you. They're simple, but these simple improvements compound with time to make Crush better and better. Hint on quitting Crush When quitting Crush, you'll see a splash screen with a…

Read full notes

A couple QoL goodies

We're releasing a few Quality of Life :tm: enhacements for you. They're simple, but these simple improvements compound with time to make Crush better and better.

Hint on quitting Crush

When quitting Crush, you'll see a splash screen with a hind on how to quickly continue from the session you left.

Screenshot 2026-08-12 at 16 41 43

Bash tool syntax highlighting

When displaying what Crush is running using the Bash tool, the shell command will now have syntax highlighting. It's a small addition, but definitely improves legibility.

Moo :cow:

Screenshot 2026-08-12 at 16 47 25

ctrl+end to jump to bottom + follow

If you want to quickly jump to the bottom of the chat, you can now just press ctrl+end. This will also ensure Crush will follow the chat as new messages arrive.

MCP improvements

We enhanced things to make it more stable and fix a couple of edge-case bugs.

That's all for today. See you in the next release! Charm 💌

Changelog

New!
  • 804324fb80a1133f678b0d8c3d74f32c16988c12: feat(session): print session id on exit (#3398) (@BrunoKrugel)
  • b82d7d05d8883e3f05c9cb86a6f47bfa3b2ec59b: feat(session): restore last used provider/model from session (@meowgorithm)
  • 90b48cda0991c37d3202327e20680f262c798c24: feat(ux): add bash syntax highlighting to bash tool (@andreynering)
  • 36a4f79ac0e4056d8b5396bb741d91832998a785: feat(ux): strip redundant cd-to-project prefix from bash tool display (@andreynering)
  • 25bf6a2551df8c5baefb94ff6d77c4105a2ce8c3: feat: ctrl+end to go to the bottom and follow (#3535) (@andrinoff)
  • 01da7bc6a8cb3f3d5fe6bf68734fc22c43e4458b: feat: use anthropic sdk from upstream (#3544) (@andreynering)
Fixed
  • c78cc67457a027b4e774904240446ed4f28d8b95: fix(mcp): only wait for slow MCP servers in non-interactive runs (@meowgorithm)
  • 48768f8b3d37dcbde70a5d1e1c1b8d5021c656f8: fix(ui): don't block interactive prompts on MCP initialization (@meowgorithm)
  • ec2fe4379f84efa91ad42cddcd02ac5784a5fbcd: fix: send hyper api key when fetching provider catalog (#3546) (@andreynering)
Other stuff
  • f50509d460badf3c914341ac367c91cd708d9131: chore(mcp): log how long each MCP server takes to connect (@meowgorithm)
  • 2e024135e8bef2c929ff0a6e6ffc5837204c9e70: chore: auto-update files (@charmcli)
  • feb63006e9452be370721c22a0c2a3be008fd475: telemetry: differentiate invocation types (#3533) (@Amolith)

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

Friday, August 7Aug 7, 2026

Release v0.88.1

Crush v0.88.1

It’s Time for a Bugfix Throwdown This release is all about stability and quality of life with a buncha fixes around MCP, server-client, and odds and ends. Here's what’s inside: UX: Typing clear in the command will match Summarize; thanks, @joestump! LSP:…

Read full notes

It’s Time for a Bugfix Throwdown

This release is all about stability and quality of life with a buncha fixes around MCP, server-client, and odds and ends. Here's what’s inside:

  • UX: Typing clear in the command will match Summarize; thanks, @joestump!
  • LSP: @piakdev fixed a case where LSP could panic
  • MCP: Slow loading MCPs could block messages from being sent: we reduce default timeout
  • Server-Client: MCP OAuth didn't work in server-client mode; now it does
  • Server-Client: Clients in the same workspace could kill each other: not anymore
  • Server-Client: When the server is running over TCP keystrokes no longer hit the server and slow everything down
  • Hyper: Added various small improvements for better UX

Thanks for using Crush. Have good weekend! Charm 💌

Changelog

New!
  • cfad8143fc0414d1406a8b846708a43ee511a757: feat(dialog): alias clear to summarize in command palette (#3464) (@joestump)
Fixed
  • bdad0f11cd6a279548c9458349fec313cbbea4fb: fixmcp): don't hold callback port open permanently (#3481) (@taciturnaxolotl)
  • 1134a5ddb8e762aa85452df12a98c17172ec189b: fix(dialog): raise permission-guard quiet period to survive natural typing pauses (#3393) (@albatrossflyon-coder)
  • 768ffad29a49fcd4a63792fab057b2246e213622: fix(hyper): keep working cache when provider cache can't be written (@meowgorithm)
  • 9efc08c7aeb6f46c3a5d260115856b610df187aa: fix(hyper): render error messages from back-end (#3513) (@andreynering)
  • 42f3ce0cbea37e37cd4ef6bd3d83e1dab0401403: fix(lsp): handle window/workDoneProgress/create to prevent server crash (#3445) (@piakdev)
  • 604a7e30e624ecbe5969d288c58ad1b092ac8917: fix(providers): swap the provider cache instead of rewriting it (@meowgorithm)
  • 85d83ce4e2308e3d45298eacdeb1d6943a286cb4: fix(server): keep concurrent sessions from killing each other (@meowgorithm)
  • ebd18571086389396004118a6680408d7ca87356: fix(server): mcp auth in client-server mode (@meowgorithm)
  • 71fa577a7d40bc529d90c1ca0263e57f6170c1ed: fix(server): release test DB before Windows temp-dir cleanup (@meowgorithm)
  • 390ee36122ded4bd60f412e47cf5383719355a84: fix(server): replace stale servers that predate shutdown_if_idle (@meowgorithm)
  • 7cdef9e6ee69634dcbc694d9096b65fef2a092e7: fix(server): typing lag over TCP in client/server mode (@meowgorithm)
  • cf4f4df3216cc0c5948241e4aac2cf7968e26e8a: fix(server): widen permission cross-client test timeout to stop CI flake (@meowgorithm)
  • 69080c969ef16ec64127732a8c2deab4270807bf: fix(workspace): retire integration-test clients so the DB closes (@meowgorithm)
  • 8fd69b4548a01606ae6d49bc9202b3be75904acb: fix(workspace): wait for recovery notice before asserting resync (@meowgorithm)
  • bb3d44954d4769c6f66c960df89e0f1b8d3f4777: fix: reduce default and suggested mcp timeout (#3509) (@andreynering)
Docs
  • 5f11f8e28aa7c757cfb7b54483b0b6654a64f776: docs(agents): mark crushrc as primary config format over crush.json (@meowgorithm)
  • d99076e5ce59a73c8c3d21f8a3bd52bf4691c94d: docs: add missing OAuth flags to mcp add in crush-config skill (@pshickeydev)
Other stuff
  • 97ac1544991c1fc572fd3db7703f99db93dc3049: chore(mcp,ui): make 'needs auth' color tang, consolidate theme naming (@meowgorithm)
  • 9882a88a2d668818047c445cc2e6fd4d7a7e2ea4: hyper: hide hypercredits if the server sends USD as the monetary unit (@meowgorithm)
  • fb0f6c5808ea869e8b5f79a9b28248884fadf30c: refactor(server): tidy mcp client-server auth wiring (@taciturnaxolotl)
  • b109e35f260cbb6a7903581728dbeb6d11895d57: refactor(ui): route all agent-model rebuilds through one helper (@taciturnaxolotl)

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

Friday, July 31Jul 31, 2026

Release v0.88.0

Crush v0.88.0

.crushrc is here! Hey! Hope everybody had a great week. We were pretty productive at Charm and we're releasing some cool stuff today. Bash configuration! (.crushrc) Yep, .crushrc has come! You existing JSON config still works, but we just started migrating to…

Read full notes

.crushrc is here!

Hey! Hope everybody had a great week. We were pretty productive at Charm and we're releasing some cool stuff today.

Bash configuration! (.crushrc)

Yep, .crushrc has come! You existing JSON config still works, but we just started migrating to something a lot more flexible!

An example on why this is cool: if you manage Crush config in a dotfiles repo, you can still have machine-specific overrides by using source to call a separate file that will be in your .gitignore. I'm sure there are many other use cases.

To read the full documentation on this, read this document.

See a snipped so you have an idea on how it looks:

# Add Ollama.
provider add ollama --type ollama --base-url "http://localhost:11434/v1"

# Register a model on Ollama.
model add ollama/llama3.3 --name "Llama 3.3" --context-window 128000

# Auto-approve some tools.
permissions allow view edit

# Add an MCP server
mcp add github \
  --type http \
  --url "https://api.githubcopilot.com/mcp/" \
  --header Authorization "Bearer $GITHUB_TOKEN"

# Load some extra config
source "$XDG_CONFIG_HOME/squid-config.sh"

# Change config based on the machine you're on.
if [[ $HOSTNAME == "babysquid" ]]; then
    option skill-path "$HOME/squid-skills"
fi

Want to give feedback? Join the #crush channel on Discord.

Better AWS Bedrock SSO support

@jan-xyz did a great job bringing this one to life!

When using AWS Bedrock via SSO, tokens expire with time and need to be refreshed. Crush now has a proper configuration and UX for authenticating, and it will appear whenever tokens need to be refreshed.

To read more about it, see #2886.

Screenshot 2026-07-31 at 18 04 21

More reliable Agent Fetch

@sven2718 contributed with better retries in searches when they don't work in the first try. Searches will be more reliable now, specially when doing many in a short period of time.

Fix for Fable 5

@sven2718 also contributed with a fix for Fable 5. When Anthropic decides to reject your prompt for security reasons, we'll now a proper error message in Crush. Before, Crush would just stop without giving context on why.

Crush now compiles on IlluminOS

Never heard of IllumiOS? Neither none of us at Charm, but @timotheosh adjusted the code to ensure it compiles there now!

Go compiles to many environments, and it's always fun to see Crush working on more operating systems! By the way, do you know you can use Crush on Android? :robot:

Enhanced MCP OAuth

In the last release, we shipped support for OAuth authentication for MCPs.

@BrunoKrugel did a few fixes to make more MCPs that require OAuth work as expected.

Agentic fixes

Quite a few fixes were made to Crush as an agent as well. Some of these were made on Fantasy and brought to Crush.

New Hyper models

Not less important, we keep bringing updates to Hyper, which is more stable than ever and has Minimax M3 and Qwen3.7-Flash avalable now.


A lot happened this week! We hope you enjoy, and Keep Crushing :tm:! Charm

Changelog

New!
  • 9e3ed61cfb6e1a6f087fef45e3a76faa9289a01e: feat(bedrock): retry the turn automatically after AWS SSO re-auth (@jan-xyz)
  • 7810d0382d8d7699ddbaa2f9bbc484d5e6daaace: feat(config): apply top-level env vars on startup (@jan-xyz)
  • 155072b32603bb0ebc2594fc90c2e47e25d2f566: feat(noninteractive): make the spinner text use terminal default (@taciturnaxolotl)
  • 1c074540c33e76b22bb3536541a9422e05a63404: feat(oauth): give the browser redirect a real landing page (@taciturnaxolotl)
  • c74146308cf8a02a3ebace4af07fa78acd259fa4: feat: add "option reset" to wipe shell config list options (@meowgorithm)
  • 987ba71fba70b2d2bc9bbbb878ba8b437e1a416d: feat: add crush.sh discovery and loading (@meowgorithm)
  • 528d8379b9785b96de0738acf292b93a30eb2566: feat: add permissions deny to hide tools from the agent (@meowgorithm)
  • a5156e62153d7c35c53a2953230e046a9f24c9a5: feat: add provider-model builtin for defining provider models (@meowgorithm)
  • 3f54c0e9ec522f2ffdeb66c6a94206f717189b0b: feat: add shell config builtins and ConfigBuilder infrastructure (@meowgorithm)
  • c2b8f164564e381c32f04841e16c7ac7f35823d4: feat: add structured logging to shell config builtins (@meowgorithm)
  • 9d31a1a45bb666c2a61d00024bbdaaf2443d8b87: feat: add verb-first hook add/remove shell config commands (@meowgorithm)
  • eea3bf7fc1dc8364020d1dd11ba5f85de106f8dc: feat: add verb-first lsp add/remove shell config commands (@meowgorithm)
  • 9a3cdbf99326b80fcc2c5dcd2f83764eccdcfd3e: feat: add verb-first mcp add/remove shell config commands (@meowgorithm)
  • 52e041cdec17222d707f8bdf4ce51e27d41de6c1: feat: clarify model pricing flags in crushrc (@meowgorithm)
  • c6fb635c895048887a6fadb72d0951706726943b: feat: configure attribution from crushrc (@meowgorithm)
  • e99b8d6824f36f91835bb3fc043954e18eb44dbf: feat: expose CRUSH_VERSION to shell config scripts (@meowgorithm)
  • 0b584610efa1a8d9ea7046e9b6268c1f87468f3d: feat: expose remaining advanced config through crushrc (@meowgorithm)
  • 8bf07dab012aa70cccfaf18cb343442ff8a3801f: feat: make permissions use verb-first allow subcommand (@meowgorithm)
  • 650bf3c2cd3ab8d1b90fab4687da9415e58766cc: feat: rename shell config to crushrc with local .crushrc override (@meowgorithm)
  • 479da0f3f62f45540506c2a7d38182cffd1492f5: feat: verb-first provider and model shell config commands (@meowgorithm)
Fixed
  • 5e1cd7efe90f60caba4aa3febe919a5d7183faf5: (fix: fable) surface model refusals in the TUI instead of silently stopping work (#3453) (@sven2718)
  • 63dc1f01b7ebf688fc333f1474cf0d23439c4f06: fix(auth): stop parallel sessions from invalidating each other's login (@taciturnaxolotl)
  • 21619894abc598da8d0626dd5599568e0935ca06: fix(config): capture rollback snapshot before configureProviders (@taciturnaxolotl)
  • 20e4dbc68e43e9548f471edaad97e4e8358a8dfb: fix(config): only warn when JSON and crushrc keys actually conflict (@taciturnaxolotl)
  • 4dd4442a4a374f2bf51dd26de3b2b62e9f51932c: fix(config): retry transient Windows rename failures in atomicWriteFi… (#3469) (@joestump-agent)
  • c7a59999560c4ffeba878c6e952799a611ec27c2: fix(config): track all discovered config paths for staleness (@taciturnaxolotl)
  • ecdc6ed1d2b38c74bbbbeabd7ae4964549abaa7b: fix(config): validate crushrc JSON output, skip empty config paths (@taciturnaxolotl)
  • b679ba1e0bba139562bd43a81c95770910a3ee58: fix(edit): auto-correct whitespace mismatches in edit tool (@taciturnaxolotl)
  • 677046d28d5f794636787b18de5a93282ba18d17: fix(illumos): support building and running crush" (#3422) (@timotheosh)
  • 560986ca010462769361ee46012f29eab05131ae: fix(mcp): MCP server loading in server-client mode (@meowgorithm)
  • 2ca5a8c3680a5c04cd7673ce981e29d95f4059bb: fix(mcp): normalize oauth metadata redirects (#3415) (@BrunoKrugel)
  • e68041a674711eb4986ee26e3e3bac1677fc41ca: fix(mcp): pin go-sdk to main for protocol version header fix (#3421) (@taciturnaxolotl)
  • c3fd60ea6ac05eb7732bc3847e87791365fab7a7: fix(mcp): remove orphaned tokens from oauths MCP (#3418) (@BrunoKrugel)
  • 3a71bdf3adac93930a13d20bbdac308a915fa1d1: fix(noninteractive): don't block non interactive mode on session title (@taciturnaxolotl)
  • 954deae9ea9d146aefe99466eb63ea77578091dc: fix(server): deliver permission and question events reliably to clients (@taciturnaxolotl)
  • 359c13f7aa195a3208cf75b60df53bdca0f2b0c9: fix(shellconfig): assert section/childMap don't overwrite non-map values (@taciturnaxolotl)
  • a45ab254f99145eb22fde5068bf35e64d98002bc: fix(shellconfig): bound crushrc execution with context and timeout (@taciturnaxolotl)
  • f14e773d9bd0b900a1c34074d65bbfe9b3ae5ecf: fix(shellconfig): dedup model add, document optionSpecs, pin deny target (@taciturnaxolotl)
  • de671233b9f4eadcbc6aae4b3846800b7f72c490: fix(tools): surface DuckDuckGo rate limiting instead of empty results (@sven2718)
  • 80ce583417c58a8abbfaa8de85a04b3d8eec586c: fix(ui): prevent double spinner on session reload after kill (#3457) (@taciturnaxolotl)
  • b0c8c24a9076814fd54631fd17788f3c72a1c577: fix: accept mixed-case booleans in shell config (@meowgorithm)

…

Friday, July 24Jul 24, 2026

Release v0.87.0

Crush v0.87.0

MCP OAuth, performance and more Happy Friday everybody! We're releasing some nice features for you so you can enjoy your weekend vibecoding. (Or not, stay outside :sun_with_face: and return to Crush on Monday! :smiley:). MCP OAuth That's it, it's finally here!…

Read full notes

MCP OAuth, performance and more

Happy Friday everybody!

We're releasing some nice features for you so you can enjoy your weekend vibecoding. (Or not, stay outside :sun_with_face: and return to Crush on Monday! :smiley:).

MCP OAuth

That's it, it's finally here! Some of you have been asking for this for long.

This is required for some MCPs to work. Want to know to it set it up? Refer to this section into the README.

Thank @joestump and his agent @joestump-agent for this contribution. And of course, our favorite @taciturnaxolotl also helped.

Claude Channels MCP extension

@joestump (and his agent) also added an initial implementation to support the Claude Channels MCP extension, which means MCPs can now send notifications to Crush when certain events happen.

Give this a try if you're interested, and let us know how well it works for you.

Restored MCP prompts

MCP prompts were unintentionally disabled in a previous release, but they were now added back!

LSP performance boost

Another cool contrib was made by @TheJhyeFactor, who vastly improved the CPU and memory usage on handling LSP servers in large repositories!

See #3370 for a more in-depth explanation of the optimizations.

Bang mode performance boost

@TheJhyeFactor also improved performance of output streaming when running command in bang mode.

Check #3381 to see some benchmarking.

/etc/crush/crush.json

You read it right! Thank to @Muttaqin86 you can now have a system-wide Crush configuration on /etc/crush/crush.json.

The motivation for this was improving compatibility with NixOS.

Fixed Copilot + GPT-5.6

All three GPT-5.6 models (Sol, Terra and Luna) are now fixed when running via GitHub Copilot. Kudos to @nghiant03 for this!

That was a lot, but it's really fun to how much the community is enganged with Crush dev.

Keep Crushing! :tm: Charm

Changelog

New!
  • 6f8a7fe8b2cd619e82683a70de252238f333052f: feat(client): reconnect the event stream after it drops (@meowgorithm)
  • d291d9f2c189d1d8c1c4a18d4b73650fc4d20ac9: feat(cmd): add --channels opt-in flag for MCP channel servers (@joestump)
  • 37fc995daca4486501acb6d03445a4bd6969d7f3: feat(mcp): OAuth 2.1 authorization for HTTP MCP servers (@taciturnaxolotl)
  • 1588ae868a8ae7a0f13738cf04542c466dd50f65: feat(mcp): SSE OAuth, metadata fixups, and resource param stripping (@taciturnaxolotl)
  • d338af88648a8f33f05624800013fcd11b0f1b97: feat(mcp): add OAuth support for HTTP MCP servers (@joestump)
  • a1cf002270dede2be0b415ace5e36b199cb5773e: feat(mcp): detect claude/channel capability and receive channel messages (@joestump)
  • b238696201229f30b073078b246c4f47416dd34c: feat(ui): tell a lost connection apart from an uninitialized agent (@meowgorithm)
Fixed
  • fbf59341beee53600e8e4f55b60d9392371dc22c: fix(agent): close dispatch completion-boundary cancel race (@joestump-agent)
  • ae9257b9cdce0dfc4afb6a5e7407d40e988c616c: fix(agent): serialize in-process run dispatch to prevent concurrent turns (@joestump)
  • a09cb3668c2871469250d42e1ced905fef84d820: fix(backend): log channel flag mismatch on duplicate workspace creation (@joestump-agent)
  • 086dc626c68292089fb1c7d7e0569dc7efa52005: fix(client): add MCP prompts to ui in client-server mode (@meowgorithm)
  • ca9ef6adeceed920f882a44f68b61ba9de2d9aba: fix(cmd): make --channels a persistent flag so crush run inherits it (@joestump-agent)
  • 213ad7945184fbbd5ae0830a8ffc313fd8f3722f: fix(config): load system-wide config from /etc/crush/crush.json (#2984) (@Muttaqin86)
  • 8ccf6945d6f9f0de98ed2e1f9900a322f7c91fab: fix(copilot): add additional responses models (#3416) (@nghiant03)
  • 26399fc2ef5968db46627d3bcb2c57d4d330472c: fix(mcp): address OAuth review findings (timeout, refresh, concurrency) (@joestump-agent)
  • bc8ff341a02f8d739dea37af2375f5dcde712474: fix(mcp): buffer channel notifications during capability negotiation (@joestump-agent)
  • 1f623ec075cc28fbd1f683c6431bb8b54c23dd17: fix(mcp): filter channel events from the shared app event stream (@joestump-agent)
  • 14fa1de881f0927f09c12bdeebb57ef36fb6578a: fix(mcp): prevent clients from inheriting channel opt-ins (@meowgorithm)
  • 533fcf1e7c1006213cda8aeace3fff784d9a1c41: fix(mcp): prevent panic when auth signal fires twice (#3403) (@meowgorithm)
  • f7c53cbc1d89c08622911c8407cfdaadfb922705: fix(mcp): route channel messages through must-deliver broker path (@joestump-agent)
  • fed86b00bab56754bc97cd45875923e1489c737d: fix(mcp): tighten channel meta key validation for XML name safety (@joestump-agent)
  • fd55b5d102169644a365f0835c09aca88303f419: fix(server): don't shut down while a workspace is being created (@meowgorithm)
  • 2cb0bdb26778fbe65eba16aa010801367c0fc64c: fix(server): stop mapping channel events to spurious state changes (@joestump-agent)
  • fa6ec09dc56bfa799be6b4639ff5e0569ef640d9: fix(server): wait before shutting down so back-to-back sessions don't race it (@meowgorithm)
  • 00a18434bd33953c5458399ed57bf0238dccdb09: fix(test): fix nil pointer crash in Windows CI tests (@meowgorithm)
  • 1b4ef73f1f6343832e57fbd3e7f71c3f03d0d835: fix(ui): keep shell progress output from corrupting the TUI (@taciturnaxolotl)
Docs
  • 7946b21e2e7c41838cb7685b41032151a20248b5: docs(mcp): add OAuth configuration guide and regenerate schema (@taciturnaxolotl)
Other stuff
  • 2af939d8e900f15edb5e78d766ff0b74dd4fe87e: chore(cli): hide --channels (@meowgorithm)
  • 1ba4dc4b978e25b1486ebdab81871601ddd765de: chore(mcp): merge main; fix createTransport arity; inject browser opener (@joestump-agent)
  • d2c66483d204effe8bb5f191a11e53e1da9ddc14: chore: auto-update files (@charmcli)
  • b647ccd131099a652294dd31dfb5c568c44ca90d: chore: auto-update files (@charmcli)
  • cba1ebcf9c21874c886920e0818bc1c7dad71b53: chore: auto-update files (@charmcli)
  • cc971bd60d54d660632bd12c0fb83dbcd33f06ea: perf(lsp): filter servers before searching $PATH (#3370) (@TheJhyeFactor)
  • e4175c52b8e14a4e158106ac5988fd42a8958457: perf(ui): avoid quadratic shell output rendering (#3381) (@TheJhyeFactor)
  • 67e748e11c102be90cf881fabd954d2a0f290cee: revert: remove #3348 OAuth implementation (superseded) (@taciturnaxolotl)
  • 1dad49ce8a2ddaefe9abffcae74f33d2d0e15c02: style: gofmt formatting cleanup (@joestump-agent)

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

Monday, July 20Jul 20, 2026

Release v0.86.0

Crush v0.86.0

LSP tools, scrollable sidebar, removable attachments + more Hey all. We're starting the week in style by shipping some LSP stuff and more goodies. Brand new LSP tools These new LSP tools will allow the model to more accurately do some refactors: lsp_rename -…

Read full notes

LSP tools, scrollable sidebar, removable attachments + more

Hey all. We're starting the week in style by shipping some LSP stuff and more goodies.

Brand new LSP tools

These new LSP tools will allow the model to more accurately do some refactors:

  • lsp_rename - Rename a symbol and all its references in the project
  • lsp_replace_symbol - Replace, insert before/after, or delete an entire function/method/class by name

If something doesn't work as expected by the LSP, don't worry. We'll report an error to the model so it can fallback to using the edit tool.

Scrollable sidebar

This one is pretty cool. Got out-of-space in your sidebar? Don't worry, you can scroll its content now!

Keyboard:

  • When focused on the chat view: l or right arrow focuses on the sidebar
  • j/k or up/down arrow scrolls up and down
  • g scrolls to top shift+g scrolls to the bottom
  • h or left arrow focuses back on the chat view
  • tab always returns focus to the editor

Removable attachments

It's now possible to remove attachments with your mouse! Just click on the X button:

Screenshot 2026-07-20 at 17 26 51

Better Hyper OAuth

When authentication on Charm Hyper ™️ or GitHub Copilot you can now press u to copy the URL. This is needed for certain scenarios, like when using Crush over SSH, where it might not be possible to open the browser automatically.

Screenshot 2026-07-20 at 17 33 21

Quit dialog hint

When rendering the quit dialog, we're now showing an hint that it's possible to skip the confirmation completely by simple pressing ctrl+c twice.

Screenshot 2026-07-17 at 17 20 12

Agent fixes

  • Reasoning effort level none is now working for Baseten models
  • Thinking blocks are now rendering for MiniMax M3 via OpenCode (thanks @marifcelik)

That's all for today. Keep crushing! Charm

Changelog

New!
  • cd8c06ceb10f6cc90cc7989575e49d0c4c27b476: feat(lsp): add 4 new lsp tools (@taciturnaxolotl)
  • 17ad5c7ffb7fa3021681528e68180d708d3b42e5: feat(lsp): add LSP superpowers tools (@taciturnaxolotl)
  • 7eca7a04b1a7165b7088642612edf4ddc1cba171: feat(lsp): fancy diff view renders (@taciturnaxolotl)
  • 8ad59d226c3e10eaa6c4c527a273d29b09ef92f9: feat(lsp): update system prompt to recommend lsp tools (@taciturnaxolotl)
  • f8d855d5fe0808d83684611a820704e2789b654b: feat(ui): add scrollable sidebar with focus-based navigation (@meowgorithm)
  • f413c9a9b24650e0c72fc4b77df219f3f8436045: feat(ui): auto expand reasoning dialog based on count (#3332) (@taciturnaxolotl)
  • f604d989311458ab8063a5aa916588f1d84c8bc0: feat(ui): clickable ✕ remove button on attachment chips (@joestump)
  • 4244f520330ce338045425899a2598cdf8858972: feat(ui): scroll sidebar with mouse wheel when focused (@meowgorithm)
  • 047998766524393119b534b4ae5996a91ad93cd4: feat(ui): scroll sidebar with mouse wheel when focused (@meowgorithm)
  • 79eedf79f9c12d23e3580339b7520e8f1384f286: feat(ui): show g/G shortcuts in sidebar full help (@meowgorithm)
  • d50076469d7509345936d54853e98cd9a041a3d4: feat(ui): widen sidebar to 32 cells and reserve scrollbar column (@meowgorithm)
  • 3446255daa028ba22505539dee6f6544f0faecbb: feat: add --all and --crawl-dir modes to stats subcommand (#2811) (@taciturnaxolotl)
  • 12e96776a4a5d47146981f18c4fec3383128d151: feat: add keybinding and logic to copy verification URL in OAuth dialog #3323 (#3324) (@biisal)
  • a02a9809a1420843ad14c6bc72f6523cf002013a: feat: on quit dialog, add hint on how to skip confirmation (#3356) (@andreynering)
  • 8db57337ad5f0353154f0d61747b3624a84da290: feat: recover cleanly from mid-stream provider connection resets (@taciturnaxolotl)
Fixed
  • 1be8408601d4da2d61469ff96217d98e714ab6bc: Review fixes: attachment remove button (hidden clicks, mouse button, chip spacing) (#158) (@meowgorithm)
  • 001a2f8542ebcbf56c2dfc95848b45f2ea378f97: fix(agent): preserve attachment chips in user messages after sending (@joestump)
  • aca40878e2bb13d63ca8d89ce3b09993347090bd: fix(baseten): fix "none" reasoning level (#3386) (@andreynering)
  • 461976d035ef984ce00145fed83f4454fb533228: fix(commands): scope logout command to oauth providers (@taciturnaxolotl)
  • 55b2f0d1afbbf698fecef488e36baab080522e4f: fix(config): prevent data race when reading config during reload (#3362) (@taciturnaxolotl)
  • b9a1182b8b4345150463be258297d9209108eccc: fix(lsp): add word boundaries to symbol grep and validate against LSP (@taciturnaxolotl)
  • 07044a9b6a21d6e85bb5a38aa0c35d3a41a81956: fix(lsp): fix TrackConfigured startup race and relative path resolution (@taciturnaxolotl)
  • 70cd684a71df6c571c1fb4b09b9a178aa1d1be9c: fix(lsp): lsp restart failing (@taciturnaxolotl)
  • 132a8c89d84726c3e8e60ec9e104d684f3a7df85: fix(mcp): clear tools and close the session on MCP error; reap stdio process groups (@claude)
  • 009ce621814d35d726f3f1c52d40e2d84dba92d6: fix(mcp): serialize renewals, restore all registries, arm init gate (@meowgorithm)
  • 8246dff514e91e8a0a564b8bb467b7f799715e93: fix(mcp): wait for MCP init before building the tool list (@claude)
  • 1ef42ef8688a325f955af89f4a119a6680ccff4c: fix(queue): fix pill border on queued messages (#3333) (@taciturnaxolotl)
  • 4f4b84695dbb3b232a2df582383bdf62ab6c2d14: fix(refactor): refactor the edit tool to not duplicate find and replace (@taciturnaxolotl)
  • 18c27999e3a8dce5555609bb399466515c927fe1: fix(tools): report every matching line per file in internal grep (#2994) (@officialasishkumar)
  • d1626158d058f96b91aaf9ffce7cdf48a94579db: fix(tui): prevent stale background refreshes from overwriting UI state (#169) (@meowgorithm)
  • 5b7d7f714d4371d3ecd5906c8191f2ecf5f009bd: fix(ui): align the compact sidebar logo (@meowgorithm)
  • 4413344cfc85518689aaff70840bd044150a4bdf: fix(ui): keep chips in place when toggling attachment delete-mode (@joestump-agent)
  • 885fe4d38f0d37f0e0f4354f3912c032adc75990: fix(ui): keep sidebar layout while scrolling full content (@meowgorithm)
  • c5bf189cff3dade660822be11209a39652efeb6c: fix(ui): leave an empty column between sidebar content and scrollbar (@meowgorithm)
  • 4b729a9351c7e0eb538609d20e058c05a2021984: fix(ui): only allow sidebar focus when content overflows (@meowgorithm)
  • 5d9d37bcf55172d874a2993b7e38516ed37bbedc: fix(ui): prevent sidebar text clipping and restore sidebar focus (@meowgorithm)
  • 74e725b393ecc45146fa8084cf934915790527e9: fix(ui): resolve timer display conflicts in thinking animation and tool spinners (#3353) (@taciturnaxolotl)
  • 15e73964347903c0207b3e022c28c465d129884b: fix(ui): restore right padding on the attachment remove button (@joestump-agent)
  • c3b320344e23b9fff0d3e5a28de33ed7c0566404: fix(ui): scroll sidebar details below the logo (@meowgorithm)
  • c880f929c3732c5412fe9fae16efad0406461c25: fix(ui): use fgmostsubtle for canceled text (#3360) (@taciturnaxolotl)
  • a882695e6053be206a48fea19d401c08d7575fd6: fix: enable thinking blocks for minimax m3 on opencode providers (#3335) (@marifcelik)
  • 6d272018e5a9c2facfd074d310194a58fbb5feff: fix: keep chat pinned to bottom after a resize (#3336) (@taciturnaxolotl)
  • 0d4c2bbc8ddeb8edebc5fa15075f21d2e99c5256: fix: keep the spinner animating when a response restarts (@taciturnaxolotl)
  • a283fbd9fd696d3ff034b9ac6c78aaf006e497f3: fix: prevent new sessions from hanging in client-server mode (@meowgorithm)
Other stuff
  • e6756c9a9d181c69a8a5471c882efe7088b2faf6: chore(ui): remove dead Editor.AddFile keybinding (@joestump)
  • d6543ba0fc5be2f4d80eb54196e8146c2c1ea696: chore: auto-update files (@charmcli)
  • 8198d8eec7b11f74f8337087c67a4b7b31b063c7: chore: auto-update files (@charmcli)
  • c95cdae6b20c9a30fb4446ef04a43a28f71cdeac: chore: bump modernc.org/sqlite (#3334) (@taciturnaxolotl)
  • 57c63b99d280b9a6e0cbe54794b6303ecba31da5: chore: generate golden files (@taciturnaxolotl)
  • 3b9f01937b71c273ab3dbc2e756c6930f257c363: fix(lsp/ui): fix stale sidebar state on render (@taciturnaxolotl)

…

Thursday, July 16Jul 16, 2026

Release v0.85.0

Crush v0.85.0

If you have questions, we have answers This release brings us a question tool (at last!) plus a bunch of bugfixes and niceties. Let's go! The Question Tool So! Crush now ships with a first class question tool, useful for when LLMs wanna grill you. The question…

Read full notes

If you have questions, we have answers

This release brings us a question tool (at last!) plus a bunch of bugfixes and niceties. Let's go!

The Question Tool

So! Crush now ships with a first class question tool, useful for when LLMs wanna grill you. The question tool comes in many forms, like single choice, multiple choice, free form text, and yes/no. Questions can be ganged together to build a form, too.

What’s that you say? “Does it have mouse support?” Why, yes it does.

What is this sorcery? Only @taciturnaxolotl knows. He solo’d this whole feature exclusively with open source models on Hyper.

Hurry up and wait

Ever put an LLM to work, only to forget about it and come back and wonder how long it's been cranking? @andrinoff sure did. Wonder no more.

output

And so much more

Like Prince in the 80s, @taciturnaxolotl continued his tour of awesomeness alongside @andreynering to make Crush better under the hood too:

  • Fixed: crush auth now works outside of client/server mode
  • New: Crush now auto retries auth under the hood when it fails
  • Improved: dialogues now render great on tiny screens
  • Perf: scrollbar optimizations for faster rendering
  • Perf: memoized markdown renderer for faster rendering
  • Perf: short circuit jq builtin operations if the turn was canceled before it started
  • Yay! OpenAI merged our PR upstream so we're back off our fork

Buckle up, we have a bunch more coming.

xoxo, Charm 💘

Changelog

New!
  • 686a3f46e1876e9025a29bf846f11fac91bbb3f3: feat(dialog): hide list info column when it would crowd item names (@taciturnaxolotl)
  • 75e7195fbd713d7f13dd242b8f994f11e070fe6b: feat(question): add client server integration (@taciturnaxolotl)
  • 6f33b6668505ce0e30ef7e83fa642c9bf8c23c95: feat(question): add mouse scrolling (@taciturnaxolotl)
  • 321c661e88079a6af12cec7a4606a389a5627a73: feat(question): add mouse support (@taciturnaxolotl)
  • 1b5994c04f5a3e1c0d94cb05c80ccd07a187ebf1: feat(question): add paste support in text areas (@taciturnaxolotl)
  • c2a6f76565600492aa2769d66ccd5ef7c00ea6a0: feat(question): add question tool with structured UI (@taciturnaxolotl)
  • 9f4f145ad7c63bf6526d4517b88e8a98aa5bda96: feat(question): adjust question prompts and error messages (@taciturnaxolotl)
  • 5e611a70a6e48ccb7dbb3ff020ee1efa5d37772d: feat(question): allow newlines and make free text like pop (@taciturnaxolotl)
  • f69a91e5ab058a78c581af68c4e6bdde569bad44: feat(question): extend length limits on question tool (@taciturnaxolotl)
  • 3bf40358a06e43863dc9689ea2bd286937063ca6: feat(question): make escape cancel the question instead of submitting empty answers (@taciturnaxolotl)
  • 81a8ee4b54a980e4f4d08d1f7edfcbdd7a24b810: feat(question): redo tab resizing and mouse -> keyboard transition (@taciturnaxolotl)
  • a5a5c6c54b40620ec2fdc20ccdf4b3224961a654: feat(question): tweak the confirmation tab (@taciturnaxolotl)
  • 29f5691db4a9646910397bf7437e91f30c5d4fa3: feat(question): tweak yes/no to add shortcuts (@taciturnaxolotl)
  • dc1609977e53f62843f6a9df78ba4283da62793c: feat: elapsed seconds timer (#3223) (@andrinoff)
  • 64bbbebc430dd5031b92d62f179cbd6a22c09069: feat: integrate fantasy OnAuthRefresh for transparent auth retry (@taciturnaxolotl)
  • d1489a603d357ab3e07dda66079130d4d5cdccb9: feat: wire LM Studio vision capabilities to SupportsImages (#3280) (@josh-socium)
Fixed
  • f3592bd8c501732e56128be07ce5fa694b008318: fix(dialog): account for the input prompt width so long values don't wrap (@taciturnaxolotl)
  • 2c6424c179ee6ef21d2190744410ca289a9ad9da: fix(dialog): center permission buttons in fullscreen (@taciturnaxolotl)
  • bbf654fb92f578bf5a1e4956b0d38b9297768fef: fix(dialog): centralize keybind hint rendering and stop overflow (@taciturnaxolotl)
  • d6c63d31e255841038270d4b88ef347986e8da63: fix(dialog): clamp DrawCenter and DrawOnboarding content to screen bounds (@taciturnaxolotl)
  • f6528f72ff5057fbb40d8e9b4f2ebf67b3fc119f: fix(dialog): constrain Quit dialog padding on narrow screens (@taciturnaxolotl)
  • 31550cb4f9c04d9fc1d5e552be7745d2333cfee6: fix(dialog): fix OAuth content wrapping and full-width layout (@taciturnaxolotl)
  • 352e26515901b9fd563fcbe7b8d945da678135d6: fix(dialog): fix model provider label truncation at low widths (@taciturnaxolotl)
  • a69ace5e0bb4e0461c230498c29805446b137083: fix(dialog): keep dialogs stable on small screens (@taciturnaxolotl)
  • 151b38d424fe561bc19669b10d7ee3aa66a4b19c: fix(dialog): make APIKeyInput width responsive to terminal size (@taciturnaxolotl)
  • 3e2bd1cc4535eb5988c6990224f778256fcfb457: fix(dialog): make OAuth dialog width responsive to terminal size (@taciturnaxolotl)
  • aaf92f866282d0eccacfa5a21025bcd25a504afc: fix(dialog): mute command list shortcut hints (@taciturnaxolotl)
  • 605dfc9e3d3cc497f7594ced3820312cc32ddc3f: fix(dialog): remove dead space beside the list scrollbar (@taciturnaxolotl)
  • 6407b8529ed394e6fef49c08fac3cdab165b8013: fix(dialog): scale FilePicker down on small screens (@taciturnaxolotl)
  • 0c61aeee761afa9c967e9c6990e003bc4f5e6de7: fix(dialog): stop list item names from wrapping past the list width (@taciturnaxolotl)
  • e271cecb3617626d8cf98fe94672c050d1eff2fd: fix(dialog): subtract border size in Reasoning and Notifications width (@taciturnaxolotl)
  • e8c2772d272f179a9073b7214e236a2159429058: fix(dialog): truncate TitleInfo when it exceeds dialog width (@taciturnaxolotl)
  • 2b4a01ae994cce7c2c9b5c08bb9d2aafad5dd15a: fix(dialog): truncate dialog titles instead of wrapping on small screens (@taciturnaxolotl)
  • b5cd46c2381afda7adee567f7abadc101ef4dc2c: fix(errors): properly supress context cancelation error (@taciturnaxolotl)
  • e34e707c175abd1a46f0135a2657d308129adb41: fix(events): restore file picker event (#3314) (@taciturnaxolotl)
  • b75d6bc27b33bffb59b8ea9f304999515db74ff3: fix(oauth): fix the ui freeze on loading model endpoints (@taciturnaxolotl)
  • 82e889858c654896b73bcd3e80616b5adc62fe11: fix(question): address PR review feedback (@taciturnaxolotl)
  • ca5a19d7432a50eee59539b7568ce825a0bca2ce: fix(question): fix a bug with the hover state coming deselected (@taciturnaxolotl)
  • cbb9d4f2614ad87d0d2feaf7b348189fa464e25f: fix(question): fix scrollbar disappearing in single-select (@taciturnaxolotl)
  • 9e6175a2ea839a8a875f59e7ca05aa05e8780fde: fix(question): make scroll containers consistent (@taciturnaxolotl)
  • 70c64b5794ec77cac6735007d68e20ae4e2fddd9: fix(question): route scrolling properly depending on which area is (@taciturnaxolotl)
  • 5e6890de82a029bbb83b5e8205e483ec44e57207: fix(tests): bail on precancelled ctx in handleJQ (#3058) (@taciturnaxolotl)
  • 1937ac54c597bb04553e8242e79314b5b1c0a9b7: fix: match question tool cursor color to main editor (@meowgorithm)
  • ee00ec7bb6d0b698bad0bcda2cbf9e23ef307582: fix: respect client-server mode during login (#3315) (@andreynering)
Other stuff
  • 3c51a9f2f03e3f2e9de59a84d7a75e999c5ebe52: bug(client/server): fix non interactive init (@taciturnaxolotl)
  • 2b969b2a862c250cbb8c529fe7148574a060f793: chore: auto-update files (@charmcli)
  • 4721e53c30a0c51a718b84ff54f42cdee4e63ae0: chore: auto-update files (@charmcli)
  • 14483caceb20c1d2283ffc69da1db7d42fb58540: chore: switch back to upstream openai sdk (#3308) (@andreynering)
  • 4d901d1be4d4aec2dd1098b7e39c28e19c505b84: perf(ui): keep chat resize smooth on large conversations (@taciturnaxolotl)
  • d29fc2ca6c84404ae40ff7dd72c76a079ed3a1bf: perf(ui): memoize chroma lexer lookups by filename (@taciturnaxolotl)
  • 1bfc53f66fb92d9491b00b8602b7dff805bccca4: perf(ui): memoize the chroma syntax-highlight style (@taciturnaxolotl)
  • e456a902c30e24fe5f4e7e8aa9060294079ed1a3: refactor(dialog): dedupe scrollbar joins and tame the permission Draw (@taciturnaxolotl)
  • 492460a854cd890ac362390580b56f38ee2dd359: refactor: make the coordinator use a struct (@taciturnaxolotl)

Verifying the artifacts

First, download the checksums.txt file and the checksums.txt.sigstore.json

…

Saturday, July 11Jul 11, 2026

Release v0.84.1

Crush v0.84.1

Session affinity, for real this time This bumps Fantasy upstream, which was missing in the last release to actually send session id headers in the last revision. Enjoy! Charm 💘 Changelog…

Read full notes

Session affinity, for real this time

This bumps Fantasy upstream, which was missing in the last release to actually send session id headers in the last revision.

Enjoy! Charm 💘

Changelog


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

Friday, July 10Jul 10, 2026

Release v0.84.0

Crush v0.84.0

If you like caching and coding on your Android, you’ll love Crush v0.84.0 This is a mini release with two little niceties: Cachemaxxing Crush now sends the fabled x-session-affinity header (and x-session-id) in its requests. Supporting providers can pick the…

Read full notes

If you like caching and coding on your Android, you’ll love Crush v0.84.0

This is a mini release with two little niceties:

Cachemaxxing

Crush now sends the fabled x-session-affinity header (and x-session-id) in its requests. Supporting providers can pick the header up, pin the session to a given replica, and go cache wild. The session header is a hash with no personally identifiable information, of course.

Fixed: Termux

If you’re a nerd with an Android, you probably use Termux, the hot Android terminal emulator. If you’re a cool nerd, you probably want to use Crush on an Android and are annoyed that it was broken. Thanks to @Ricardo-M-L, Crush now works on Android again.

Hope you're having a great summer! Unless you're in South America, Central America, the Southern part of Mexico, parts of Africa or Australia, in which case…hope you're enjoying the Winter!

xoxo, Charm 🍔

Changelog

New!
  • ebd845c003579484171922fda8a671367eee7684: feat(agent): send session hash in header for cache affinity (@meowgorithm)
Fixed
  • 5b61432984ba271cf9cb3791295ba94e9c2c8f81: fix(release): drop broken .termux.deb artifact (#2848) (@Ricardo-M-L)
  • e3074f14cec703bdddba13e6df5cf2242b34194c: fix(server): show update notices in client-server mode (@meowgorithm)

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

Wednesday, July 8Jul 8, 2026

Release v0.83.0

Crush v0.83.0

Prep for GPT-5.6 GPT-5.6 should launch tomorrow, and this release is to ensure Crush is ready for when it happens. Bang mode fix We also included a UX small fix when navigating the history when previous prompts were Bash commands (using bang mode :tm:). Charm…

Read full notes

Prep for GPT-5.6

GPT-5.6 should launch tomorrow, and this release is to ensure Crush is ready for when it happens.

Bang mode fix

We also included a UX small fix when navigating the history when previous prompts were Bash commands (using bang mode :tm:).

Charm 💘

Changelog

New!
  • d0dc9fc9dfce76b9e35b2686ee4bfccfca796222: feat: prepare for gpt-5.6 (#3270) (@andreynering)
Fixed
  • cb1292026cc113e2a2e61f14686f2a36551f74a0: fix(bangmode): don't add extra ! when browsing history (@meowgorithm)
Other stuff
  • 72c5668eface73b6e3745cccc8098f2cd1e55879: system prompt: avoid emdashes in source code (@meowgorithm)

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

Tuesday, July 7Jul 7, 2026

Release v0.82.0

Crush v0.82.0

General fixes Hello. This small patch includes some varied fixes. Better chat scroll On some rare occasions, the chat could stop scrolling automatically to the bottom as the model works. We made some changes to make this more reliable! General agent fixes…

Read full notes

General fixes

Hello. This small patch includes some varied fixes.

Better chat scroll

On some rare occasions, the chat could stop scrolling automatically to the bottom as the model works. We made some changes to make this more reliable!

General agent fixes

There were a few fixes here and there making the agent behave better. We made thinking on/off and reasoning levels behave better for providers like Alibaba and Baseten, for example.

We are finally mentioning Hyper on README, which are our favourite inference service for Crush.

See ya!

Changelog

New!
  • cbb6daaa80841614abc091f3201c5e635895c22e: feat(ui): preserve newlines in expanded tool content (#3239) (@taciturnaxolotl)
Fixed
  • d341d84b24fbe6471708c15f4dc08533a9ea6dc4: fix(alibaba): fix missing thinking traces on deepseek via aliababa (#3259) (@andreynering)
  • 3ac7f1c48bbe3031772fb2f47c2f356283790591: fix(baseten): make the thinking on/off toggle work for baseten (@andreynering)
  • 78a205cdb5f988aa6daa6c1907e88b4b9d2b2769: fix(copilot): guard nil request body in initiator transport (#3246) (@truffle-dev)
  • ff12fa014e8f530daa8e52eecc716c79d18a363c: fix(scrollbar): only show on human scroll (@taciturnaxolotl)
  • 6437f0d78c72987f9c90b5257f22504326b19c78: fix(ui): make chat follow-scroll reliable when content grows (#3240) (@taciturnaxolotl)
Docs
  • 3d603684539ffe2d5716784f1eee17e2e59ab843: docs(readme): mention MOONSHOT_API_KEY (#3251) (@TheRAWagent)
Other stuff
  • ebf6e826ebf8c58754597ef88dce3649ec91abbb: chore: add alibaba us (#3249) (@andreynering)
  • e01ecdf2054af14a452109eb1d4d8402ad28f703: readme: add hyper (@meowgorithm)

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

Monday, June 29Jun 29, 2026

Release v0.81.0

Crush v0.81.0

Some UX stuff for ya We're starting the week in good style by adding some nice additions and improvements. Chat scrollbar This is it, the chat just got a scrollbar! This should make your life easier on navigation long session. You can now see exactly where you…

Read full notes

Some UX stuff for ya

We're starting the week in good style by adding some nice additions and improvements.

Chat scrollbar

This is it, the chat just got a scrollbar! This should make your life easier on navigation long session. You can now see exactly where you are when scrolling.

It's possible to adjust the behavior with a setting: options.tui.scrollbar.

  • default (hides after 2 seconds)
  • always
  • never
{
  "options": {
    "tui": {
      "scrollbar": "default" // default, always, never
    }
  }
}

https://github.com/user-attachments/assets/c0c0f888-78d4-4457-ae32-eb1a2dd5f575

Herdr Support

Have you been wanting to use herdr.dev for all your agent management needs? Well now its even better! @taciturnaxolotl merged support for agent status signaling so now herdr can pick up on the status of crush and send you notifications when it is blocked or finished!

image

Lower CPU usage

Crush could use too much CPU when streaming thinking traces and showing them for you. @taciturnaxolotl worked through an optimization and that's now fixed!

Fix possible deadlock on startup

If you happen to have a model ID in your config that does not exist anymore (was removed from the providers), Crush could lock when booting and not start at all. This bug was addressed.

Images and your session

This is another fix to prevent your session from breaking when you switch to a non-vision model but your session already has images. We're going to skip the images so your session keep working.

That's all! Charm

Changelog

New!
  • b39a85ec2b2be2ca8c759383cdc39ce325dda1dd: feat(herdr): add herdr socket integration (@taciturnaxolotl)
  • b72f9aab844ab42de7bcf778e3fcf743a010d0bd: feat(ui): add scrollbar to chat view (#3018) (@andreynering)
  • db8add714e294401ce2e716459376f3803fac3ce: feat(ui): allow expanding toolcall names (@taciturnaxolotl)
Fixed
  • f75435a2ac2e69cf4d64ad15bf5d84f284cdecd6: fix(agent): fall back to first reasoning level when default is unset (#3218) (@syf2211)
  • d3d68045ff907c8a7103f78c99c5b517476aa65a: fix(agent): prevent session bricking when non-vision models receive tool result media (@taciturnaxolotl)
  • a08e3329c0b540cc851f5d2e0e9405cd06fa7c2c: fix(bash): keep TruncateOutput from splitting UTF-8 characters (@feizhuzheng)
  • 1535ebb7cd206029591dfe9ae5b269193d4cad2f: fix(config): prevent stale ReasoningEffort from leaking across providers (#3209) (@huaiyuWangh)
  • d4dc84e91471a6c794a037ff5012e42fd070e960: fix(config): prevent startup deadlock when configured model ID is invalid (@taciturnaxolotl)
  • 188dea64e2e84468c4d2059e4e8ce2f580c2efdb: fix(fsext): DirTrim renders wrong character for non-ASCII directory names (#3214) (@feizhuzheng)
  • a07d304f9174d57059a5264b2c34dfd431fa00ff: fix(hyper): refresh hyper oauth token before fetching credits (#3212) (@andreynering)
  • a1b19ebc33e4085af0322d665cb3bb7fbd66c713: fix(prompts): unindent heredoc (@taciturnaxolotl)
  • a9e3a57f7a9f40cd411e5ac1b98156b8240ed1fb: fix(shell): skip persistence when session no longer exists (@syf2211)
  • 3a99992e863a5fe82266f9eec6433affac956b12: fix(ui): ansi.truncate instead of byte slicing in todos (@taciturnaxolotl)
  • 9c61c7d032504a21760478c4c72f81cce7a11efc: fix(ui): use ansi.truncate everywhere (@taciturnaxolotl)
  • 3295a085cfb405c450ae3ac1fd89ab8989793e99: fix: cache streaming thinking renders to avoid CPU burn during long reasoning traces (@taciturnaxolotl)
Other stuff
  • 5c934c30954f6241fb1acb582ef4376bb958702a: chore: auto-update files (@charmcli)
  • f645040c1ba002fa8c65e0addd5e5be4eae35337: chore: auto-update files (@charmcli)
  • fcccdfee42a77eb67b54d670ca3463121522dc4a: chore: auto-update files (@charmcli)
  • 358d75dbdbc4bd329cde36e71065805cf5762ed1: chore: regen golden files (@taciturnaxolotl)

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

Thursday, June 25Jun 25, 2026

Release v0.80.0

Crush v0.80.0

The Ol’ Thursday Patch Hi all! It's patch time, and time for some bonus features. Let's go! Fixin’ broken tool calls Occasionally a model will opt to do a tool call with invalid arguments (invalid JSON), the session was just breaking, and even new prompts…

Read full notes

The Ol’ Thursday Patch

Hi all! It's patch time, and time for some bonus features. Let's go!

Fixin’ broken tool calls

Occasionally a model will opt to do a tool call with invalid arguments (invalid JSON), the session was just breaking, and even new prompts wouldn't anymore. We're now validating the issue and reporting it as an error to the model so it can correct itself. Of course, we also fixed the associated bug in Crush so sessions will no longer break.

Local models: auto-detectin’ context windows

Who loves local models? Now, Crush will now automatically detect models context windows with you add an endpoint for llamacpp, omlx, lmstudio, litellm, and ollama. Prior to this it was mis-setting window sizes to zero.

Config: harder, faster, stronger

Okay maybe not harder. But config in Crush is definitely faster and stronger.

We refactored on the so it's way more performant and safe for big, long configs where there are many providers, models, and so on. This also means that the model picker dialog will load faster too! We also added some safeguards to prevent race conditions when multiple Crush instances try to update the config at the same time.

You look great

That's all for today! Keep crushing it, everyone. :cupid:

Changelog

New!
  • c1a482267431964b9c27f16b925fd659a1b222c2: feat(providers): add llamacpp enricher (@taciturnaxolotl)
  • 4be77c5675b38f851a94040794cbe3417f5dee20: feat: log provider warnings from fantasy step results (@taciturnaxolotl)
Fixed
  • de6792039e757b533589da4165a2ed4182ed94cb: fix(auth): stop two Crush instances from invalidating each other's login (@taciturnaxolotl)
  • b10f890f55b1c00969b8e59a6828b6f405103b5a: fix(config): make concurrent config access race-free via copy-on-write (@taciturnaxolotl)
  • af76fa73bfce9042c1ffeaade2371355a869cfee: fix(docs): set proper auto discovery models flag (@taciturnaxolotl)
  • 67f50014e81be7fbdf1187fa78e65279b87b7908: fix(glob): keep file search fast and bounded on large directories (@taciturnaxolotl)
  • bb44fb1f4955920076da9f78a9f0738c2f4d5ecb: fix(hooks): bridge Claude Code additionalContext onto HookResult.Context (@ken-jo)
  • 720698112727dacfd3d468c0414003b427aa7691: fix(scrolling): stale scrolling acceleration (#3197) (@chardoncs)
  • cfdca3587fd5d515963db79e15a9f06071b18caa: fix: correct model discovery enrichment for local providers (@taciturnaxolotl)
  • 1bb945c83f68f841c187b24638c4ca4d1ef4a8b7: fix: prevent flaky diffview golden tests on Windows CI (@taciturnaxolotl)
  • 1350167227756c67ea429c5191a05f6b23fd35b8: fix: render pills box reliably when todos or queue appear mid-session (@taciturnaxolotl)
  • 21a457d5e0de4cc56419ff239676bcfe52054b3d: fix: validate tool call JSON before storing to prevent stuck conversations (@taciturnaxolotl)
Other stuff
  • a5896b4f62d74643daad01ed03a34423386d6650: chore: auto-update files (@charmcli)
  • aa3bdedafedaaff8043f3a9091c1fe0adfdd552d: chore: bump fantasy to 0.33.2 (@taciturnaxolotl)
  • 7f7eb603ac7437156733b42be60c4e8961867fb3: chore: bump golangci version to fix lint issues in ci (@taciturnaxolotl)
  • 6b68930b2d6a9d99b7bd7fe1a84ddf1e8498f475: chore: fix lint on interp.ExecHandler (#3200) (@taciturnaxolotl)
  • f5b996bff40ecd881b5d92d8b876a08b62a94373: perf(config): make model selection and config reload fast (@taciturnaxolotl)
  • 173b2be61b2906bf0bcb107081d700ed36550a85: perf(ui): skip theme rebuild when provider keeps the same theme (@taciturnaxolotl)
  • 81cb9d990aa272dc1fdf17ae086b2b23ee3cae08: refactor(ui): optimize model ui rendering (@taciturnaxolotl)

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

Saturday, June 20Jun 20, 2026

Release v0.79.1

Crush v0.79.1

Bang Bang This release introduces a number of small but mighty UX improvements to improve the Bang Mode experience overall. Details below. Hope you’re chilling out, Charm 💘 Changelog Fixed 11662010521e5211d825fcc21c4fdf8c72fda08e: fix(bangmode): activate bang…

Read full notes

Bang Bang

This release introduces a number of small but mighty UX improvements to improve the Bang Mode experience overall. Details below.

Hope you’re chilling out, Charm 💘

Changelog

Fixed
  • 11662010521e5211d825fcc21c4fdf8c72fda08e: fix(bangmode): activate bang mode when ! is preceded by whitespace (@meowgorithm)
  • 7e4bd6a0b44ce3c32f0e36d48ffcd77c1955d641: fix(bangmode): engage bang mode when pasting text starting with ! (@meowgorithm)
  • f342edf052ef1ca35fb202c235a976b9ef6f45f9: fix(bangmode): include bang commands in history (@meowgorithm)
  • d20e29ae75004991e801fc4fd18c83e68913b5ab: fix(bangmode): sync bang mode with external editor (@meowgorithm)

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

Friday, June 19Jun 19, 2026

Release v0.79.0

Crush v0.79.0

More Bang Mode™ improvements This morning we released the new Bang Mode. For this release, we did a couple small fixes and enhancements to it: We tweaked the font colors to make it more legible; A long-running command will now show immediately and stream…

Read full notes

More Bang Mode™ improvements

This morning we released the new Bang Mode. For this release, we did a couple small fixes and enhancements to it:

  • We tweaked the font colors to make it more legible;
  • A long-running command will now show immediately and stream output as the command runs;
  • Session name generation is fixed for sessions started with a command.

Agent bug fixes

We made a few bug fixes to Fantasy to make Crush behave better with certains providers and models.

  • The tool not found error now print the list of available tool. This is targeting certain models like Kimi that sometimes can get lost and call tools that doesn't exist;
  • Fixes potential tool call errors with the GLM family via Fireworks;
  • Fixed some GPT models via Azure (thanks @dustinlagoy);
  • Fixes Gemini via VertexAI (thanks @eswar-7116);
  • Fixed tool calls sometimes not working properly for local models.

Have a great weekend and keep crushing! :rocket: The Charm Team

Changelog

New!
  • 1c2da8930cdf77c0cff1ba8014028b4ec31f5f82: feat(bang): remap ansi 16 colors (@taciturnaxolotl)
  • 6db54b3a969389d97a414fb20f3d527a237d7565: feat(bang): show pending spinner (@taciturnaxolotl)
  • 6814ccfca6715ac018ac1ff7046146a913b24824: feat(bang): stream results in (@taciturnaxolotl)
  • 5f07034e42387e2b47b2cd81c8802df8d90b992c: feat(bangmode): adjust command output color (@taciturnaxolotl)
  • ee47eb808cfeedafac0aba2d2acc2be9f2c9a73e: feat(bangmode): allow prefixing a string with bangmode (@taciturnaxolotl)
  • 47ed0f3a2fc96feed9a127ea83960fe5a681e30a: feat(bangmode): cancel command execution (@taciturnaxolotl)
  • f46387bb525c8bf27fed2a7e8adf28aceff2ab68: feat(bangmode): copy message result (@taciturnaxolotl)
  • 175ce34cc8d1325f6727ab896df22c8babcaca3b: feat(bangmode): properly strip ansi in copy and context (@taciturnaxolotl)
  • a06fd0348a10152468600761f57d46a74f17f689: feat(schema): fix the reflection on provider options (@taciturnaxolotl)
Fixed
  • 03bfdc66fb2633b799170d95c984625d03f9db8d: fix(bang): set title in bang mode (@taciturnaxolotl)
  • 8305eb033961aa0eabf11c25340e2fc39945813c: fix(bangmode): fix duplicate command message race condition (@taciturnaxolotl)
  • 48e9cca2ffe2ab012ee305bcb20b64601f3945ee: fix(bangmode): interleave stderr and stdout (@taciturnaxolotl)
  • cf0d7c2f5e9f2b1acdb4fd387361021119298705: fix(bangmode): move ansi remaping into common and cleanup bangmode (@taciturnaxolotl)
Other stuff
  • ce2dc1ee7e799924f6534ce119994951834d4db5: chore(bangmode): adjust ANSI16 colors (@meowgorithm)
  • 2f89862dccf03213c6e049735064a0feb25d7534: chore(bangmode): adjust working indicator text color (@meowgorithm)
  • f82a46860d608c453b941fb88a74952d6d0788c8: chore: auto-update files (@charmcli)

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

Release v0.78.0

Crush v0.78.0

Bang Bang! We're ending the week in style with one awesome feature you've been asking for and one awesome feature you didn’t! Let’s go! Bang Mode “What’s bang mode?" you ask. Why it’s simply a nice way to let you run Bash commands directly in a session. It’s…

Read full notes

Bang Bang!

We're ending the week in style with one awesome feature you've been asking for and one awesome feature you didn’t! Let’s go!

Bang Mode

“What’s bang mode?" you ask. Why it’s simply a nice way to let you run Bash commands directly in a session. It’s great for taking advantage of the shell without leaving Crush. To enter bang mode, just type a !. To exit, hit backspace.

Bang Mode Demo

Of course, the best thing about bang mode is that the model can also see the out, so if you run a command you can then chat with the model about it.

Special thanks to @taigrr for the initial implementation to @taciturnaxolotl for turning it up several notches, with some suggestions from @nobilelucifero. Enjoy and let us know if you have of any feedback!

Local Model Auto-Discovery

@taciturnaxolotl loves local models. What he did not love was manually adding them to the Crush, and like a true open source devotee, and he took matters into his own hands. Crush can now auto-discover local models for a given endpoint so you don't have to declare them manually.

{
   // Look Ma, no manual model definitions!
  "providers": {
    "ollama": {
      "name": "Ollama",
      "base_url": "http://localhost:11434/v1/",
      "type": "ollama"
    }
  }
}

This works for MLX, LMStudio, LiteLLM and Ollama. More info in the README.

(Is cool or what? Someone get @taciturnaxolotl a Strix Halo!)

The clipboard: now clipper than ever

We improved the way the clipboard works in Crush big time, particularly in X11 and Wayland: xclip and xsel are no longer required! You can also paste TIFFs (WeChat users, rejoice!) and super+v (yes, ⌘+v, macOS people) will also now paste images.

Fireworks

By popular demand Crush now supports a new provider: Fireworks! Grab your API key, choose a model on Fireworks and go to town.

Thanks

As always keep the good vibes coming, and keep crushing It!

The Charm™ Team

Changelog

New!
  • 98d79e95a52f31307f6943af3b0cbe7e87daa01d: feat(clipboard): migrate clipboard to golang.design/x/clipboard (@taciturnaxolotl)
  • f6a841eca9e9d0ec45536e292cd6f70ce8c1bf02: feat(dialog): track last closed dialog in open with grace (@taciturnaxolotl)
  • 0f2790574ec8d380562a38cd5661900995d95366: feat(enricher): add litellm enricher (@taciturnaxolotl)
  • 3c4e6547b48c95949f969655e01a261fe34cdb3d: feat(enricher): add lmstudio enricher (@taciturnaxolotl)
  • 9299ad47d86f5706de43b26717121c59688d9bea: feat(enricher): add ollama enricher (@taciturnaxolotl)
  • 89b680d2d6b22126a29b2c9e45553452b6b12608: feat(enricher): add omlx enricher (@taciturnaxolotl)
  • ac4bd9c151566800fdf6b1adce9b9a337f816793: feat(scrolling): move to delta coalescing filter (#3135) (@taciturnaxolotl)
  • f45712a32da871a962b05fbe9d93d4b444de9a17: feat(ui): extract hypercredits from fantasy (@taciturnaxolotl)
  • 99a5fad5370d6c47a94791f803a275348fae891e: feat: add bang mode for direct shell command execution (#3013) (@taigrr)
  • 9886d223909e479e373007a5100eda0c1e12a6b6: feat: add support for fireworks provider (@andreynering)
  • 7303158426f938ac1648e63fdaba900658ff752b: feat: auto-discover models from openai-compat providers (@taciturnaxolotl)
Fixed
  • 4bd011669bdc6a91a47702752319f481b7dbceb0: fix(clipboard): support platforms without clipboard access (@taciturnaxolotl)
  • f98791e9868dc4d3acdebe331d69e68cf4fdd331: fix(server): show LSP status in client-server mode (@meowgorithm)
  • d3af321b0f52f199c1e47cecc2cc08535640cbea: fix(shell): isolate child processes from Crush's session (#3097) (@taciturnaxolotl)
  • 1cfa9a151569362e44b11d243ad4c4be6b9b13a9: fix(subagents): fixed subagents returning empty responses (#3125) (@taoeffect)
  • 46c1799abcaf852f092126c81923b00569c70a34: fix(title): fallback title generation (@taciturnaxolotl)
Docs
  • 70ef7073149da3283da7c5d3940ff515d77316ce: docs: add auto discovery to readme (@taciturnaxolotl)
Other stuff
  • ffd47965720647af86c8ffd6c37287836db69d23: chore: auto-update files (@charmcli)

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

Sunday, June 14Jun 14, 2026

Release v0.77.0

Crush v0.77.0

Global context, better commit messages…and you It's been a bit! There’s lots of good stuff in this release, so let’s get right to it. Global context Want Crush to always call you Shirley? Or maybe you want it to default to Jujutsu? This is now a piece of cake…

Read full notes

Global context, better commit messages…and you

It's been a bit! There’s lots of good stuff in this release, so let’s get right to it.

Global context

Want Crush to always call you Shirley? Or maybe you want it to default to Jujutsu? This is now a piece of cake with user-level context files thanks to @Amolith.

If you create ~/.config/AGENTS.md or ~/.config/crush/CRUSH.md, Crush will reference it on session start just like your usual project-level AGENTS.md and CRUSH.md. Nice!

Crashes? Not on Kieran’s watch.

Kieran, otherwise known as @taciturnaxolotl, is fast. Really fast. The other day Crush crashed for him, he honed in on two bugs in Lip Gloss and Glamour, and patched them before we could say, "Don’t panic!" Thanks, Kieran!

Better commit messages and PR descriptions

You know what drives us crazy? When LLMs write overly-technical commit messages and PR descriptions that reference obscure parts of the code. Commit messages and PRs should be understandable to readers unfamiliar with the codebase.

This PR improves the system prompt so LLMs author clearer, more understandable commit messages for human beings.

Named hooks

Thanks to contributor @BrunoKrugel, you can now name your hooks, making them easier to identify in the CLI.

{
  "hooks": {
    "PreToolUse": [
      {
        "name": "Mr. Hot Hook",
        "matcher": "bash",
        "command": "./hooks/my-hot-hook.sh",
      },
    ],
  },
}

For more info see https://github.com/charmbracelet/crush/pull/2778.

Client-server: socket fixes

Client-server mode isn’t quite ready for prime time yet, but many of us are using it day-to-day regardless. One of the coolest things about client server mode is that it runs over unix domain sockets (which absolutely rock) and named pipes on Windows. This release fixes two bugs around that:

  • Stale sockets are now cleaned up on startup, allowing Crush to run properly
  • On unix systems sockets now live in the places they actually belong: $XDG_RUNTIME_DIR on Linux and $TMPDIR on macOS, rather than /tmp.

Try out client-server mode with CRUSH_CLIENT_SERVER=1.

See u soon

Thanks for all the positive feedback about Crush. We ❤️ you!

Charm

Changelog

New!
  • 6242e4f47743190fe60a27ba881ba3d6a9b36deb: feat(config): load user-level context files (@Amolith)
  • 021e3773a63366a1970563543e694c36c6bb6e38: feat(hooks): add name field to hooks (@BrunoKrugel)
Fixed
  • 7c9f4bbb647a2c642607bd921c2c35bb12f226e2: fix(server): clean up stale sockets + correct socket location (#3095) @meowgorithm
  • 3e6f95eb2409f5187053d337e6e48dc810b04539: fix: address potential indentation on commit messages trailings (#3106) (@andreynering)
  • e4c82db68f8e9fb0ddd0c8d188c44a623042354b: fix: bump lipgloss to v2.0.4 and glamour to v2.0.1 to fix crashes (@taciturnaxolotl)
  • aad8cbad258484dba2dc416832dce9a9a589a2f5: fix(bash/git): improve git commit and PR message standards (#3052) (@meowgorithm)
Docs
  • aadb7e7932a819b184317fbde074ed6bd15be7b6: docs(hooks): add name field (@taciturnaxolotl)

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

Friday, June 5Jun 5, 2026

Release v0.76.0

Crush v0.76.0

Friday patch Shipping a couple small things for those who will keep crushing during the weekend. Permissions UX fix We made a change to avoid accidental interactions when the permission dialog shows. Crush will now ignore key presses up to 350ms after the…

Read full notes

Friday patch

Shipping a couple small things for those who will keep crushing during the weekend.

Permissions UX fix

We made a change to avoid accidental interactions when the permission dialog shows. Crush will now ignore key presses up to 350ms after the dialog is shown. This will prevent you from accepting or denying something by mistake when you're typing when the dialog appears.

crush models fix

crush models will not shown all models, and not only the configured ones.

More client-server

And more and more fixes for the experimental client-server architecture are merged. This will power Crush to do really nice things once finished!

That's for this week. Enjoy your weekend! Charm ✨

Changelog

New!
  • 90b1a2a67bf70a2f5fc1f998ccd84317cab5d68b: feat(server): make server prompts independent of client connections (@meowgorithm)
  • 363ffec9ec38bf84fd2476d28c6906965cda9822: feat: discover skills from git root in monorepos (#3078) (@taigrr)
Fixed
  • 6292bfa304c596f04caef653c47e53427ea40ca6: fix(cli): show all providers in crush models, not just configured ones (@meowgorithm)
  • 7da9695fc10b16cd52bfe01788c1b4e7256e393d: fix(permissions): ignore all keys briefly after dialog opens (#3055) (@taciturnaxolotl)
  • d7a814c540c258f06cb798c29beff676ed4b130b: fix(server): close a queued-prompt cancel race (@meowgorithm)
  • d411ab5edc99865159f2a86fc3c1a2b8ef3bd56b: fix(server): complete background prompts that fail early (@meowgorithm)
  • cbec4916b3d9bcdaeaff75157071e5e87a7526ef: fix(server): complete queued prompts independently (@meowgorithm)
  • a6a8459c07cc2088cd1ce012171b0cc9c05a1339: fix(server): ignore background errors from unrelated prompts (@meowgorithm)
  • 34995e9333082f6f8a6437e4bc75a55fca45c981: fix(server): prevent cancels from affecting future prompts (@meowgorithm)
  • 6ec75f9f8651a53732dc6f38dd2bd44736856e95: fix(ui): fix session rename rendering (#3071) (@taciturnaxolotl)
Other stuff
  • ee94df068af1d5d029fe425dc80d337aed09f263: chore(server): acknowledge accepted prompts with HTTP 202 (@meowgorithm)
  • d2e9e51fceddf5ed4c57c23bbb15f7a799e88892: chore(server): apply asynchronous prompt contract to clients (@meowgorithm)
  • 4347015ab7669b1376e6cb814c10f89aef3481ad: chore(server): honor cancels immediately after prompt acceptance (@meowgorithm)
  • 0a977431d6445551253c8677ec230beffdf215fe: chore(server): report background prompt failures via events (@meowgorithm)
  • 8b242c5313a79630d22429c04b699adcb624a89a: chore(server): run accepted server prompts in the background (@meowgorithm)
  • 3c0619397fe9e05fa4fadf129f8e09dbc8d021e5: chore(server,tesst): cover multi-client prompt cancellation flows (@meowgorithm)
  • 5aaa709b92582a38d4e5d183bcd675a2c997dff3: chore(server,tests): cover async cancellation cleanup behavior (@meowgorithm)
  • c6d15905a9ca53b176c1c3430c03a497de33a983: chore(server,tests): cover the accepted-prompt cancel race end to end (@meowgorithm)
  • b5fd4c08e906143becf39ef23d27db322174c679: chore: auto-update files (@charmcli)
  • 84bcc3c6c24fe6676e6547a05d9e271842c89ec3: chore: update fantasy and catwalk (#3087) (@andreynering)
  • 0e8b879720d219e74970525e4c9d2615ca414519: refactor(commands): centralise skill discovery (@Amolith)
  • 8d7166e67ebe7c93b4ecca5ab9a2f02fa92d87a0: refactor(server): share prompt validation before background dispatch (@meowgorithm)

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

Tuesday, June 2Jun 2, 2026

Release v0.75.0

Crush v0.75.0

Bug fixin' This is a maintenance release which fixes a couple small bugs. Hyper OAuth fix We fixed a bug where the Hyper OAuth dialog could appear mid-session, in case you had multiple Crush sessions that attempted to refresh the access token at the very same…

Read full notes

Bug fixin'

This is a maintenance release which fixes a couple small bugs.

Hyper OAuth fix

We fixed a bug where the Hyper OAuth dialog could appear mid-session, in case you had multiple Crush sessions that attempted to refresh the access token at the very same time.

Fixed rare startup bug

This is a rare edge-case, but we fixed a bug that could prevent Crush from starting in case it can't find a default large or small model for a provider, due to it being removed.

That's all for today. Stay tuned! 📺

Changelog

New!
  • f6b8592a5acaffa144dd35c2cd78f24fa270b77e: feat: prepare alibaba migration to /messages (#3067) (@andreynering)
Fixed
  • 3cd88ac8902c1ce421d9a2b32ae0ef7b9578d35e: fix(agent): add 401 retry and reauth notification to sub-agent runs (@taciturnaxolotl)
  • 90197756b670d743ad3c84528e4d69d2884a057a: fix(agent): centralize 401 retry logic and fix notify-on-success bug (@taciturnaxolotl)
  • 23157b6a1dbbca77b4ce482f12ff98ea5e19d9e4: fix(agent): move reauth notification from agent to coordinator (@taciturnaxolotl)
  • 5b5f7b687d324b8835e90d064e6e16970ebc92ea: fix(config): sort SetConfigFields keys, remove redundant MkdirAll, rename test (@taciturnaxolotl)
  • d87a632af1cd528b8ed76adbc3f45041acd2b128: fix(oauth): harden IsExpired with minimum buffer and ExpiresIn guard (@taciturnaxolotl)
  • c83418d10ba6c166419d1ff781380c3a0b0b0ca1: fix(oauth): stop fabricating token lifetime when expires_in is missing (@taciturnaxolotl)
  • ffaeec192ff121408b9a115b14e3be9965ca138e: fix: avoid startup crash if unable to find default models (#3066) (@andreynering)
Other stuff
  • 3570ea632225c2a6ad92d2457119904896960802: chore: auto-update files (@charmcli)
  • 81170ce5d33280947e889ba8afb93a057d26b801: refactor(config): replace reload booleans with reloadMu mutex (@taciturnaxolotl)
  • 7ce093611c8304aaa8099bdecc9b4e36ce2ff477: refactor(lock): add canonical internal/lock package, migrate db and cmd callers (@taciturnaxolotl)

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

Friday, May 29May 29, 2026

Release v0.74.1

Crush v0.74.1

Friday patch Finishing the week with a few fixes. Fix for bash tool @taigrr helped with a fix to prevent the bash tool hanging when the model tries to run interactive commands like git rebase -i and others. OpenCode + Qwen 3.7 fix Qwen3.7-Max via OpenCode is…

Read full notes

Friday patch

Finishing the week with a few fixes.

Fix for bash tool

@taigrr helped with a fix to prevent the bash tool hanging when the model tries to run interactive commands like git rebase -i and others.

OpenCode + Qwen 3.7 fix

Qwen3.7-Max via OpenCode is not working. OpenCode requires the Anthropic Messages API for this model.

Client-server

Even more fixes for the experimental client-server architecture. Currently opt-in via CRUSH_CLIENT_SERVER=1.

That's all for this week! Charm :sparkles:

Changelog

Fixed
  • e14d47a8135cef6950d6a337a8f7e3c62157bc27: fix(noninteractive): crush run reliability in client/server mode (@meowgorithm)
  • b7f4ad6cf61bcca11e052f19c2f2b653aaf818be: fix(opencode): fix qwen3.7-max on opencode (#3040) (@andreynering)
  • a4181d6d4ecc3a246ae949784b115f6c970bd105: fix(scrollbar): fix track position calculation (@andreynering)
  • c2be8cbf9b3700029cf3f291c0087f3a9f0b640a: fix: set non-interactive env vars in shell to prevent editor hangs (#3025) (@taigrr)

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

Thursday, May 28May 28, 2026

Release v0.74.0

Crush v0.74.0

More client-server, better notifications, and more Bringing you a few enhancements and bug fixes. Let's check them out! Client-server The experiment client-server architecture got even more fixes. Want to test? Set CRUSH_CLIENT_SERVER=1. Better notifications…

Read full notes

More client-server, better notifications, and more

Bringing you a few enhancements and bug fixes. Let's check them out!

Client-server

The experiment client-server architecture got even more fixes.

Want to test? Set CRUSH_CLIENT_SERVER=1.

Better notifications

We updated our notifications to be smarter. They will now work when using Crush over SSH, and support for more platforms were improved as well.

Copilot fixes

A couple more models that require the Responses API will now use them and work again. This includes GPT 5.4 and GPT 5.5.

Bedrock fixes

A couple more improvements were made to AWS Bedrock, in particular regarding Bedrock Europe and the support for authentication via aws login.

See you in the next release! Charm

Changelog

New!
  • e764240d9ceb74a626cccdd404afaaa76e128314: feat(api): expose in progress flag on session responses (@meowgorithm)
  • ec85e9ef686c23ce3366c46589cdfabc05cd2199: feat(api): report how many clients are watching each session (@meowgorithm)
  • 6923820a8f60a06a0a25100214871ccfd382e8e1: feat(db): refuse to open a data directory in use by another crush (@meowgorithm)
  • e7f5c68501e01df446ba908843ed08599a0c96b3: feat(notifications): add configurable backend and bell support (@taciturnaxolotl)
  • 3fa7d3f270aef1d1cdd16bd20f626d72cca4db6d: feat(notifications): migrate disabled and add picker (@taciturnaxolotl)
  • d9acf860a7523c6a6e7467e4d6dc65a34166a0a0: feat(server): broadcast config changes to all connected clients (@meowgorithm)
  • 1ce40dfc00b9394a8212ef008f05e7fd7efc8fba: feat(server): share one workspace per directory across clients (@meowgorithm)
  • 178cd11dd49f322b9701f3ec2484f3b7a816c6e2: feat(server): track which session each client is currently viewing (@meowgorithm)
  • d14f3b1b754a8770d3851886d96803eb0a3884c3: feat(tools): add diff view for denied tools (@taciturnaxolotl)
  • 8f9a697c0373e5975521d1b163ae4475a0719132: feat(tui): auto close permission prompt when another client responds (@meowgorithm)
  • 6da5c959dd816ca17decb89b4fde91ce9289fd67: feat: support notifications for ssh terminal (@nghiant03)
Fixed
  • 179a6f3556b672e41d6445e4aedaeed41f0e9674: chore: fix(bedrock): apply region if given for aws config as well (@andreynering)
  • a1e4a7c944bb75fe3c2adb47de137985b5eaa7c8: fix(backend): fix data race in tests using captureDebugLogs (@meowgorithm)
  • 57ae2b44f570193d7a45c19aacabb9afdb30d91f: fix(bedrock): improve detection of pre-existing aws credentials (@andreynering)
  • 36f0976c84b0cf4f4adbb921e1e2578863ca3e72: fix(bedrock): load aws credentials for bedrock europe (@andreynering)
  • ed870ecb91c53a98a9114d930cf62fa9c9170993: fix(client): prevent event subscription panic on cancellation (@meowgorithm)
  • 82d57e5e0098816e8bb9900ecf51afd02f066a39: fix(copilot): add additional responses models (@taciturnaxolotl)
  • c986a35c465fdc22fbaede2609522e3e1997e632: fix(db): only enforce the data directory lock in client server mode (@meowgorithm)
  • 86568da1153b165d47a79d8a14f1addec5a41289: fix(permissions): make permission resolution idempotent across clients (@meowgorithm)
  • 7d927319c4039f324614ed233db66219218fbc24: fix(server): one client's cancel should not send a 500 to others (@meowgorithm)
  • 2bb52564f2ad9cec0174f2a5c74cadae98d508cd: fix(server): release pooled DB on test shutdown so Windows can clean temp dir (@meowgorithm)
  • c8d0244049301ccfe389eacde883d4504d76de07: fix(ui): properly render model name in summarize (@taciturnaxolotl)
Docs
  • f9676ebeffd4ef5476f09dfd289f82b4c8efbcb6: docs: describe how Crush shares a workspace across clients (@meowgorithm)
Other stuff
  • 3c981c192fd23879a2e8531391e0971b3d1ecfd0: chore(db): log lock metadata write failures and explain lock file lifetime (@meowgorithm)
  • 3f9bb5e07c4b9e358702e97ebdb241d803334ff8: chore: auto-update files (@charmcli)
  • 37802798cf224208d226d3a29e9eb08927d8f04f: chore: auto-update files (@charmcli)
  • b20b2328eaddd9f193fa97011cf007a7139b48ae: chore: gofumpt (@meowgorithm)

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

Tuesday, May 26May 26, 2026

Release v0.73.0

Crush v0.73.0

Follow-up to Bedrock Last Friday, we shipped some changes for Bedrock to make it work by default for most users. Before that release, your AWS_REGION or AWS_DEFAULT_REGION could instruct Crush to try to reach Bedrock at a different region, and it could not…

Read full notes

Follow-up to Bedrock

Last Friday, we shipped some changes for Bedrock to make it work by default for most users.

Before that release, your AWS_REGION or AWS_DEFAULT_REGION could instruct Crush to try to reach Bedrock at a different region, and it could not work at all because most models are only available in very few regions. Because it was not clear why Crush was not working for Bedrock, this could be confusing to users. We then enforced us-east-1 for region because that one should work for everyone.

Bedrock Europe 🇪🇺

Since then, a few of you reached out telling us that models are also available on eu-west-1, and some users in Europe might prefer or need (due to employer restrictions) to use an European region.

Starting on this release, you'll see two providers if you search for "bedrock":

  • Bedrock US: will use us-east-1
  • Bedrock Europe: will use eu-west-1
Screenshot 2026-05-26 at 14 45 31

That's all for today. Stay tuned for the next releases!

Changelog

New!
  • ae20f1f65175e4b1c2b9bbfc3f9b556a1589b7ec: feat: add aws bedrock europe (#3016) (@andreynering)
Fixed
  • 1db7629b199a8950078caf14f924b07e6460f7dd: fix(ui): improve model changed notification (#3015) (@andreynering)

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

Monday, May 25May 25, 2026

Release v0.72.0

Crush v0.72.0

QoL Release Hey all! Some of you in the US 🇺🇸 are enjoying a Holiday, but we're still here shipping stuff. Today's release ships some Quality of Life :tm: improvements. Better user-invocable skill commands Skills can have user-invocable commands, and we'll…

Read full notes

QoL Release

Hey all! Some of you in the US 🇺🇸 are enjoying a Holiday, but we're still here shipping stuff.

Today's release ships some Quality of Life :tm: improvements.

Better user-invocable skill commands

Skills can have user-invocable commands, and we'll now also show a description if available. Easier to see what's that command about.

image

Scrollbar in the sessions list

In the last released we added a scrollbar to the models list dialog. The same very scrollbar is not also in the sessions list dialog. It's a small addition, but really help navigating the list.

https://github.com/user-attachments/assets/e1cbab14-e3bc-4d91-881a-b50f4caed273

TODO expanded by default

The TODO list will be render expanded by default, unless your terminal height is too short. This is useful to see what's happening as the model works.

Want to toggle it? Just press ctrl+t to open or close it.

https://github.com/user-attachments/assets/62e7c7ee-41e9-43de-8a41-d926d4bbefbe

ctrl+y to toggle YOLO

Having to open the command palette to enable or disable YOLO can be inconvenint. You can now do that by just pressing ctrl+y.

https://github.com/user-attachments/assets/0b0f5794-72ee-4690-9403-7d7e48609563

That's all for today. Charm :cupid:

Changelog

New!
  • 55721653ceb67f04abd53c278ade01d05043bf7d: feat(skills): add descriptions to skill picker and use attachements (@taciturnaxolotl)
  • 2b941aaa0d3b983e0c64e92b3b04a0e4ba855747: feat(ui): add ctrl+y keybinding to toggle yolo mode (@andreynering)
  • 092ac3e73a100d3ae7ec7fc16306de3fe5476f31: feat(ui): add scrollbar to sessions dialog (#3005) (@andreynering)
  • ba692cc55a73e027b9ea5805bac63fd8b3936400: feat(ui): auto-expand pills when terminal height is sufficient (@andreynering)
  • 8ad3f5bf3a9fc482c339aad5069569988f8fe45d: feat(ui): show notification when toggling yolo mode (#3008) (@taigrr)
Fixed
  • 66795b1ec57abeef4ecff1f4cf3e8b040687427c: fix(tests): fix flaky async windows test (@taciturnaxolotl)
  • db9d9399d31aa883cb74f688d8dafc2f067188ce: fix(ui): only auto-expand pills once per session lifecycle (@andreynering)

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

Friday, May 22May 22, 2026

Release v0.71.0

Crush v0.71.0

Small feats, fixes, Bedrock and more We have quite a good number of things for a Friday. Let's take a quick look at them! Scrollbar The model list now got a scrollbar, so you can see how long the list is and where you are on it. It's a small addition, but nice…

Read full notes

Small feats, fixes, Bedrock and more

We have quite a good number of things for a Friday. Let's take a quick look at them!

Scrollbar

The model list now got a scrollbar, so you can see how long the list is and where you are on it. It's a small addition, but nice and useful.

Screenshot 2026-05-22 at 17 29 28

Token usage

Some providers do not report how many tokens were used in a request. In these cases, Crush wasn't showing the token usage or estimated cost in the sidebar.

@taoeffect added token and cost estimation when the provider doesn't report this. Now you'll have an idea on how fast you're burning tokens.

Bedrock

We made some changes to avoid some confusing when using AWS Bedrock.

Before, Crush was using whichever region you had set on AWS_REGION or AWS_DEFAULT_REGION variables. The problem is that most region have few models available, so you could be unable to use them if you had a different region set.

We're always using the us-east-1 region, which have all models available. This should make Crush work out-of-the-box with Bedrock without specific local region configuration.

If you have any feedback on Crush for Bedrock, reach out on our Discord or Slack communities.

Stream fixes

@ethanndickson contributed with two fixes on Fantasy that should fix some errors related to streaming.

Permission prompts

We tightned up permission prompts a bit to improve security, when the model wants to run Bash comments with pipes, redirection, etc. Crush will now always ask for permission in these cases.

Reasoning effort level fix

We fixed a bug to ensure Crush won't ever send a reasoning effort level when the model doesn't supports it. This should fix potential errors for a couple providers.

More client-server

More fixes to the experimental client-server architecture were merged.

You can opt-in to this mode with export CRUSH_CLIENT_SERVER=1.

That's all

There were more small fixes and improvements, but the list above is a good summary.

Enjoy your weekend (and Holiday for Americans) and see you next week! Charm :sparklers:

Changelog

New!
  • 96728b15d037f187424db63cd6bdb20a01fbe08f: feat(permissions): require a permission prompt for chained commands (@taciturnaxolotl)
  • 6716ef09fc0612e3f707469395546362922e0dc4: feat(skills): add support for user invocable skills (@taciturnaxolotl)
  • ce395837b7f584d025574fab7939fc37a445fae1: feat: render scrollbar for model list (dialog and onboarding) (#2978) (@andreynering)
Fixed
  • 83d2abbf0a62f8bda0cb4b5ef499eff11dd81a20: fix(agent): clear stale summary token counts (@taoeffect)
  • 2e9c65057b8ca5abc8aa54b21856b869c733d52c: fix(agent): correct fallback usage accounting (@taoeffect)
  • 6ed8852b621faff72fe3f791efdc41678b439b9e: fix(agent): estimate missing streamed usage (@taoeffect)
  • 74e6e378e37493440cb01c956ef6de7ebcde38e1: fix(agent): harden fallback usage accounting (@taoeffect)
  • 74b84f6968fde0d80562be9f31f56cbc8cf35cf7: fix(bedrock): enforce us-east-1 as region for bedrock (#2985) (@andreynering)
  • 56cf50adac921ae8cb57d894e7930f06cfc1e8d7: fix(db): keep SQLite temp files in memory (@taciturnaxolotl)
  • 841eec8f89335d0eebb8f334057a1a2ee0efb159: fix(models): fix sorting of hyper (@taciturnaxolotl)
  • 1811bec2cc6d7d595a9d1c9ff19dd9e239a41392: fix(prompts): tweak file reads to encourage more targetted reads (@taciturnaxolotl)
  • d025403923d4f2fc8523d962f5e9d51a854ac801: fix(server): display available skills in client (@meowgorithm)
  • 27a35c94cc1496bd4a2f5fdb4e398427815a4715: fix(server): support attachments in client-server mode (@meowgorithm)
  • 9595d1f073dde42e1749853688299a4bad19f496: fix(session): preserve estimated usage marker (@taoeffect)
  • 5d7797d0f1b37a1ccf19f5ab1e1c48c3598daa5d: fix(ui): add locking around markdown rendering (@neomantra)
  • 5b1b2b435cd805462e6c01fa6d3453bea0199166: fix(ui): guard divide-by-zero display error (@neomantra)
  • 2736e487cf511a686daf691d9135f9491d4ac865: fix(ui): mark estimated context usage (@taoeffect)
  • 4fc17ddcae6a37eb14f824f81b3befbcd1da03fd: fix(ui): preserve estimated usage percentage color (@taoeffect)
  • 1320fcf5ce10ce0b8ac0e2f3580ae3adf1da18cc: fix(ui): scroll to the properly select model (@taciturnaxolotl)
  • 2faa467ab08de94aaa7583836491c6d4f7fabcf8: fix: fix sometimes sending reasoning effort when it shouldn't (#2982) (@andreynering)
  • 6b312bee06bf3ca90ba587035a7287594b97e186: fix: potential data race on permissionService (#2964) (@mei2jun1)
  • 3250fef354eb7ebc40faaa0a1c4c5c9f37f0f6dc: fix: update fantasy with stream fixes (#2968) (@andreynering)
Other stuff
  • 8468c8c011095520a3b6eda23ee1d03c2e9eefc2: chore(tests): update golden files (@taciturnaxolotl)
  • 88e97a05a307e87fbddb25aa692d7be1ee906d1a: chore: auto-update files (@charmcli)
  • df3a04d19d8a43e4568c1dc89cd86ebe6c707424: chore: isolate store test (@taciturnaxolotl)

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

Monday, May 18May 18, 2026

Release v0.70.0

Crush v0.70.0

Alibaba, Better Retries, and Client-Server We're starting the week with some good stuff. Let's check them out! New Provider: Alibaba A new provider is available: Alibaba! Just open the model picker with ctrl+m, search for Alibaba and paste your API key.…

Read full notes

Alibaba, Better Retries, and Client-Server

We're starting the week with some good stuff. Let's check them out!

New Provider: Alibaba

A new provider is available: Alibaba! Just open the model picker with ctrl+m, search for Alibaba and paste your API key. Alternatively, you can set $ALIBABA_SINGAPORE_API_KEY.

Alibaba has a few regions, but we're starting with the main one: Singapore as the hot new models are available there, like the newer Qwens.

Screenshot 2026-05-18 at 14 52 17

Better Retries

Thanks to @processtrader, Crush is now a bit smarter on retries. Instead of just retrying on specific error codes (400, 500, etc), Crush will now also retry on network errors (in case you're offline for a second, or a DNS query failed, etc).

Hardening Client-Server Mode

Crush has an experimental/client server mode which can be used to extend Crush, operate more effectively with multiple sessions, and connect to remote Crush instances.

We’re using client/server more and more internally, so it's time to harden it. This release fixes some bugs that were blocking us from using it day to day.

If you want to try out client/server mode, Crush has an experimental client-server architecture refactor happening, currently available via:

export CRUSH_CLIENT_SERVER=1

That's it for today. Stay tuned for more soon! Charm :cupid:

Changelog

New!
  • 4882cbc015577578d61ac90b4393fa28ae2633c6: feat: add aliababa (singapore) provider (#2949) (@andreynering)
Fixed
  • 0c99e778d9d9fdf05606b33ec5dc666fdb89e06f: fix(auth): support oauth in client-server mode (@meowgorithm)
  • 9c35ee0141f5afb99f69cd912797d018d9681c9f: fix(server): recover from handler panics + return 500 (@meowgorithm)
  • 0bbc8a87e8695c5224d870df49f613191122c740: fix(ui): restore pills to-do in client/server mode (@meowgorithm)
  • a4befc299ab9b69647fd5dc3607b5fa79e67bd11: fix: retry on network errors (#2945) (@andreynering)
Other stuff
  • 45b1e634a5479297d94141ffc603a1d09f9b6326: chore: gofumpt project (@meowgorithm)
  • c433fd633a084c52f7efd0155454564135fa5330: perf: remove hot-path slog.Info from SSE event delivery (#2929) (@taigrr)

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

Friday, May 15May 15, 2026

Release v0.69.1

Crush v0.69.1

It’s Perf Time This release is all about juicin’ UI perf. We did a ton of work around it, and it should be particularly noticeable with long sessions, long messages, long, open-toggled thinking blocks, mouse selection, scrolling and stuff like that. We always…

Read full notes

It’s Perf Time

This release is all about juicin’ UI perf. We did a ton of work around it, and it should be particularly noticeable with long sessions, long messages, long, open-toggled thinking blocks, mouse selection, scrolling and stuff like that.

We always strive to make the Crush user experience top-notch, so if you notice any places where perf is suffering please let us know!

Have a great weekend, The Charm Team

Changelog

Fixed
  • 646a5053bd58635316bf960f3d8e5d4a0996a24b: fix(ui): keep tool spinners animating during long-running tasks (@meowgorithm)
Other stuff
  • 30f9c6ed55daf68b5ee5cc6a3f0fcebbf2559252: chore(ui): make spinner deterministic for testing (@meowgorithm)
  • 8370edb6910e3044f0e7e375685431110a3eac9c: perf(chat): cache the parts of an assistant message separately (@meowgorithm)
  • 771117cafeedffc8a9b5859503fc055bcd525d3e: perf(chat): cache the prefixed render of chat messages (@meowgorithm)
  • 77b6c38b0fb150d97dbce466f737d1217e5a7604: perf(chat): only render the chat lines that fit on screen (@meowgorithm)
  • 1c7ccfd7f78853dd86598eeef103f4ac0c29e8b2: perf(chat): reuse the rendered prefix of a streaming reply (@meowgorithm)
  • 43b986c8c00a81b83fcf0422d5334ad61ab046c8: perf(chat): show only the tail of long reasoning blocks when expanded (@meowgorithm)
  • 65f30a13430a93ef3f271adb3cee4b535ade3de6: perf(chat): skip re-parsing the rendered chat when nothing has changed (@meowgorithm)
  • 6b101f38600cd4e4b974ee56af3c9d2382cc2c43: perf(chat): skip re-rendering chat list items that have not changed (@meowgorithm)
  • 6938dedd6cde0378f428b2a90d1591f69dbce6eb: perf: batch streaming message updates (@meowgorithm)

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