Company

Charm profile

Everything Charm ships that we track: 1 AI coding tool. Last shipped 11d ago.

Tools tracked
1
Ships · 90 days
19
Last shipped
11d ago
GitHub stars
29k

Products

Charm tools

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)

…

Directory

Other companies