Crush is an AI coding agent for the terminal from Charm, the team behind popular command line tools such as Bubble Tea, Glow and Gum. Start crush in a project and you get a full-screen chat that can read and edit your files, run commands and search the codebase, asking for permission before each tool call unless you allow it ahead of time. It looks the part, with Charm's styling, themes and a layout that works in any terminal.
Its practical strengths are flexibility and context. You can use models from Anthropic, OpenAI, Google, OpenRouter, Groq, Bedrock, Azure, local servers or any OpenAI or Anthropic compatible API, and switch model mid-session while keeping the conversation. It talks to language servers (LSPs) for the same code intelligence your editor has, connects MCP servers over stdio, HTTP or SSE, keeps several sessions per project, and runs on macOS, Linux, Windows, Android and the BSDs. Charm also offers its own subscription model service, Hyper, with a free tier.
It is written in Go, with about 28,700 stars and 157 contributors, at v0.98.1 when scanned. The licence is FSL-1.1-MIT: source available with a non-compete clause, becoming MIT two years after each release.
- Repository: github.com/charmbracelet/crush
- Licence: custom (Other)
- Language: Go. Stars: 28.7K. Forks: 2,318. Last push: Oct 22, 2026.
- Scan: safe, Oct 22, 2026, commit 17fccc0
Who it is for
Developers who live in the terminal and want an agent that matches their tools, people who switch between model providers, and Neovim or Helix users who want LSP-aware help outside an IDE.
Getting started
1. macOS or Linux (Homebrew)
brew install charmbracelet/tap/crush2. Or with npm (Windows: winget install charmbracelet.crush)
npm install -g @charmland/crush3. Start it inside a project, then pick a model and paste a key with ctrl+l
crushProvider keys can also come from environment variables such as ANTHROPIC_API_KEY or OPENAI_API_KEY. The --yolo flag skips every permission prompt; keep it for throwaway environments.
Safety scan
We cloned charmbracelet/crush at commit 17fccc0 on Oct 22, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.
- No secrets, no suspicious code patterns, no committed binaries and no install hooks across 1,260 files and about 193,000 lines of Go.
- The README is explicit on two points. Usage metrics tied to a device hash are collected, never prompts or responses, and CRUSH_DISABLE_METRICS=1 or DO_NOT_TRACK=1 stops them. And crush.json and crushrc are trusted code: any $(...) in the config runs at load time, so launching Crush inside a cloned repository with a hostile config would run its commands.
- Only 2 known advisories across 198 Go modules: a low-severity crash on crafted TIFF files in an imaging library, and a notice that Go's old openpgp package is unmaintained.
- 9 workflows. Two use pull_request_target, for the CLA check and labelling, and neither checks out the pull request; all 17 third-party actions are pinned to commits. Dependabot and CodeQL on, licence present; no security policy.
- The licence, FSL-1.1-MIT, lets you use and modify Crush freely but not offer it as a competing product; each version becomes MIT after two years.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | None found. |
| Suspicious code | None found. |
| Install-time code | 1 installer script |
| Committed binaries | None. |
| CI workflows | 9 workflows. 2 use pull_request_target, none check out the pull request head. 0 of 17 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 37 distinct hosts referenced from source; most often api.openai.com, mcp.example.com, api.custom.com, github.com. No URLs to bare IP addresses. |
| Known vulnerabilities | 2 advisories across 198 pinned packages: 0 critical, 0 high, 0 moderate, 1 low, 1 unrated. go.mod: 198 packages, 2 advisories. |
| Project hygiene | Has automated dependency updates, CodeQL, licence file. Missing security policy, contributing guide. |
| OpenSSF Scorecard | Not scored: the project is not in Scorecard's weekly index. |
The raw findings
Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.
Installer scripts (1)
- scripts/run-labeler.sh, 13 lines
Worst known vulnerabilities (2 of 2)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-q7pp-wcgr-pffx | low | github.com/disintegration/imaging@1.6.2 | Crash when processing crafted TIFF files |
| GO-2026-5932 | unknown | golang.org/x/crypto@0.58.0 | The golang.org/x/crypto/openpgp package is unmaintained, unsafe by design, and has known security issues |
Workflows worth a look
- .github/workflows/cla.yml: pull_request_target
- .github/workflows/labeler.yml: pull_request_target
By the numbers
| Stars | 28.7K |
|---|---|
| Forks | 2,318 |
| Contributors | 157 |
| Commits | 4,330 |
| Open issues | 306 |
| Open pull requests | 244 |
| Releases | 195 |
| Latest release | v0.98.1 |
| Licence | custom |
| Main language | Go |
| Project age | 1 year |
| Last push | Oct 22, 2026 |
| Tracked files | 1,260 |
| Lines of code | 193.5K |
| Checkout size | 10 MB |
Lines by language: Go 176.2K, YAML 6,280, Markdown 4,712, JSON 4,371, SQL 593, CSS 538.
Questions
Is Crush free?
Yes, Crush itself is free to use, including at work. You pay for the model: your own API keys, a local model at no cost, or Charm's Hyper subscription, which has a free tier. The FSL licence only restricts offering Crush as a competing commercial product.
How does Crush compare with Claude Code or OpenCode?
All three are terminal coding agents. Claude Code is tied to Anthropic's models. Crush and OpenCode work with many providers and local models. Crush stands out for its LSP integration, Charm's interface polish and switching models mid-session; OpenCode has a client and server design and a larger plugin ecosystem.
Can Crush use a local model?
Yes. Add an OpenAI-compatible provider pointing at Ollama, LM Studio, llama.cpp or vLLM in crush.json. Agent work needs a capable model with tool calling and a long context, so small local models will struggle with larger tasks.
This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.
