Stability release
Another release, another list of fixes to make Crush better for you.
Advancements on the server-client arch
The experimental refactor into a server-client architecture got many fixes.
This is not ready for daily use, but if you're feeling adventurous it can be enabled with CRUSH_CLIENT_SERVER=1.
Mention gh and rg in system prompt if available
If gh or rg (ripgrep) are available in your system, they will be mentioned in the system prompt now. This will hint the model to use them for a better experience.
Thanks to @taigrr for contributing with this one!
Old system prompt removed
In past releases, we talked about how we shrinked the system prompt to save your tokens and make smaller models behave better.
You could still opt-in for the old prompt with CRUSH_SHORT_TOOL_DESCRIPTIONS=0, but that is now removed.
Thinking and reasoning level fixes
We fixed the thinking on/off toggle for some providers. In some case it wasn't being respected properly.
This should make all GitHub Copilot models work now. A few of them were erroring due to thinking or reasoning misconfiguration.
Also, thanks @johnjansen for fixing the reasoning effort level setting for Anthropic via AWS Bedrock!
Crushing on Android 🤖
We fixed a potential bug on Android where Crush could not always resolve DNS.
By the way, it's awesome to see that people love Crushing on the go!
Small sidebar render bug
Sometime files in the list could break into the next line. This is now fixed.
Fixed .crush dir location
In some edge-cases, Crush could create its .crush data directory in the wrong place, but that is now fixed.
This bug could affect, for example, Git worktrees.
That was a lot, but we're happy to be shipping!
See you in the next release.
Charm ✨
Changelog
New!
- 79b2d61: feat(fsext): stop upward lookup at a boundary directory (@meowgorithm)
- b223e24: feat(logs): add a log line for dropped events (@taciturnaxolotl)
- 303b153: feat(oauth): add logout command (#2838) (@taciturnaxolotl)
- 0c1014e: feat(prompts): extend templating system to more prompts (@taciturnaxolotl)
- efb3b03: feat(prompts): remove long prompt option (@taciturnaxolotl)
- 5ad8bee: feat(prompts): template prompts and add github and ripgrep info (@taciturnaxolotl)
- f6dc495: feat(responses): opt in specific copilot models to responses (@taciturnaxolotl)
- 959bf7e: feat(tools): create an allow list for MCP tools (#2800) (@BrunoKrugel)
Fixed
- c8379c3: fix(auth): add better atomic refresh for hyper (@taciturnaxolotl)
- 0490a8a: fix(bedrock): honor reasoning_effort for Anthropic-on-Bedrock models (#2887) (@johnjansen)
- c853a93: fix(config): always resolve the data directory to an absolute path (#2883) (@meowgorithm)
- e2e0bc0: fix(config): scope .crush discovery to the current repo (@meowgorithm)
- e112368: fix(config): scope crush.json discovery to the current repo (@meowgorithm)
- cc7d651: fix(config): use large model for small if not configured (#2873) (@taciturnaxolotl)
- 61ee2d2: fix(db): use connection pool to avoid corrupted writes (@taciturnaxolotl)
- a19dd58: fix(dns): fix tmux dns resolver (@taciturnaxolotl)
- 5569be6: fix(lint): require
exec.CommanadContextoverexec.Command(@meowgorithm) - bf5dd26: fix(paste): normalize windows newlines (@taciturnaxolotl)
- 02b783a: fix(permission): fix publish-before-lock race and use O(1) session permission lookups (@taciturnaxolotl)
- 9b8b888: fix(prompts): don't include ripgrep and gh prompts in testing (@taciturnaxolotl)
- 0585f49: fix(pubsub): raise default per-subscriber buffer (64 -> 4096) (@sven2718)
- 08c5c7d: fix(reasoning): enforce can reason from catwalk before sending reasoning_effor (@taciturnaxolotl)
- 8021114: fix(server): keep the spawned server alive after the parent exits (@meowgorithm)
- 9b366c3: fix(server): probe readiness over HTTP instead of statting the socket (@meowgorithm)
- d41c118: fix(server): serialize concurrent server spawns with a per-host lock (@meowgorithm)
- d17d61c: fix(server): spawn after stale shutdown + handle socket errors (@meowgorithm)
- 6f91b0c: fix(tools): switch bufio scanner for reader (#2884) (@taciturnaxolotl)
- 295a62d: fix(ui): calculation bug that would cause modified files to wrap (@meowgorithm)
- ed91948: fix(ui): regression in tool output in client/server mode (#2878) (@meowgorithm)
- 8e7451f: fix(ui): show custom skills reliably on startup (@ilgax)
- 0a2de47: fix: address thinking on/off toggle for provider (#2916) (@andreynering)
- 9e126c2: fix: detect stale server during development with BuildID (@taigrr)
- ea847f2: fix: make thinking on/off toggle work for deepseek provider (@andreynering)
- 3625ade: fix: render permission dialog content in client/server mode (#2877) (@meowgorithm)
Other stuff
- 651abb4: chore(golden): rerecord vhs (@taciturnaxolotl)
- 0485adc: chore(tests): update golden files (@taciturnaxolotl)
- 3413970: chore: auto-update files (@charmcli)
- 7b34700: chore: auto-update files (@charmcli)
- 4373f63: chore: fetch updated info from hyper (@andreynering)
- eb03b3b: fix(test,race): probe server health during the run, not after (@meowgorithm)
- dd1be0e: refactor(server): derive per-host cache dir from parsed host URL (@meowgorithm)
- b8989b9: refactor(skills): make coordinator the sole skill discovery publisher (@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.68.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.68.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.txtIf 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.txtDone! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.

