v0.55.0
charmbracelet/crushv0.55.0Apr 2, 2026by github-actions[bot]
AI Summary
Major release introducing built-in skills concept, crush-config skill, skill disabling, and experimental server-client architecture.
Key Highlights
- Built-in skills (crush-config)
- Skill disabling capability
- Experimental server-client architecture (CRUSH_CLIENT_SERVER=1)
- Swagger API docs
New Features
- Built-in skills system
- Crush-config skill for self-configuration
- Skill disabling via disabled_skills option
- Experimental server-client mode
Full Release Notes
# Builtin "Crush config" skill + an experimental thing
We have a couple new feats on this release. Let's check them out!
## Built-in "Crush config" skill
Starting on this release, Crush has the concept "built-in skills". Those are skill built in Crush, so you don't need to manually copy them to your machine or project.
For now we have a single one: "Crush config". Crush can now configure itself, so if you don't want to manually edit your `crush.json` config, you can just ask Crush itself to do it for you. You can ask it to add a custom providers, add a MCP, add a LSP, change a setting, etc.
## Disable skill
We also added the ability to disable skills, no matter if built-in, global or project skill. Just add this to your `crush.json`:
```json
{
"$schema": "https://charm.land/crush.json",
"options": {
"disabled_skills": ["crush-config"]
}
}
```
## Experimental server-client architecture
If you run Crush with `CRUSH_CLIENT_SERVER=1`, it'll now run via a brand new server-client architecture.
Keep in mind, though, this is ***VERY*** experimental! There are known bugs when using Crush in this mode. We'll be polishing it with time and only make it the default once it's stable.
Happy Easter!
Charm ✨
## Changelog
### New!
* 0f2e2f0526cdb2d46596b1cad927575e57f0402f: feat(server): initial implementation of Crush RPC server/client (@aymanbagabas)
* 2832d5277fe92dad9e577ba9cabadaf4535c4432: feat(skills): builtin skills + skill disabling + crush-config builtin (#2466) (@meowgorithm)
* 9a63da505a6a98fb3f7f8e36347b6e91785f4322: feat: add AppWorkspace implementation of Workspace interface gated behind CRUSH_CLIENT_SERVER env var (@aymanbagabas)
* 248d8b99c6f9332aa1b5a0f71b27d76011e83331: feat: add generated swagger docs and serve them in the server (@aymanbagabas)
* 6dcaab1195c72bd81581cd23511bac6d86fc377b: feat: add swagger api docs generation (@aymanbagabas)
* 1b37d55bb6f00810032f9d0330750a89e5914ea0: feat: send server client version info (@aymanbagabas)
### Fixed
* eb7ed4f97aa86330cd29e29b23cdcf82cc507b30: fix(client): add ListWorkspaces method to retrieve all workspaces from the server (@aymanbagabas)
* e410d7acd459b4ded2803766376fd0440dafe20e: fix(server): encode sessions in proto format (@aymanbagabas)
* bc383d98359b53b291eb2154289e098e1cfe15a3: fix(server): log to stderr if it's a terminal (@aymanbagabas)
* 344eb3223b01d7d8e4c88e135bc20c5c0b550777: fix: ensure proper resource cleanup and add retry logic for workspace creation (@aymanbagabas)
* 65974bb4ea1c57ba942caee8e7748b67446d3487: fix: setup logging in server and client commands (@aymanbagabas)
* 2182fc469cdccc517550233d00101bcc7918678d: fix: update UI tests to use test workspace (@aymanbagabas)
### Other stuff
* 40c426a95088174708be1d97d0f5bb1e48855427: chore: add a workaround for slog calls in config.Load leaking to stderr (@aymanbagabas)
* 7572ce1f0f2b9d1d02258d11a051c9ce1f75a3f7: chore: auto-update files (@charmcli)
* de04fc21cf1202bf4a26b5d6c80f58dd49835fd9: chore: auto-update files (@charmcli)
* ed716339ab8354be265c6bb2ddaf7e6b38e81806: ci(lint): fix yet another lint issue (@andreynering)
* 33863b10c24b8c59798349970989840c529d2b15: refactor(server): move agent, session, permission, and event logic to backend package (@aymanbagabas)
* 206aecfbfdc9adcb854f38d1addeb7db959032cd: refactor: centralize user config path in a single func `home.Config()` (#2542) (@andreynering)
* e44211db2573aeda9100334cfc76908f918ad0bc: refactor: migrate run and login commands to use client API instead of direct app access (@aymanbagabas)
* e3df84efb4067f61a0fcb8359308782ace5d9b1a: refactor: modernize (#2548) (@BrunoKrugel)
* 64f6cdf5602a75e83aeb521af8db3607b63cf6e7: refactor: rename Permissions.SkipRequests to Overrides().SkipPermissionRequests (@aymanbagabas)
* 7bb3a7ba97706a3bebfedcd364ce5ce6fc5d43a9: refactor: simplify LSP diagnostic counts retrieval (@aymanbagabas)
* 72251dd90681476e158a931069d5b078261c0323: refactor: update client methods to return proto types (@aymanbagabas)
* e70c8ba8f6dedd224ebaa712f374b9a54d10c669: refactor: use client and server for workspace access and management (@aymanbagabas)
---
<details>
<summary>Verifying the artifacts</summary>
First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.55.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.55.0/checksums.txt.sigstore.json) files, for example, with `wget`:
```bash
wget 'https://github.com/charmbracelet/crush/releases/download/v0.55.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.55.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).