v0.22.0

charmbracelet/crushv0.22.0Dec 8, 2025by github-actions[bot]

AI Summary

This release v0.22.0 of Crush introduces web search functionality powered by DuckDuckGo with agentic fetch, and adds support for images returned from tools like Playwright MCP. The release also includes multiple bug fixes, many contributed by first-time contributor @Gustave-241021.

Key Highlights

  • Web search via DuckDuckGo with agentic fetch to reduce context and keep agents focused
  • Image result support from tools like Playwright MCP for web agentic coding
  • Multiple bug fixes including faster shutdown, crash prevention, and text truncation fixes
  • First-time contributor @Gustave-241021 made several bug fix contributions
  • Fixed nil pointer dereference when updating agent model

New Features

  • Web search functionality using DuckDuckGo (#1565)
  • Image result support from tools like Playwright MCP (#1549)

Full Release Notes

# Web Search and Images

This release introduces two solid, completely different features. One is around web search and the other is around images. Let's get into it!

## Quack, Quack

Crush can now search the web, courtesy [DuckDuckGo](https://duckduckgo.com) 🦆. This is super cool, because you can just tell Crush what you’re looking for and it will reach for agentic fetch and get to work! Agentic fetch is especially good here because it hides the search-related context from the main model, reducing the context in the your main session and keeping the agent focused.

<p><img src="https://github.com/user-attachments/assets/cbd58adb-9144-4fa9-a41d-8c8b4e056712" width="700"></p>



<details>
<summary>Here’s a detailed image what it looks like in action.</summary>
<img width="1024" src="https://github.com/user-attachments/assets/67a6ac7a-e439-4176-8ba1-4674db737a95" />
</details>


## Tools and Images

Crush now supports tools and MCPs that return images, such as [Playwright](https://github.com/microsoft/playwright-mcp), everyone’s fave webdev tool. This opens up lots of web agentic coding possibilities. Why look at images when computers can do it for you!

<p><img width="900" src="https://github.com/user-attachments/assets/d9d85c99-ba2c-4921-91dd-51d800b5a404" /></p>

<details>
<summary>Here's how it looks with Playwright</summary >
<img width="1024" src="https://github.com/user-attachments/assets/75bba252-04e0-41cb-9a38-f2728bb61c1b" />
</details>

## Gustave FTW

Also, many bug fixes were merged, many by a hot, new first time contributor @Gustave-241021! That you, Gustave for all the awesomeness! ✨ 

See ya next release! 💘

## Changelog
### New!
* db22f2f0a9dd1d340edd4546bb807e1d99524c59: feat: add web search (#1565) (@kujtimiihoxha)
* bbd0887700f277df7b6f76d4435f688995757923: feat: support image results from tools (#1549) (@kujtimiihoxha)
### Fixed
* 70a4fa178a7898e9f2e41077c59d5b55133b7c03: fix(list): cap rendered filterable list while keeping full search set (#1492) (@jamestrew)
* 95b9a4298e1a23c20a5023b41565c3d797530753: fix: faster shutdown (#1570) (@caarlos0)
* da5c2839d7a682e217cc443b9e54e2713c6eb3cb: fix: ignore mouse clicks when `isProjectInit` is active (#1561) (@Gustave-241021)
* 8ab8324be9bfa66240d3d30a22a0e1122c6c8a65: fix: prevent nil pointer dereference when updating agent model  (#1560) (@Gustave-241021)
* a0e1bf138ca9e8430e37cd405df5a166c24b2b6f: fix: update MultiEdit permission desc to reflect actual applied edits (#1564) (@Gustave-241021)
* edf63666b85386e757b8d5cbbd41d5dcefe65d61: fix: use visual width instead of byte length for text truncation (#1562) (@Gustave-241021)
* c65ec47d6c16d49f6a1661638c6cb6f2a38a3fb2: fix:prevent crash when pressing ctrl+f on model selector (#1573) (@Gustave-241021)
### Other stuff
* 31c221187af6f4a42ce1e6e91665c1576cd53e31: chore: fix fantasy version (@kujtimiihoxha)

---

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

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

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