Small feats + more
We have a good number of fixes and enhacements in this release. Note how many contributors helped with this release! It's exciting to see the Crush community grow. 🚀
Better init prompt
@Amolith made some nice improvements on the prompt to generate a AGENTS.md file for new projects.
Custom Git ignore file support
If you happen to have a custom global ignore file for Git (core.excludesfile), Crush will now respect that when listing files. Thanks @mavaa for implementing this!
Skills on crush session
crush session show and crush session last commands will now show a header with the all skills used by the session.
LSP Auto-Start setting
Setting options.auto_lsp to false on your config was supposed to prevent LSP servers from booting automatically, unless you had manually configured them. There was a bug with this setting, but @BrunoKrugel helped us by fixing it.
UI fix for non-image models
@huaiyuWangh contributed with this fix. If the model you're using doesn't support images, Crush will now hide the help items in the bottom with the keybinding to attach images.
No more .crush/.gitignore on your git diff
We recently changed the content of this file to not ignore .crush/skills/* by default, but a small annoying side-effect made that file itself visible by Git. We're now also ignoring the .crush/.gitignore file itself again.
Keep crushing!
Charm 💘
Changelog
New!
Fixed
- cda2719: fix(commands): add timeout context for MCP prompt retrieval (#2517) (@iceymoss)
- 664aae7: fix(csync): use pointer receiver for JSONSchemaAlias (#2521) (@huaiyuWangh)
- 8e743cb: fix(event): prevent panic on non-string telemetry keys (#2502) (@iceymoss)
- 3412194: fix(ls): respect git's
core.excludesfileconfig if set (#2314) (@mavaa) - 0e640a1: fix(lsp): respect lsp auto start config (#2487) (@BrunoKrugel)
- 5cf6e5a: fix(taskfile): fix syntax error on task
run:onboarding(@andreynering) - f416931: fix: conditionally show image keybindings based on model support (#2522) (@huaiyuWangh)
- 42c8bcc: fix: do not commit
.crush/.gitignore(#2531) (@andreynering) - 73c2a9d: fix: skip non-existent command dirs instead of creating them (#2534) (@majiayu000)
Other stuff
- 2bcc97b: chore(lint): fix some small lint warnings (#2488) (@BrunoKrugel)
- 8b30fad: chore: auto-update files (@charmcli)
- b68823b: feat(cli/session): show skill metadata (#2541) (@meowgorithm)
- d161cbc: feat(init-cmd): mention progressive disclosure (#1786) (@Amolith)
- 97c9f4b: refactor(ui): replace hardcoded cursor offset with style-based calculation (#2530) (@huaiyuWangh)
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.54.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.54.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.

