v0.77.0

charmbracelet/crushv0.77.0Jun 14, 2026by github-actions[bot]

AI Summary

Adds user-level context files and named hooks, while fixing client-server mode socket locations and addressing crashes in Lip Gloss/Glamour.

Key Highlights

  • Support for user-level context files (`~/.config/AGENTS.md`)
  • Named hooks for easier identification in the CLI
  • Fixed client-server mode socket cleanup and location (XDG_RUNTIME_DIR/TMPDIR)
  • Fixed crashes by bumping Lip Gloss and Glamour dependencies

New Features

  • User-level context files
  • Named hooks
  • Client-server socket fixes

Full Release Notes

# Global context, better commit messages…and you

It's been a bit! There’s lots of good stuff in this release, so let’s get right to it.

## Global context

Want Crush to always call you Shirley? Or maybe you want it to default to Jujutsu? This is now a piece of cake with user-level context files thanks to @Amolith.

If you create `~/.config/AGENTS.md` or `~/.config/crush/CRUSH.md`, Crush will reference it on session start just like your usual project-level `AGENTS.md` and `CRUSH.md`. Nice!

## Crashes? Not on Kieran’s watch.

Kieran, otherwise known as @taciturnaxolotl, is fast. Really fast. The other day Crush crashed for him, he honed in on two bugs in [Lip Gloss](github.com/charmbracelet/lipgloss) and [Glamour](github.com/charmbracelet/glamour), and patched them before we could say, "Don’t panic!" Thanks, Kieran!

## Better commit messages and PR descriptions

You know what drives us crazy? When LLMs write overly-technical commit messages and PR descriptions that reference obscure parts of the code. Commit messages and PRs should be understandable to readers unfamiliar with the codebase.

This PR improves the system prompt so LLMs author clearer, more understandable commit messages for human beings.

## Named hooks

Thanks to contributor @BrunoKrugel, you can now name your hooks, making them easier to identify in the CLI.

```jsonc
{
  "hooks": {
    "PreToolUse": [
      {
        "name": "Mr. Hot Hook",
        "matcher": "bash",
        "command": "./hooks/my-hot-hook.sh",
      },
    ],
  },
}
```

For more info see https://github.com/charmbracelet/crush/pull/2778.

## Client-server: socket fixes

Client-server mode isn’t quite ready for prime time yet, but many of us are using it day-to-day regardless. One of the coolest things about client server mode is that it runs over unix domain sockets (which absolutely rock) and named pipes on Windows. This release fixes two bugs around that:

* Stale sockets are now cleaned up on startup, allowing Crush to run properly
*  On unix systems sockets now live in the places they actually belong: `$XDG_RUNTIME_DIR` on Linux and `$TMPDIR` on macOS, rather than `/tmp`.

Try out client-server mode with `CRUSH_CLIENT_SERVER=1`.

## See u soon

Thanks for all the positive feedback about Crush. We ❤️ you!

Charm

## Changelog

### New!
* 6242e4f47743190fe60a27ba881ba3d6a9b36deb: feat(config): load user-level context files (@Amolith)
* 021e3773a63366a1970563543e694c36c6bb6e38: feat(hooks): add name field to hooks (@BrunoKrugel)

### Fixed
* 7c9f4bbb647a2c642607bd921c2c35bb12f226e2: fix(server): clean up stale sockets + correct socket location (#3095) @meowgorithm 
* 3e6f95eb2409f5187053d337e6e48dc810b04539: fix: address potential indentation on commit messages trailings (#3106) (@andreynering)
* e4c82db68f8e9fb0ddd0c8d188c44a623042354b: fix: bump lipgloss to v2.0.4 and glamour to v2.0.1 to fix crashes (@taciturnaxolotl)
* aad8cbad258484dba2dc416832dce9a9a589a2f5: fix(bash/git): improve git commit and PR message standards (#3052) (@meowgorithm)

### Docs
* aadb7e7932a819b184317fbde074ed6bd15be7b6: docs(hooks): add name field (@taciturnaxolotl)

---

<details>
<summary>Verifying the artifacts</summary>

First, download the [`checksums.txt` file](https://github.com/charmbracelet/crush/releases/download/v0.77.0/checksums.txt) and the [`checksums.txt.sigstore.json` file](https://github.com/charmbracelet/crush/releases/download/v0.77.0/checksums.txt.sigstore.json) files, for example, with `wget`:

```bash
wget 'https://github.com/charmbracelet/crush/releases/download/v0.77.0/checksums.txt'
wget 'https://github.com/charmbracelet/crush/releases/download/v0.77.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).