v0.68.0
charmbracelet/crushv0.68.0May 14, 2026by github-actions[bot]
AI Summary
Stability release with extensive fixes including server-client architecture improvements, system prompt enhancements mentioning gh and ripgrep, thinking/reasoning fixes, and various bug fixes.
Key Highlights
- Removed old system prompt option (CRUSH_SHORT_TOOL_DESCRIPTIONS=0)
- gh and ripgrep mentioned in system prompt when available
- Thinking/reasoning toggle fixes for various providers
- Fixed Android DNS resolution in tmux
- Fixed .crush directory location in edge cases
- OAuth logout command added
- MCP tools allow list feature
Breaking Changes
- Removed CRUSH_SHORT_TOOL_DESCRIPTIONS=0 option - old system prompt no longer available
New Features
- OAuth logout command
- MCP tools allow list
- gh and ripgrep hints in system prompt
Full Release Notes
# 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 :robot: 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. <details><summary>Before</summary> <p> <img width="236" height="137" src="https://github.com/user-attachments/assets/abcf96da-c491-4347-9db1-f8290e203981" /> </p> </details> <details><summary>After</summary> <p> <img width="240" height="128" src="https://github.com/user-attachments/assets/568c7518-bae8-4f16-8547-96cbc8859d56" /> </p> </details> ## 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! * 79b2d6197e51d4c02de41e8d0e6f1caf589d0974: feat(fsext): stop upward lookup at a boundary directory (@meowgorithm) * b223e24ed8f65117f02bb2fafd1cf3184b731b21: feat(logs): add a log line for dropped events (@taciturnaxolotl) * 303b153b975786ac1cd156203cc622bd96f27ed5: feat(oauth): add logout command (#2838) (@taciturnaxolotl) * 0c1014e5f7465e09483716b4c3732d1e8af76c84: feat(prompts): extend templating system to more prompts (@taciturnaxolotl) * efb3b03390d40c41cf54a009230b8db3eac7072c: feat(prompts): remove long prompt option (@taciturnaxolotl) * 5ad8beee37a55c4d3b9e0137c3ed9960aad42063: feat(prompts): template prompts and add github and ripgrep info (@taciturnaxolotl) * f6dc495d97b10bdc8d0dcd0be6503285a54ba7f6: feat(responses): opt in specific copilot models to responses (@taciturnaxolotl) * 959bf7e289622a0870ae6894a9e9d07d7b9d64d7: feat(tools): create an allow list for MCP tools (#2800) (@BrunoKrugel) ### Fixed * c8379c306f3c13b14225106d70c87a8b89ce16ec: fix(auth): add better atomic refresh for hyper (@taciturnaxolotl) * 0490a8a6b48f7bd956a9a017f87549a0540c68a3: fix(bedrock): honor reasoning_effort for Anthropic-on-Bedrock models (#2887) (@johnjansen) * c853a939ef079d5e8b662df41f61fe7932d61628: fix(config): always resolve the data directory to an absolute path (#2883) (@meowgorithm) * e2e0bc093145650a45a1e663bc9674ea3542bea1: fix(config): scope .crush discovery to the current repo (@meowgorithm) * e1123687f01a02482d1d2e5e4c9b98ee5eab2074: fix(config): scope crush.json discovery to the current repo (@meowgorithm) * cc7d651a9e9304d13c581511038b889b61588b38: fix(config): use large model for small if not configured (#2873) (@taciturnaxolotl) * 61ee2d2e0e6fca03f13ef3b0c3bdce00ff67e205: fix(db): use connection pool to avoid corrupted writes (@taciturnaxolotl) * a19dd58171f507dee35b861220839c4b8e3bf319: fix(dns): fix tmux dns resolver (@taciturnaxolotl) * 5569be61a74dfe2c9d16805a133b84b8b1505ca7: fix(lint): require `exec.CommanadContext` over `exec.Command` (@meowgorithm) * bf5dd26e59741737bd359739249a67a304e4f1ef: fix(paste): normalize windows newlines (@taciturnaxolotl) * 02b783a380c074c934f1534226c989d03e1642a8: fix(permission): fix publish-before-lock race and use O(1) session permission lookups (@taciturnaxolotl) * 9b8b888efe7c237ad0f1248d317af30f18561c75: fix(prompts): don't include ripgrep and gh prompts in testing (@taciturnaxolotl) * 0585f498ba16b43902708aec87914fbd63c68e8d: fix(pubsub): raise default per-subscriber buffer (64 -> 4096) (@sven2718) * 08c5c7d8affa520f3508bb6e247f46c4e5140d36: fix(reasoning): enforce can reason from catwalk before sending reasoning_effor (@taciturnaxolotl) * 8021114b23ab5149fdb623bb44f61749ca7882bc: fix(server): keep the spawned server alive after the parent exits (@meowgorithm) * 9b366c36c3759181f58cde42d57845e2c99908d7: fix(server): probe readiness over HTTP instead of statting the socket (@meowgorithm) * d41c118511926aad5a5d78db7f86833e7964e59a: fix(server): serialize concurrent server spawns with a per-host lock (@meowgorithm) * d17d61ce2dc90fad83a99952f43a2e1d8f40a8ae: fix(server): spawn after stale shutdown + handle socket errors (@meowgorithm) * 6f91b0ca22110e4055b0818dae58027d55934c0b: fix(tools): switch bufio scanner for reader (#2884) (@taciturnaxolotl) * 295a62dc389c6a0fd7a9150a140a56b97b70f40f: fix(ui): calculation bug that would cause modified files to wrap (@meowgorithm) * ed91948fe4e0a12ddac53b77e02e2471e23d1afb: fix(ui): regression in tool output in client/server mode (#2878) (@meowgorithm) * 8e7451fc1e2c44523b5a52a288738839507fb9e4: fix(ui): show custom skills reliably on startup (@ilgax) * 0a2de47f0ed37a66ee2398ea2371dc9eb2ff6939: fix: address thinking on/off toggle for provider (#2916) (@andreynering) * 9e126c27dac80e0d754680eb6e1a24e9ba1ef38e: fix: detect stale server during development with BuildID (@taigrr) * ea847f28903fdfccec844f4be0522d7f9bffffd3: fix: make thinking on/off toggle work for deepseek provider (@andreynering) * 3625ade17104b8f07145229a3144bf2ba7912033: fix: render permission dialog content in client/server mode (#2877) (@meowgorithm) ### Other stuff * 651abb48aecf6a46e0557dd69d0ad1f399b2de9e: chore(golden): rerecord vhs (@taciturnaxolotl) * 0485adc4776f82c2b44a6fae30187e871ad487b8: chore(tests): update golden files (@taciturnaxolotl) * 3413970fee2b99ae6915c20f26fe50de72484b47: chore: auto-update files (@charmcli) * 7b34700a8fddcbe0fa28dae999bf04fe55d26443: chore: auto-update files (@charmcli) * 4373f63e2effda45468cde5a85b12ce9efb2627d: chore: fetch updated info from hyper (@andreynering) * eb03b3bb9396a5f0d92ebd5bf170adbb94e1bfb0: fix(test,race): probe server health during the run, not after (@meowgorithm) * dd1be0e0c12b39f774eae783ce0ca35cfd4d5917: refactor(server): derive per-host cache dir from parsed host URL (@meowgorithm) * b8989b964abf98e0e09b4c4c2f2af49ccc608f80: refactor(skills): make coordinator the sole skill discovery publisher (@taciturnaxolotl) --- <details> <summary>Verifying the artifacts</summary> First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.68.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.68.0/checksums.txt.sigstore.json) files, for example, with `wget`: ```bash 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`](https://github.com/sigstore/cosign): ```bash cosign verify-blob \ --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ --bundle 'checksums.txt.sigstore.json' \ ./checksums.txt ``` If the output is `Verified OK`, you can safely use it to verify the checksums of other artifacts you downloaded from the release using `sha256sum`: ```bash sha256sum --ignore-missing -c checksums.txt ``` Done! You artifacts are now verified! </details> <a href="https://charm.land/"><img alt="The Charm logo" src="https://stuff.charm.sh/charm-banner-next.jpg" width="400"></a> Thoughts? Questions? We love hearing from you. Feel free to reach out on [X](https://x.com/charmcli), [Discord](https://charm.land/discord), [Slack](https://charm.land/slack), [The Fediverse](https://mastodon.social/@charmcli), [Bluesky](https://bsky.app/profile/charm.land).