4 min read

Crush: Charm's Good-Looking AI Coding Agent for the Terminal (GitHub, Scanned)

A polished terminal coding agent from Charm that works with any model, LSPs and MCP servers.

Crush logo
✅
Scan: safe. Nothing malicious. Pseudonymous usage metrics are on by default (CRUSH_DISABLE_METRICS=1 turns them off), and a project's crush.json can run shell commands when Crush loads it, so review the config before running Crush in a repository you did not write. Scanned Oct 22, 2026; the full report is below.

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.

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/crush

2. Or with npm (Windows: winget install charmbracelet.crush)

npm install -g @charmland/crush

3. Start it inside a project, then pick a model and paste a key with ctrl+l

crush

Provider 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

CheckResult
SecretsNone found.
Suspicious codeNone found.
Install-time code1 installer script
Committed binariesNone.
CI workflows9 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 hosts37 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 vulnerabilities2 advisories across 198 pinned packages: 0 critical, 0 high, 0 moderate, 1 low, 1 unrated. go.mod: 198 packages, 2 advisories.
Project hygieneHas automated dependency updates, CodeQL, licence file. Missing security policy, contributing guide.
OpenSSF ScorecardNot 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)
Worst known vulnerabilities (2 of 2)
AdvisorySeverityPackageSummary
GHSA-q7pp-wcgr-pffxlowgithub.com/disintegration/imaging@1.6.2Crash when processing crafted TIFF files
GO-2026-5932unknowngolang.org/x/crypto@0.58.0The golang.org/x/crypto/openpgp package is unmaintained, unsafe by design, and has known security issues
Workflows worth a look

By the numbers

Stars28.7K
Forks2,318
Contributors157
Commits4,330
Open issues306
Open pull requests244
Releases195
Latest releasev0.98.1
Licencecustom
Main languageGo
Project age1 year
Last pushOct 22, 2026
Tracked files1,260
Lines of code193.5K
Checkout size10 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.