Crush
v0.91.2 open-sourceGlamourous agentic coding for all
# ~/.crushrc
provider add ollama --type ollama --base-url "http://localhost:11434/v1"
model add ollama/llama3.3 --name "Llama 3.3" --context-window 128000
permissions allow view edit
mcp add github \
--type http \
--url "https://api.githubcopilot.com/mcp/" \
--header Authorization "Bearer $GITHUB_TOKEN"
source "$XDG_CONFIG_HOME/local-overrides.sh"
# ~/.crushrc
option reset skill-path
if [[ $HOSTNAME == "workstation" ]]; then
option skill-path "$HOME/work-skills"
fi
# ~/.config/crush/.crushrc
provider add ollama --type ollama --base-url "http://localhost:11434/v1"
model add ollama/llama3.3 --name "Llama 3.3" --context-window 128000
permissions allow view edit
mcp add github \
--type http \
--url "https://api.githubcopilot.com/mcp/" \
--header Authorization "Bearer $GITHUB_TOKEN"
# ~/.config/crush/.crushrc
source "$XDG_CONFIG_HOME/squid-config.sh"
if [[ $HOSTNAME == "babysquid" ]]; then
option skill-path "$HOME/squid-skills"
fi
# ~/.config/crush/.crushrc
permissions deny bash
crush run --channels server:webhook 'Watch for build failures and summarize them'
crush stats --all
crush stats --crawl-dir ./src
crush stats --all
crush stats --crawl-dir ~/src
{
"options": {
"tui": {
"scrollbar": "always"
}
}
}
{
"providers": {
"ollama": {
"name": "Ollama",
"base_url": "http://localhost:11434/v1/",
"type": "ollama"
}
}
}
# In your Crush config (e.g. crush.jsonc):
{
"hooks": {
"PreToolUse": [
{
"name": "Mr. Hot Hook",
"matcher": "bash",
"command": "./hooks/my-hot-hook.sh"
}
]
}
}
CRUSH_CLIENT_SERVER=1 crush
export CRUSH_CLIENT_SERVER=1
crush
crush dirs -p
"api_key": "$(vault kv get my/secret/token)"
{
"providers": {
"my-favorite-provider": {
"flat_rate": true
}
}
}
{
"options": {
"progress": false
}
}
export CRUSH_SHORT_TOOL_DESCRIPTIONS=1
crush
{
"options": {
"disabled_tools": ["crush_info", "crush_logs"]
}
}
{
"$schema": "https://charm.land/crush.json",
"options": {
"disabled_skills": ["crush-config"]
}
}
CRUSH_CLIENT_SERVER=1 crush
crush session show
crush session last
if [ "$CRUSH" = "1" ] || [ "$AI_AGENT" = "crush" ]; then echo 'Running inside Crush — skipping interactive prompts'; fi
crush run --continue
crush --session <session-id>
crush run --continue "tell me more"
crush run --session <session-id> "um, can you repeat that?"
CRUSH_NEW_UI=1 crush
crush stats
CRUSH_NEW_UI=1 crush
echo 'Summarize the diff below' | crush run --model 'openai/gpt-5.2-codex'
crush models | grep openai
CRUSH_NEW_UI=1 crush
CRUSH_DISABLE_DEFAULT_PROVIDERS=1 crush
crush login copilot
crush projects --json
crush run "Summarize this project" > summary.md
crush run "Rate my Pokémon collection" < Pokedex.md > Pokerating.md
# In your MCP server config block, add:
disabled_tools:
- bash
- write_file
crush login claude
{
"$schema": "https://charm.land/crush.json",
"providers": {
"my-custom-provider": {
"type": "openai-compat"
}
}
}
vim "$(crush dirs config)/crush.json"
rm -rf "$(crush dirs data)"
export CRUSH_DISABLE_PROVIDER_AUTO_UPDATE=1
crush update-providers /path/to/local-providers.json
{
"options": {
"disabled_tools": [
"bash",
"write",
"edit",
"multiedit",
"download"
]
}
}
crush --data-dir /path/to/project/.crush
{
"mcp": {
"example": {
"type": "http",
"url": "https://example.org/mcp/",
"timeout": 30
}
}
}
{
"lsp": {
"Go": {
"command": "gopls",
"filetypes": ["go", "mod", "sum", "work"]
}
}
}
{
"options": {
"tui": {
"diff_mode": "split"
}
}
}
crush --yolo
scoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git && scoop install crush
crush --debug && crush logs Summary
Crush is an open-source terminal-based AI coding assistant that connects to LLMs like Anthropic, OpenAI, Gemini, and Bedrock, giving them tools to read, write, and execute code in your project. It runs as a command-line tool installed via Homebrew, npm, Go, or a platform package manager, and it targets developers who want an AI pair-programmer working directly in their existing terminal workflow rather than an IDE plugin or web chat. It keeps separate sessions and context per project, uses Language Server Protocols for code intelligence, and extends through MCP servers and Agent Skills, with features like Bang Mode for running shell commands mid-session and auto-discovery of local models such as Ollama. Built by Charm, it sits in the growing category of terminal-native coding agents. First committed in 2025, it has drawn 142 contributors and 34 releases in the past year, the latest just three weeks ago.
Glamourous agentic coding for all
What Crush answers
Do I need to run my own infrastructure to use this, or does it work with local models too?
it runs as a single terminal binary talking to a hosted or local LLM endpoint, and can auto-discover local runtimes like Ollama, LMStudio, LiteLLM, or MLX without manual model setup
Can I control what the model is allowed to do to my system?
shell commands with pipes or redirection require a permission prompt, and MCP tools can be restricted to an allow list so the model can't invoke anything outside it
How does it share context across a large or multi-package codebase?
it discovers skills from the git root so a monorepo's packages can share the same skill definitions, and it also loads a user-level context file at session start regardless of project
What happens if my session drops or I want to run more than one at once?
an experimental client-server mode decouples prompts from any single client connection, letting multiple sessions or remote connections attach independently
Will switching providers mess up my billing or cost tracking?
a flat-rate config option lets subscription-based providers skip per-token cost calculation, avoiding misleading zero-dollar charges being reported
Can I run shell commands without leaving my coding session?
typing a bang prefix runs the command inline with streamed real-time output the model can see, and running commands can be cancelled mid-execution
Examples
Command line
No option matches that search.
| option | found in | since | description |
|---|
No option matches that search.
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Release history
- v0.91.2
Crush v0.91.2 adds three new Hyper models and automatic sessionless MCP support for GitHub MCP.
└──▷ GET THIS VERSION$ git clone --branch v0.91.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.91.2


- ›Adds automatic
"sessionless": truesupport for the GitHub MCP server, restoring compatibility without requiring manual config. - ›Adds three new models to the Hyper provider:
Qwen3.8-Flash,Qwen3.8-27B, andQwen3.8-2.4T-A95B.
- ›Adds automatic
- v0.91.0
Crush v0.91.0 adds text selection with keyboard/mouse shortcuts and mouse support in the session picker.
└──▷ GET THIS VERSION$ git clone --branch v0.91.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.91.0


- ›Adds text selection in the prompt editor via shift+arrow keys or click-and-drag, with
ctrl+shift+ato select all,ctrl+shift+cto copy,ctrl+shift+xto cut, andctrl+shift+vto paste. - ›Adds mouse wheel scrolling, single-click to select, and double-click to open in the session picker.
- ›Adds text selection in the prompt editor via shift+arrow keys or click-and-drag, with
- v0.89.0
Crush v0.89.0 adds bash syntax highlighting, ctrl+end jump-to-bottom, and session ID on exit.
└──▷ GET THIS VERSION$ git clone --branch v0.89.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.89.0
- ›Adds
ctrl+endkeybinding to jump to the bottom of the chat and enable follow mode so new messages auto-scroll. - ›Displays a session ID splash screen on exit, so you can quickly resume the last session on next launch.
- ›Adds syntax highlighting to bash commands shown when Crush executes via the Bash tool, improving legibility.
- ›Strips redundant
cd-to-projectprefix from Bash tool command display to reduce visual noise.
- ›Adds
- v0.89.0
Crush v0.89.0 adds session-resume hints on exit, bash syntax highlighting,
ctrl+endchat follow, and session model restore.└──▷ GET THIS VERSION$ git clone --branch v0.89.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.89.0


- ›Adds
ctrl+endkeybind to jump to the bottom of the chat and re-enable auto-follow as new messages stream in. - ›Displays a splash screen on exit with the session ID and the
crush -s <id>command needed to resume the session. - ›Adds bash syntax highlighting to the display of commands Crush executes via the Bash tool, improving legibility of long shell invocations.
- ›Strips redundant
cd-to-projectprefixes from Bash tool command display, reducing visual noise in the UI.
- ›Adds
- v0.88.0
Crush v0.88.0 introduces bash-based
.crushrcconfig,permissions deny,option reset, and improved AWS Bedrock SSO re-auth.└──▷ GET THIS VERSION$ git clone --branch v0.88.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.88.0
└──▷ USE ITBootstrap a full Crush environment from a dotfiles repo, with a machine-specific override sourced from a gitignored file.# ~/.crushrc provider add ollama --type ollama --base-url "http://localhost:11434/v1" model add ollama/llama3.3 --name "Llama 3.3" --context-window 128000 permissions allow view edit mcp add github \ --type http \ --url "https://api.githubcopilot.com/mcp/" \ --header Authorization "Bearer $GITHUB_TOKEN" source "$XDG_CONFIG_HOME/local-overrides.sh"
Apply machine-specific skill paths usingoptionandoption resetwith hostname conditionals.# ~/.crushrc option reset skill-path if [[ $HOSTNAME == "workstation" ]]; then option skill-path "$HOME/work-skills" fi- ›Adds
.crushrcbash-based configuration file, replacing and coexisting with the legacy JSON config, supportingprovider add,model add,permissions allow,permissions deny,mcp add,option,source, and conditional shell logic for machine-specific overrides. - ›Adds
permissions denycommand in.crushrcto explicitly hide specific tools from the agent. - ›Adds
option resetcommand in.crushrcto wipe shell config list options. - ›Adds
provider addandmodel addas verb-first shell config builtins for registering providers and models from.crushrc. - ›Adds
mcp addandmcp removeas verb-first shell config commands configurable from.crushrc, including--type,--url, and--headerflags for HTTP MCP servers.
+7 moreshow less
- ›Adds
hook addandhook removeas verb-first shell config commands in.crushrc. - ›Adds
lsp addandlsp removeas verb-first shell config commands in.crushrc. - ›Exposes
CRUSH_VERSIONenvironment variable to.crushrcshell config scripts. - ›Adds a local
.crushrcoverride that takes precedence over the globalcrush.sh, enabling per-machine config layering. - ›Adds automatic token refresh and re-authentication UX for AWS Bedrock SSO sessions when tokens expire.
- ›Adds
provider-modelbuiltin to.crushrcfor defining provider-specific model entries. - ›Adds top-level environment variable application on startup via
crushrcconfig.
- ›Adds
- v0.88.0
Crush v0.88.0 ships
.crushrcbash-based config with new builtins for providers, models, MCPs, hooks, LSPs, and permissions└──▷ GET THIS VERSION$ git clone --branch v0.88.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.88.0
└──▷ USE ITConfigure a local Ollama provider and model, auto-approve read/edit tools, and add a GitHub MCP server via HTTP — all in a single.crushrcfile.# ~/.config/crush/.crushrc provider add ollama --type ollama --base-url "http://localhost:11434/v1" model add ollama/llama3.3 --name "Llama 3.3" --context-window 128000 permissions allow view edit mcp add github \ --type http \ --url "https://api.githubcopilot.com/mcp/" \ --header Authorization "Bearer $GITHUB_TOKEN"
Apply machine-specific config conditionally and pull in a separate file kept out of version control.# ~/.config/crush/.crushrc source "$XDG_CONFIG_HOME/squid-config.sh" if [[ $HOSTNAME == "babysquid" ]]; then option skill-path "$HOME/squid-skills" fiBlock a specific tool from ever being offered to the agent, usingpermissions denyin.crushrc.# ~/.config/crush/.crushrc permissions deny bash
- ›Adds
.crushrcbash-based configuration file, discovered and loaded alongside the existingcrush.json, enabling shell logic, conditionals, andsourceto include machine-specific overrides. - ›Adds
provider addandprovider remove(aliasrm) builtins to.crushrcfor registering custom providers, including--typeand--base-urlflags. - ›Adds
model addandmodel removebuiltins to.crushrcfor registering models with flags including--nameand--context-window. - ›Adds
mcp addandmcp removebuiltins to.crushrcfor configuring MCP servers, supporting--type http,--url, and--headerflags. - ›Adds
lsp addandlsp removebuiltins to.crushrcfor managing LSP server configuration.
+7 moreshow less
- ›Adds
hook addandhook removebuiltins to.crushrcfor managing agent hook configuration. - ›Adds
permissions allowandpermissions denybuiltins to.crushrcfor auto-approving or hiding tools from the agent. - ›Adds
option resetbuiltin to.crushrcto wipe list-type options back to their defaults. - ›Exposes
CRUSH_VERSIONenvironment variable to.crushrcscripts, enabling version-conditional configuration. - ›Supports a local
.crushrcfile as a per-directory override alongside the global config. - ›Adds AWS Bedrock SSO token-refresh UX: Crush now detects expired SSO tokens and presents a re-authentication prompt, then automatically retries the interrupted turn.
- ›Adds
sourcesupport inside.crushrcto load additional shell config files, enabling dotfiles-repo patterns with machine-specific.gitignored overrides.
- ›Adds
- v0.87.0
Crush v0.87.0 adds MCP OAuth 2.1, Claude Channels MCP extension support, and a system-wide config at
/etc/crush/crush.json.└──▷ GET THIS VERSION$ git clone --branch v0.87.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.87.0
- ›Adds
--channelsopt-in flag to enable MCP channel servers (Claude Channels MCP extension), allowing MCPs to push notifications to Crush on events. - ›Loads system-wide configuration from
/etc/crush/crush.json, enabling NixOS and multi-user deployments to share a common Crush config. - ›Supports OAuth 2.1 authorization for HTTP MCP servers (including SSE transport), unblocking MCPs that require OAuth.
- ›Detects the
claude/channelMCP capability and routes incoming channel messages through Crush's event broker. - ›LSP performance boost: filters LSP servers before searching
$PATH, significantly reducing CPU and memory usage in large repositories.
+1 moreshow less
- ›Bang mode performance boost: eliminates quadratic shell output rendering, improving streaming throughput.
- ›Adds
- v0.87.0
Crush v0.87.0 adds MCP OAuth 2.1, Claude Channels support, system-wide config at
/etc/crush/crush.json, and LSP/bang-mode perf boosts.└──▷ GET THIS VERSION$ git clone --branch v0.87.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.87.0
└──▷ TRY ITOpt a session into a Claude Channels-capable MCP server so it can push notifications (e.g. CI alerts) into your Crush session.$ crush run --channels server:webhook 'Watch for build failures and summarize them'
- ›Adds
--channels <server>:<name>persistent flag (works on bothcrushandcrush run) to opt individual sessions into Claude Channels MCP extension servers, enabling MCPs to push notifications into a running Crush session. - ›Adds system-wide configuration support: Crush now loads
/etc/crush/crush.jsonas a site-wide config file, improving NixOS and multi-user compatibility. - ›Adds OAuth 2.1 authorization for HTTP MCP servers — on a 401, Crush automatically runs a browser-based PKCE authorization-code flow, persisting tokens (mode
0600) to~/.config/crush/mcp-oauth-tokens.json; headless/SSH environments receive a printed authorization URL instead. - ›Adds SSE transport OAuth support alongside HTTP MCP OAuth, with metadata fixups and resource parameter stripping.
- ›Adds automatic event-stream reconnection in client mode when the connection to a Crush server drops.
+3 moreshow less
- ›Adds UI distinction between a lost server connection and an uninitialized agent.
- ›Improves LSP performance via pre-
$PATHserver filtering, significantly reducing CPU and memory usage in large repositories. - ›Improves bang-mode output streaming performance, eliminating quadratic rendering cost for shell command output.
- ›Adds
- v0.86.0
Crush v0.86.0 adds LSP rename/replace tools, scrollable sidebar, removable attachments, and
--all/--crawl-dirstats modes└──▷ GET THIS VERSION$ git clone --branch v0.86.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.86.0
└──▷ TRY ITUse the new--allflag with thestatssubcommand to get project-wide token/cost statistics across all sessions.$ crush stats --all
Use--crawl-dirto compute stats scoped to a specific directory tree.$ crush stats --crawl-dir ./src
- ›Adds
lsp_renameLSP tool — renames a symbol and all its references across the project, with automatic fallback to theedittool on LSP errors. - ›Adds
lsp_replace_symbolLSP tool — replaces, inserts before/after, or deletes an entire function, method, or class by name. - ›Adds
--alland--crawl-dirmodes to thestatssubcommand for broader project-wide statistics. - ›Adds scrollable sidebar with focus-based keyboard navigation:
l/rightarrow to focus sidebar,j/kor arrow keys to scroll,g/Gfor top/bottom,h/leftarrow to return to chat,tabto return to editor; also supports mouse-wheel scrolling when focused. - ›Adds clickable
Xremove button on attachment chips to delete attachments with the mouse.
+3 moreshow less
- ›Adds
ukeybinding in the OAuth dialog to copy the verification URL — useful when running Crush over SSH where automatic browser opening is unavailable. - ›Adds quit-dialog hint informing users they can skip confirmation by pressing
ctrl+ctwice. - ›Adds graceful recovery from mid-stream provider connection resets.
- ›Adds
- v0.86.0
Crush v0.86.0 adds LSP rename/replace tools, scrollable sidebar,
--all/--crawl-dirstats flags, and OAuth URL copy.└──▷ GET THIS VERSION$ git clone --branch v0.86.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.86.0



└──▷ TRY ITAggregate token/cost stats across every Crush project tracked in your install — useful for a weekly spend review.$ crush stats --all
Discover and aggregate stats from older projects in a directory tree that predate the projects.json registry.$ crush stats --crawl-dir ~/src
- ›Adds
lsp_renameLSP tool to rename a symbol and all its references across the project. - ›Adds
lsp_replace_symbolLSP tool to replace, insert before/after, or delete an entire function, method, or class by name. - ›Adds
--allflag to thestatssubcommand to aggregate usage stats from all known projects (sourced fromprojects.json). - ›Adds a scrollable sidebar with keyboard focus navigation:
l/rightarrow to focus,j/kto scroll,g/Gfor top/bottom,h/leftarrow to return to chat,tabto return to editor. - ›Adds mouse-wheel scrolling support to the sidebar when it is focused.
+5 moreshow less
- ›Adds a clickable
Xbutton on attachment chips to remove attachments with the mouse. - ›Adds
ukeybinding in the OAuth dialog to copy the verification URL to the clipboard, enabling authentication over SSH where the browser cannot open automatically. - ›Adds a hint in the quit dialog that pressing
ctrl+ctwice skips the confirmation entirely. - ›Adds graceful recovery from mid-stream provider connection resets so interrupted responses restart cleanly.
- ›Adds fancy diff view rendering for LSP tool operations.
- ›Adds
- v0.85.0
Crush v0.85.0 adds a first-class question tool with single/multi-choice, free-text, and yes/no forms, plus an elapsed-time timer and LM Studio vision support.
└──▷ GET THIS VERSION$ git clone --branch v0.85.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.85.0
- ›Adds a question tool supporting single-choice, multiple-choice, free-form text, and yes/no question types, with the ability to chain questions into forms — includes full mouse support, mouse scrolling, paste support in text areas, and keyboard shortcuts for yes/no.
- ›Adds an elapsed-seconds timer so you can see how long a running LLM task has been executing.
- ›Wires LM Studio vision capabilities to
SupportsImages, enabling image-input workflows with LM Studio models. - ›Auto-retries authentication transparently when it fails, via
OnAuthRefreshintegration.
- v0.84.0
Crush v0.84.0 adds session-affinity headers so supporting providers can pin cache to a replica.
└──▷ GET THIS VERSION$ git clone --branch v0.84.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.84.0
- ›Sends
x-session-affinityandx-session-idheaders (a PII-free session hash) to enable cache-pinning on supporting providers.
- ›Sends
- v0.81.0
Crush v0.81.0 adds a configurable chat scrollbar, herdr.dev agent status integration, and expandable tool-call names.
└──▷ GET THIS VERSION$ git clone --branch v0.81.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.81.0
└──▷ USE ITKeep the scrollbar always visible during long sessions instead of auto-hiding after 2 seconds.{ "options": { "tui": { "scrollbar": "always" } } }- ›Adds a scrollbar to the chat view, configurable via
options.tui.scrollbar(default,always, ornever). - ›Integrates with herdr.dev via a herdr socket, enabling agent status signaling (blocked/finished notifications).
- ›Enables expanding tool-call names in the UI for easier inspection of agent activity.
- ›Adds a scrollbar to the chat view, configurable via
- v0.80.0
Crush v0.80.0 adds auto-detection of local model context windows and a llamacpp provider enricher.
└──▷ GET THIS VERSION$ git clone --branch v0.80.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.80.0
- ›Automatically detects context window sizes for local model endpoints (llamacpp, omlx, lmstudio, litellm, ollama) instead of defaulting to zero.
- ›Adds a llamacpp provider enricher for richer local model integration.
- ›Logs provider warnings surfaced from tool/step results for better observability.
- v0.79.0
Bang Mode gains live output streaming, cancellation, copy support, and string-prefix launching in Crush v0.79.0
└──▷ GET THIS VERSION$ git clone --branch v0.79.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.79.0
- ›Streams output in real time as a long-running Bang Mode command executes, with a pending spinner while it starts.
- ›Supports cancelling a running Bang Mode command mid-execution.
- ›Enables copying the Bang Mode command result to the clipboard, with ANSI codes stripped.
- ›Allows prefixing a string with Bang Mode to launch a command directly from typed input.
- v0.78.0
Crush v0.78.0 adds bang mode for inline shell execution, local model auto-discovery, and a new Fireworks AI provider.
└──▷ GET THIS VERSION$ git clone --branch v0.78.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.78.0
└──▷ USE ITPoint Crush at a local Ollama instance and let it discover available models automatically instead of listing them manually.{ "providers": { "ollama": { "name": "Ollama", "base_url": "http://localhost:11434/v1/", "type": "ollama" } } }- ›Adds Bang Mode: type
!inside a session to run Bash commands directly, with output visible to the model for follow-up chat. - ›Enables auto-discovery of local models (Ollama, LMStudio, LiteLLM, MLX) from OpenAI-compatible endpoints — no manual model declarations needed.
- ›Adds Fireworks (fireworks.ai) as a supported AI provider.
- ›Improves clipboard support on X11 and Wayland:
xclip/xselno longer required, adds TIFF paste support, and Super+V /⌘+Vnow pastes images.
- ›Adds Bang Mode: type
- v0.77.0
Crush v0.77.0 adds user-level global context files and named hooks for easier hook management.
└──▷ GET THIS VERSION$ git clone --branch v0.77.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.77.0
└──▷ USE ITName a pre-tool-use hook so it's easy to identify in the CLI when multiple hooks are configured.# In your Crush config (e.g. crush.jsonc): { "hooks": { "PreToolUse": [ { "name": "Mr. Hot Hook", "matcher": "bash", "command": "./hooks/my-hot-hook.sh" } ] } }- ›Supports user-level global context files (
~/.config/AGENTS.mdor~/.config/crush/CRUSH.md) loaded automatically on session start. - ›Adds a
namefield to hook definitions, making individual hooks identifiable in the CLI.
- ›Supports user-level global context files (
- v0.76.0
Crush v0.76.0 adds monorepo skill discovery from git root and independent server prompts for the experimental client-server mode.
└──▷ GET THIS VERSION$ git clone --branch v0.76.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.76.0
- ›Discovers skills from the git root in monorepos, enabling skill reuse across packages in a single repo.
- ›Makes server prompts independent of individual client connections in the experimental client-server architecture.
- v0.74.0
Crush v0.74.0 adds SSH notifications, diff view for denied tools, and deeper client-server session sharing
└──▷ GET THIS VERSION$ git clone --branch v0.74.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.74.0
└──▷ TRY ITRun the experimental client-server mode to share a workspace across multiple terminal sessions.$ CRUSH_CLIENT_SERVER=1 crush- ›Adds diff view for denied tools so practitioners can inspect exactly what a tool was attempting before deciding to allow or block it.
- ›Supports notifications over SSH terminals, enabling alerts when running Crush on remote hosts.
- ›Adds configurable notification backend with bell support and a backend picker UI.
- ›Exposes an in-progress flag and connected-client count on session API responses, enabling richer monitoring of active sessions.
- ›Server now shares one workspace per directory across all connected clients, reducing duplication in multi-client setups.
+4 moreshow less
- ›Server broadcasts config changes to all connected clients in real time.
- ›Tracks which session each client is currently viewing, enabling per-client session awareness.
- ›Auto-closes permission prompts when another client in the same session has already responded.
- ›Refuses to open a data directory already in use by another Crush instance, preventing data corruption.
- v0.73.0
Crush v0.73.0 adds a dedicated AWS Bedrock Europe (eu-west-1) provider for EU-based users.
└──▷ GET THIS VERSION$ git clone --branch v0.73.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.73.0
- ›Adds a 'Bedrock Europe' provider that routes all requests to
eu-west-1, alongside the existing 'Bedrock US' (us-east-1) provider.
- ›Adds a 'Bedrock Europe' provider that routes all requests to
- v0.72.0
Crush v0.72.0 adds ctrl+y YOLO toggle, skill descriptions, session scrollbar, and auto-expanded TODO list.
└──▷ GET THIS VERSION$ git clone --branch v0.72.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.72.0
- ›Adds
ctrl+ykeybinding to instantly toggle YOLO mode (with on-screen notification) without opening the command palette. - ›Displays descriptions alongside user-invocable skill commands in the skill picker for easier discovery.
- ›Adds a scrollbar to the sessions list dialog for easier navigation of long session lists.
- ›Auto-expands the TODO list by default when terminal height is sufficient; toggle with
ctrl+t.
- ›Adds
- v0.71.0
Crush v0.71.0 adds user-invocable skills, pipe/redirect permission prompts, and a model-list scrollbar.
└──▷ GET THIS VERSION$ git clone --branch v0.71.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.71.0
- ›Adds support for user-invocable skills, letting users directly invoke defined skills from the chat interface.
- ›Requires a permission prompt whenever the model attempts to run Bash commands containing pipes, redirection, or other chained operators.
- ›Adds a scrollbar to the model selection list (dialog and onboarding) for easier navigation of long model lists.
- ›Defaults AWS Bedrock integration to the
us-east-1region, making all Bedrock models available out-of-the-box without local region configuration.
└──▷ BREAKING ON UPGRADE- !AWS Bedrock now always uses
us-east-1as the region, ignoring any value set inAWS_REGIONorAWS_DEFAULT_REGION.
- v0.70.0
Crush v0.70.0 adds Alibaba (Singapore) as a new AI provider and extends retries to cover network-level failures.
└──▷ GET THIS VERSION$ git clone --branch v0.70.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.70.0
└──▷ TRY ITEnable experimental client-server mode to support multiple sessions or remote Crush connections.$ export CRUSH_CLIENT_SERVER=1 crush- ›Adds Alibaba (Singapore) as a new model provider, including access to Qwen models, configurable via the model picker or
$ALIBABA_SINGAPORE_API_KEY. - ›Extends retry logic to cover network errors (e.g., transient offline states, DNS failures) in addition to HTTP error codes.
- ›Adds Alibaba (Singapore) as a new model provider, including access to Qwen models, configurable via the model picker or
- v0.69.0
Crush v0.69.0 adds a
-pflag and new styling to thedirscommand.└──▷ GET THIS VERSION$ git clone --branch v0.69.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.69.0
└──▷ TRY ITUse the new-pflag with thedirscommand to control directory path output.$ crush dirs -p
- ›Adds
-pflag to thedirscommand for additional directory output control. - ›Adds styling improvements to the
dirscommand output.
- ›Adds
- v0.68.0
Crush v0.68.0 adds an OAuth logout command, MCP tool allow-listing, and auto-hints for gh/ripgrep in the system prompt.
└──▷ GET THIS VERSION$ git clone --branch v0.68.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.68.0
- ›Adds
logoutcommand for OAuth sessions. - ›Adds an allow list for MCP tools, letting you restrict which tools the model can invoke.
- ›Automatically mentions
ghandrg(ripgrep) in the system prompt when they are available, hinting the model to use them. - ›Extends the prompt templating system to cover more prompt types.
- ›Removes the legacy long system prompt option (
CRUSH_SHORT_TOOL_DESCRIPTIONS=0no longer accepted).
└──▷ BREAKING ON UPGRADE- !The
CRUSH_SHORT_TOOL_DESCRIPTIONS=0opt-in for the old long system prompt is removed; there is no longer a way to restore the previous prompt.
- ›Adds
- v0.67.0
Crush v0.67.0 adds a built-in shell interpreter for hooks, shell expansion in config values, and a touch tool for empty file creation.
└──▷ GET THIS VERSION$ git clone --branch v0.67.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.67.0
└──▷ USE ITPull an API key from Vault at runtime so secrets never live in your Crush config file."api_key": "$(vault kv get my/secret/token)"
- ›Hooks now run via the built-in shell interpreter (mvdan/sh) by default, improving portability and Windows support; shebangs are still respected.
- ›Shell expansion now works in config values (e.g.,
"api_key": "$(vault kv get my/secret/token)") via the embedded interpreter, including MCP args, URLs, and LSP args/env. - ›New
writetool (viatouch) lets the model create empty files, gated by a permission prompt for paths outside the working directory.
└──▷ BREAKING ON UPGRADE- !The Assisted-by Git commit trailer format has changed: it was
Assisted-by: {modelName} via Crush <[email protected]>and is nowAssisted-by: Crush:{modelID}.
- v0.66.1
Crush v0.66.1 adds flat_rate provider config to skip per-token cost tracking for subscription-based providers.
└──▷ GET THIS VERSION$ git clone --branch v0.66.1 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.66.1
└──▷ USE ITSuppress cost tracking for a subscription provider so Crush doesn't report misleading $0.00 per-token charges.{ "providers": { "my-favorite-provider": { "flat_rate": true } } }- ›New
flat_rateprovider config option incrush.jsonlets you skip cost calculation for subscription-based providers where per-token billing doesn't apply.
- ›New
- v0.65.2
Crush v0.65.2 adds first-class support for Hyper, Charm's privacy-focused inference service, with credit balance shown in the sidebar.
└──▷ GET THIS VERSION$ git clone --branch v0.65.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.65.2
- ›Adds Hyper integration: Charm's new coding-focused inference service (private beta) is now a first-class provider in Crush.
- ›Displays remaining Hypercredits balance in the sidebar so you can track usage at a glance.
- v0.63.0
Crush v0.63.0 introduces PreToolUse hooks to intercept, deny, or rewrite tool calls before execution.
└──▷ GET THIS VERSION$ git clone --branch v0.63.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.63.0
- ›Adds
PreToolUsehook that runs before any tool call, enabling deny, halt, rewrite of bash commands, or silent side effects. - ›Introduces built-in
crush-hookskill to build, manage, and configure hooks from within Crush. - ›Supports Claude Code hooks for compatibility with existing hook scripts.
- ›Adds
- v0.62.0
Crush v0.62.0 cuts ~120k tokens/session with shorter tool descriptions and auto-renders diffs from any tool output.
└──▷ GET THIS VERSION$ git clone --branch v0.62.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.62.0
- ›Automatically detects and renders diff-formatted output from any tool (e.g. GitHub MCP server) with full diff UI, not just the built-in
edittool. - ›Short tool descriptions are now the default, saving ~120k tokens per session and improving behaviour of small/local models with limited context windows.
└──▷ BREAKING ON UPGRADE- !Short tool descriptions are now the default; sessions relying on the verbose system prompt will behave differently unless
CRUSH_SHORT_TOOL_DESCRIPTIONS=0is explicitly set (this opt-out may be removed in a future release).
- ›Automatically detects and renders diff-formatted output from any tool (e.g. GitHub MCP server) with full diff UI, not just the built-in
- v0.61.1
Crush v0.61.1 adds iTerm2 progress bar support with a
progresstoggle incrush.json.└──▷ GET THIS VERSION$ git clone --branch v0.61.1 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.61.1
└──▷ USE ITDisable the agent progress bar in iTerm2 (or any supported terminal) when you find it distracting during long-running tasks.{ "options": { "progress": false } }- ›Adds
options.progresskey tocrush.json(set tofalseto disable) to control the agent progress bar display. - ›Extends progress bar support to iTerm2, joining Ghostty and Rio as supported terminals.
- ›Adds
- v0.60.0
Crush v0.60.0 adds OpenAI-compatible endpoint support for the Hyper provider.
└──▷ GET THIS VERSION$ git clone --branch v0.60.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.60.0
- ›Supports OpenAI-compatible endpoint for the Hyper provider, enabling use of Hyper through standard OpenAI-compatible API tooling.
- v0.59.0
Crush v0.59.0 adds built-in jq support with a dedicated skill, skills discovery in the sidebar, and Rio Terminal progress bar feedback.
└──▷ GET THIS VERSION$ git clone --branch v0.59.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.59.0
- ›Adds built-in
jqas a bash builtin so agents can query JSON files without requiringjqinstalled on the host machine. - ›Includes a built-in
jqskill to instruct the model on how to invokejqduring agentic tasks. - ›Shows available skills in the sidebar and landing page for improved discoverability.
- ›Enables progress bar feedback when running inside Rio Terminal.
- ›Adds built-in
- v0.58.0
Crush v0.58.0 adds support for OpenCode Zen and OpenCode Go model providers.
└──▷ GET THIS VERSION$ git clone --branch v0.58.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.58.0
- ›Adds support for OpenCode Zen and OpenCode Go as model providers.
- v0.57.0
Crush v0.57.0 adds opt-in ~98% token savings via
CRUSH_SHORT_TOOL_DESCRIPTIONSandHYPER_API_KEYauth support.└──▷ GET THIS VERSION$ git clone --branch v0.57.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.57.0
└──▷ TRY ITOpt in to drastically shorter tool descriptions to slash token usage — especially useful on long sessions or when costs matter.$ export CRUSH_SHORT_TOOL_DESCRIPTIONS=1 crush- ›Adds
CRUSH_SHORT_TOOL_DESCRIPTIONSenv flag to reduce tool call description sizes by ~98%, saving an estimated 120K tokens per session. - ›Adds support for
HYPER_API_KEYenvironment variable for Hyper authentication. - ›The
crush_infotool now displays your attribution settings alongside other configuration details.
- ›Adds
- v0.56.0
Crush v0.56.0 adds crush_info and crush_logs self-diagnostic tools so the AI can inspect its own config and logs.
└──▷ GET THIS VERSION$ git clone --branch v0.56.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.56.0
└──▷ USE ITPrevent the model from ever reading your configuration or logs — useful in shared or locked-down environments.{ "options": { "disabled_tools": ["crush_info", "crush_logs"] } }- ›Adds
crush_infotool: exposes the final merged configuration to the model so it can self-diagnose provider, LSP, and MCP setup. - ›Adds
crush_logstool: surfaces Crush's own application logs to the model for in-session debugging. - ›Supports disabling either self-diagnostic tool via the
disabled_toolsconfig option to prevent the model from ever calling them. - ›Automatically opens the Hyper auth dialog on unauthorized errors, reducing manual intervention when credentials expire.
- ›Adds
- v0.55.0
Crush v0.55.0 adds a built-in self-configuration skill, skill disabling, and an experimental server-client architecture.
└──▷ GET THIS VERSION$ git clone --branch v0.55.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.55.0
└──▷ USE ITDisable the built-in crush-config skill (or any other skill) for a project that should not allow self-modification.{ "$schema": "https://charm.land/crush.json", "options": { "disabled_skills": ["crush-config"] } }Opt into the experimental server-client architecture to try the new RPC backend.$ CRUSH_CLIENT_SERVER=1 crush- ›Adds built-in 'Crush config' skill so Crush can configure itself — add providers, MCPs, LSPs, or change settings via natural language without manual JSON editing.
- ›Supports disabling any skill (built-in, global, or project) via the new
disabled_skillsarray incrush.json. - ›Introduces experimental RPC server-client architecture, enabled with the
CRUSH_CLIENT_SERVER=1environment variable. - ›Serves generated Swagger API docs from the server when running in server-client mode.
- v0.54.0
Crush v0.54.0 adds skill metadata to session commands and respects custom Git global ignore files.
└──▷ GET THIS VERSION$ git clone --branch v0.54.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.54.0
└──▷ TRY ITReview which skills an AI session exercised — useful for auditing agent behavior after a run.$ crush session showCheck the most recent session's skill usage without knowing its ID.$ crush session last- ›Adds skill metadata header to
crush session showandcrush session lastoutput, listing all skills used by a session. - ›Supports Git's
core.excludesfilecustom global ignore file when listing project files.
- ›Adds skill metadata header to
- v0.53.0
Crush v0.53.0 adds Z.ai GLM-5.1 model support and a dynamic prompt input area that grows up to 15 rows.
└──▷ GET THIS VERSION$ git clone --branch v0.53.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.53.0
- ›Adds support for Z.ai's GLM-5.1, a new open-source coding model, as a selectable model in Crush.
- v0.52.0
Crush v0.52.0 adds project-level skills, agent-detection env vars, and smarter file picker ranking.
└──▷ GET THIS VERSION$ git clone --branch v0.52.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.52.0
└──▷ TRY ITGate a script's behavior on whether it is being invoked by Crush (or any compatible AI agent) using the new env vars.$ if [ "$CRUSH" = "1" ] || [ "$AI_AGENT" = "crush" ]; then echo 'Running inside Crush — skipping interactive prompts'; fi- ›Adds project-scoped skills: Crush now auto-loads skills from
.agents/skills,.crush/skills,.claude/skills, or.cursor/skills, making team skill-sharing as simple as committing files. - ›Sets
CRUSH=1,AGENT=crush, andAI_AGENT=crushenvironment variables when running Bash commands, letting tools detect they are running inside Crush. - ›Improves
@-triggeredfile picker with a significantly better completion ranking algorithm, especially useful in large repositories. - ›Expands Windows global skills path to include
~/.config/crush/skillsand~/.config/agents/skillsalongside the AppData location. - ›Improves system prompt to enforce model responses and session titles in the same language as the user's prompt.
- ›Adds project-scoped skills: Crush now auto-loads skills from
- v0.51.0
Crush v0.51.0 adds native Docker MCP Catalog integration and new
--continue/--sessionCLI flags.└──▷ GET THIS VERSION$ git clone --branch v0.51.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.51.0
└──▷ TRY ITResume the last AI session non-interactively to continue a scripted or automated workflow without re-entering context.$ crush run --continue
Jump back into a specific named session from the terminal, skipping the session-picker UI.$ crush --session <session-id>
Enable the Docker MCP Catalog so Crush can pull in context-relevant MCPs (e.g. Postgres, ARM) on demand during a conversation.📍In Crush, press ctrl+p, then choose "Enable Docker MCP Catalog" (requires Docker Desktop to be running).- ›Integrates the Docker MCP Catalog natively, pulling relevant MCPs on demand during conversations (enable via ctrl+p > 'Enable Docker MCP Catalog' with Docker Desktop running).
- ›Adds
crush randcrush sas short aliases forcrush runandcrush session. - ›Adds
--continueflag to resume the last session in both TUI (crush --continue) and non-interactive (crush run --continue) modes. - ›Adds
--session <session-id>flag to open a specific past session directly from the CLI or TUI.
- v0.50.1
Crush v0.50.1 adds support for OpenAI GPT-5.4 Mini and GPT-5.4 Nano, with Nano as the new default small model.
└──▷ GET THIS VERSION$ git clone --branch v0.50.1 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.50.1
- ›Adds support for OpenAI GPT-5.4 Mini and GPT-5.4 Nano models.
- ›Sets GPT-5.4 Nano as the new default small model for OpenAI.
- v0.50.0
crush run gains
--continueand--sessionflags to resume past sessions non-interactively└──▷ GET THIS VERSION$ git clone --branch v0.50.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.50.0
└──▷ TRY ITPick up where you left off in the most recent session without opening the interactive UI.$ crush run --continue "tell me more"
Continue a specific past session by ID — useful in scripts where you track session IDs fromcrush session list --json.$ crush run --session <session-id> "um, can you repeat that?"
- ›Adds
--continue(-C) flag tocrush runto resume the most recent session non-interactively. - ›Adds
--session(-s) flag tocrush runto resume a specific session by ID non-interactively.
- ›Adds
- v0.49.0
Crush v0.49.0 adds transparent-mode toggle, AWS Bedrock API key pasting, and configurable Bash tool auto-background timing.
└──▷ GET THIS VERSION$ git clone --branch v0.49.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.49.0
- ›Adds a command-palette (ctrl+p) toggle to enable/disable background color ('transparent mode'), persisted across sessions.
- ›Supports pasting AWS Bedrock API keys directly in the provider input, alongside the existing environment-variable method.
- ›Adds
auto_background_afterparameter to the Bash tool, letting the model specify how many seconds before a command is moved to a background job (default: 60s).
- v0.48.0
Crush v0.48.0 adds desktop notifications, CLI session management with JSON output, and a user-agent identifier.
└──▷ GET THIS VERSION$ git clone --branch v0.48.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.48.0
- ›Adds desktop notifications on turn completion and permission requests, with an in-app toggle.
- ›New
crush session listcommand to browse past sessions from the CLI. - ›New
crush session <id>command to inspect a former session in full; supports--jsonfor structured output usable by agents and automation. - ›Supports renaming and deleting sessions from the CLI via
crush session. - ›Crush now presents a
Charm-Crush/<version>User-Agent header on all network requests, making it identifiable in observability and proxy tools.
- v0.47.2
Crush v0.47.2 adds OpenAI GPT-5.4 and GPT-5.4 Pro model support plus Zhipu and QiniuCloud providers.
└──▷ GET THIS VERSION$ git clone --branch v0.47.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.47.2
- ›Adds support for OpenAI GPT-5.4 and GPT-5.4 Pro models (required an explicit Crush update to enable).
- ›Adds Zhipu and Zhipu Coding (bigmodel.cn) as new AI providers.
- ›Adds QiniuCloud as a new AI provider.
- v0.47.0
Crush v0.47.0 adds a blocking
wait: trueparameter tojob_outputto eliminate polling on background jobs.└──▷ GET THIS VERSION$ git clone --branch v0.47.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.47.0
- ›Adds
wait: trueoptional parameter to thejob_outputtool, letting the model block until a background job finishes instead of polling for output.
- ›Adds
- v0.46.0
Crush v0.46.0 adds MiniMax China provider and granular Anthropic reasoning levels for Opus/Sonnet 4.6.
└──▷ GET THIS VERSION$ git clone --branch v0.46.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.46.0
- ›Adds MiniMax China as a new provider, using the China-specific endpoint for Chinese users.
- ›Adds granular reasoning/thinking effort levels for Anthropic Opus 4.6 and Sonnet 4.6, replacing the previous on/off toggle with adaptive level selection.
- v0.45.0
Crush v0.45.0 adds GPT-5.3 Codex support and granular Gemini 3 thinking-level controls.
└──▷ GET THIS VERSION$ git clone --branch v0.45.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.45.0
- ›Adds GPT-5.3 Codex as a selectable model via the model picker.
- ›Adds granular thinking-level selection for Gemini 3 and 3.1 (replaces the previous on/off toggle).
- v0.44.0
Crush v0.44.0 adds visual confirmation when skills are loaded so you know the LLM isn't improvising.
└──▷ GET THIS VERSION$ git clone --branch v0.44.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.44.0
- ›Adds UI indicator showing when a skill is actively loaded, distinguishing real skill execution from LLM improvisation.
- v0.43.0
Crush v0.43.0 adds a toggle todos/pills menu item and glob-based gitignore for faster monorepo handling.
└──▷ GET THIS VERSION$ git clone --branch v0.43.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.43.0
- ›Adds a toggle todos/pills menu item to the UI.
- ›Replaces regex-based gitignore parsing with glob-based matching, reducing CPU and disk usage on large repositories.
- v0.42.0
Crush v0.42.0 adds GLM 5 via z.AI and surfaces user-configured LSP servers in the UI before they start.
└──▷ GET THIS VERSION$ git clone --branch v0.42.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.42.0
- ›Adds GLM 5 model support via z.AI as a new provider option.
- ›Shows user-configured LSP servers in the UI with an 'unstarted' status before they are invoked.
- v0.41.0
Crush v0.41.0 adds in-TUI editing of API keys and OAuth re-authentication via ctrl+e.
└──▷ GET THIS VERSION$ git clone --branch v0.41.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.41.0
└──▷ HOW TO FIND ITRotate or correct an API key for a configured model without leaving the TUI.📍# Inside crush TUI: # Press ctrl+m to open the models dialog # Select the model whose key you want to update # Press ctrl+e to edit the API key- ›Adds ability to edit API keys directly in the TUI: open the models dialog (ctrl+m), select a model, and press ctrl+e — no more manual edits to crush.json.
- ›Supports OAuth2 re-authentication via the same ctrl+e shortcut for OAuth providers, triggering the full OAuth2 flow in-app.
- v0.40.0
Crush v0.40.0 adds on-demand LSP startup, MiniMax provider support, MCP resources, and clipboard image paste.
└──▷ GET THIS VERSION$ git clone --branch v0.40.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.40.0
- ›Adds on-demand LSP server startup — servers launch only when the model interacts with a file of that language, and are shut down between sessions.
- ›Supports MiniMax as a new AI provider, including the MiniMax Coding Plan.
- ›Adds MCP resources support.
- ›Enables clipboard image paste via Ctrl+V.
- v0.39.0
Crush v0.39.0 adds prompt history navigation, session rename/delete, collapsible chat blocks, and a transparent UI mode.
└──▷ GET THIS VERSION$ git clone --branch v0.39.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.39.0
- ›Adds Up/Down arrow key history navigation to cycle through past prompts, similar to Bash and VSCode.
- ›Enables renaming sessions with Ctrl+R and deleting sessions with Ctrl+X from the session dialog.
- ›Supports click-to-expand/collapse for code blocks, diffs, and thinking blocks in the chat.
- ›Shows last-updated time for each session in the sessions dialog.
- ›Displays the active provider name in the sidebar, panel, and message footers.
+2 moreshow less
- ›Adds transparent mode for the UI.
- ›Adds a configurable timeout for LSP initialization.
- v0.38.0
Crush v0.38.0 adds Vercel as a native provider with broader model support.
└──▷ GET THIS VERSION$ git clone --branch v0.38.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.38.0
- ›Adds Vercel as a dedicated provider (previously treated as an OpenAI provider), enabling access to Vercel's full model catalog.
- v0.37.0
Crush v0.37.0 adds LSP auto-discovery, MCP server-side instructions, prompt history, and more Copilot models including Gemini 3 Pro/Flash.
└──▷ GET THIS VERSION$ git clone --branch v0.37.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.37.0
└──▷ TRY ITTry the new experimental UI without changing any config permanently.$ CRUSH_NEW_UI=1 crush- ›Adds automatic LSP discovery — Crush detects and configures installed language servers without manual setup.
- ›Supports MCP server-side instructions for richer model-context-protocol integrations.
- ›Adds prompt history so previous inputs can be recalled during a session.
- ›Expands available Copilot models, including Gemini 3 Pro (Preview) and Gemini 3 Flash (Preview).
- ›Opens the commands dialog by pressing
/for faster command access.
+3 moreshow less
- ›Adds per-session file tracking to scope file awareness to the current session.
- ›Enables disabling the indeterminate progress bar via configuration.
- ›Previews a new UI, accessible by setting
CRUSH_NEW_UI=1in the environment.
- v0.36.0
Crush v0.36.0 adds
crush statsusage dashboard, session deletion, session title editing, and multi-file drag & drop.└──▷ GET THIS VERSION$ git clone --branch v0.36.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.36.0
└──▷ TRY ITView a breakdown of your Crush token usage and session history for the current project at a glance.$ crush stats- ›New
crush statscommand displays a per-project usage dashboard with token and session statistics. - ›Adds ability to delete sessions directly from the UI.
- ›Enables renaming/updating session titles.
- ›Supports drag & drop of multiple files at once, including on Windows.
- ›New
- v0.35.0
Crush v0.35.0 adds Vercel AI Gateway support, an LSP restart command, and a keybinding to copy chat messages.
└──▷ GET THIS VERSION$ git clone --branch v0.35.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.35.0
└──▷ TRY ITTry the in-progress UI refactor to get faster rendering and provide early feedback.$ CRUSH_NEW_UI=1 crush- ›Supports Vercel AI Gateway as a new AI provider integration.
- ›Adds
lsp_restartcommand to restart the language server from within Crush. - ›Adds a keybinding to copy chat message content to clipboard.
- ›Previews a new UI refactor accessible via
CRUSH_NEW_UI=1, including an onboarding flow.
- v0.34.0
Crush v0.34.0 adds
--modelflag for non-interactive runs, acrush modelslisting command, file attachments, paste-as-file, and a new opt-in UI.└──▷ GET THIS VERSION$ git clone --branch v0.34.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.34.0
└──▷ TRY ITRun a headless prompt against a specific provider and model in CI — no interactive session needed.$ echo 'Summarize the diff below' | crush run --model 'openai/gpt-5.2-codex'
Discover which models are configured, then narrow to a provider before scripting against it.$ crush models | grep openaiPreview and test the new UI overhaul without affecting your default workflow.$ CRUSH_NEW_UI=1 crush- ›Adds
--modelflag tocrush runfor specifying a provider/model in non-interactive/CI mode using{model}or{provider}/{model}format. - ›New
crush modelscommand lists all configured models and providers, composable withgrep. - ›Supports sending prompts with file attachments even when the text body is empty.
- ›Adds attachment support: files can be attached to prompts in interactive mode.
- ›Adds paste-as-file capability, turning large pastes into attachments automatically.
+5 moreshow less
- ›New completions menu for the editor input.
- ›Expandable thinking display for assistant responses in chat.
- ›File picker dialog with image preview and Kitty graphics protocol support (including inside tmux).
- ›Terminal tab title is now set automatically to reflect the working directory.
- ›New opt-in overhauled UI available via
CRUSH_NEW_UI=1environment variable.
- ›Adds
- v0.33.2
Crush v0.33.2 adds clipboard image paste directly into the chat editor.
└──▷ GET THIS VERSION$ git clone --branch v0.33.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.33.2
- ›Supports pasting images from the system clipboard directly into the Crush chat editor.
- v0.32.0
Crush v0.32.0 adds a config option to disable default providers and allows sending prompts with attachments but no text.
└──▷ GET THIS VERSION$ git clone --branch v0.32.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.32.0
└──▷ TRY ITSuppress all default cloud providers so only locally configured models are available — useful in air-gapped or local-only setups.$ CRUSH_DISABLE_DEFAULT_PROVIDERS=1 crush- ›Adds
disable_default_providersconfig setting to suppress all built-in cloud providers, useful when running exclusively with local models. - ›Enables sending a prompt that contains only file/text attachments with no typed text.
- ›Adds
- v0.31.0
Crush v0.31.0 adds cross-tool skills loading from ~/.config/agents/skills and removes Claude Code support.
└──▷ GET THIS VERSION$ git clone --branch v0.31.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.31.0
- ›Supports loading skills from a shared
~/.config/agents/skillsdirectory, enabling reuse across multiple agent tools.
└──▷ BREAKING ON UPGRADE- !Claude Code support has been removed; any workflow relying on Claude Code integration will no longer function after upgrading.
- ›Supports loading skills from a shared
- v0.30.3
Crush v0.30.3 adds five new models for GitHub Copilot users: Claude Opus 4.5, GPT 5.2, GPT 5.1, GPT 5.1 Codex, and GPT 5.1 Max.
└──▷ GET THIS VERSION$ git clone --branch v0.30.3 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.30.3
- ›Adds Claude Opus 4.5 as a selectable model for GitHub Copilot users.
- ›Adds GPT 5.2, GPT 5.1, GPT 5.1 Codex, and GPT 5.1 Max as selectable models for GitHub Copilot users.
- v0.30.0
Crush v0.30.0 adds Agent Skills support, letting you extend the AI agent with on-demand capabilities via the open agentskills.io format.
└──▷ GET THIS VERSION$ git clone --branch v0.30.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.30.0
- ›Supports the Agent Skills open format, enabling on-demand agent capability extensions that load automatically without cluttering context.
- v0.29.0
Crush v0.29.0 adds drag-and-drop and paste-as-attachment support for images and large text blobs.
└──▷ GET THIS VERSION$ git clone --branch v0.29.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.29.0
- ›Supports dragging and dropping attachments of all kinds directly into the terminal UI.
- ›Automatically treats large pasted text as an attachment instead of inline input.
- v0.28.0
Crush v0.28.0 adds env-var overrides for config directories and Hyper/Copilot login via onboarding.
└──▷ GET THIS VERSION$ git clone --branch v0.28.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.28.0
- ›Adds ability to set environment variables to override config directories.
- ›Enables Hyper and GitHub Copilot login directly through the onboarding flow.
- v0.27.0
Crush v0.27.0 adds GitHub Copilot as a supported AI backend with a new
crush login copilotauth command.└──▷ GET THIS VERSION$ git clone --branch v0.27.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.27.0
└──▷ TRY ITAuthenticate with GitHub Copilot when it isn't already detected on the machine.$ crush login copilot- ›Adds GitHub Copilot as a supported model provider, auto-detecting existing logins or prompting via TUI.
- ›New
crush login copilotcommand for explicit GitHub Copilot authentication.
- v0.26.0
Crush v0.26.0 adds Hyper terminal integration.
└──▷ GET THIS VERSION$ git clone --branch v0.26.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.26.0
- ›Adds Hyper terminal integration.
- v0.25.0
Crush v0.25.0 adds
crush projectscommand for centralized project tracking with JSON output support.└──▷ GET THIS VERSION$ git clone --branch v0.25.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.25.0
└──▷ TRY ITEnumerate all known Crush projects in machine-readable JSON to feed into scripts or CI pipelines.$ crush projects --json
- ›Adds
crush projectscommand to list all projects where Crush has been used, with--jsonflag for programmatic consumption.
- ›Adds
- v0.24.0
Crush v0.24.0 adds a first-class to-do list tool and pipe/redirect support for
crush run.└──▷ GET THIS VERSION$ git clone --branch v0.24.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.24.0
└──▷ TRY ITPipe a file into Crush and redirect its output — useful for automated summarization or review tasks in CI.$ crush run "Summarize this project" > summary.mdChain both stdin and stdout redirection to process a file and capture the result in one shot.$ crush run "Rate my Pokémon collection" < Pokedex.md > Pokerating.md- ›Adds a built-in to-do list tool so Crush can create and manage task lists during complex multi-step operations.
- ›Enables input/output redirection and piping in
crush runnon-interactive mode, allowing integration with shell pipelines.
- v0.23.0
Crush v0.23.0 adds GPT-5.2 and GPT-5.1 Codex Max support, plus MCP disabled_tools config.
└──▷ GET THIS VERSION$ git clone --branch v0.23.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.23.0
└──▷ USE ITSuppress noisy or dangerous MCP tools from being offered to the model without removing the whole server.# In your MCP server config block, add: disabled_tools: - bash - write_file
- ›Adds support for OpenAI GPT-5.2 as a selectable model.
- ›Adds support for GPT-5.1 Codex Max model.
- ›New
disabled_toolslist in MCP config lets you suppress specific MCP tools without removing the server. - ›Shows a
/hint in the TUI editor when the input field is empty, surfacing command discovery.
- v0.22.2
Crush v0.22.2 sorts sessions by recent activity and improves Claude token refresh for long sessions.
└──▷ GET THIS VERSION$ git clone --branch v0.22.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.22.2
- ›Sorts sessions by most recently used activity instead of creation time in the Ctrl+S session dialog.
- v0.22.0
Crush v0.22.0 adds DuckDuckGo web search and image-returning tool/MCP support via agentic fetch.
└──▷ GET THIS VERSION$ git clone --branch v0.22.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.22.0
- ›Adds DuckDuckGo-powered web search: tell Crush what you're looking for and it uses agentic fetch to search and retrieve results while keeping search context out of the main session.
- ›Supports image results returned by tools and MCPs (e.g., Playwright), enabling visual web agentic workflows.
- v0.21.0
Crush v0.21.0 adds parallel tool call execution and progress bar support for iTerm2 and Rio terminals.
└──▷ GET THIS VERSION$ git clone --branch v0.21.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.21.0
- ›Enables parallel tool calls so multiple tools can execute simultaneously, reducing wait time on multi-step tasks.
- ›Adds progress bar display for iTerm2 and Rio terminal emulators.
- v0.20.1
Adds
crush login claudeCLI command for authenticating with Claude Code Max in SSH/tmux environments.└──▷ GET THIS VERSION$ git clone --branch v0.20.1 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.20.1
└──▷ TRY ITAuthenticate with Claude Code Max over SSH or inside tmux where opening a browser or copying a URL to the clipboard isn't possible.$ crush login claude- ›Adds
crush login claudecommand to authenticate with Claude Code Max via the CLI, enabling use in SSH, tmux, and other headless environments where browser-based auth isn't viable.
- ›Adds
- v0.19.0
Crush v0.19.0 adds Claude Code Max subscription support for Anthropic model access.
└──▷ GET THIS VERSION$ git clone --branch v0.19.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.19.0
- ›Supports Claude Code Max subscriptions — select an Anthropic model and Crush will prompt you through the authentication flow.
- v0.18.4
Crush v0.18.4 adds support for Kimi's coding subscription plan as a model provider.
└──▷ GET THIS VERSION$ git clone --branch v0.18.4 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.18.4
- ›Adds support for Kimi Coding (kimi.com coding subscription) as a model provider.
- v0.18.3
Crush v0.18.3 adds full Google Gemini 3 support and in-app new-version notifications.
└──▷ GET THIS VERSION$ git clone --branch v0.18.3 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.18.3
- ›Adds support for Google Gemini 3 across models hosted on Google and OpenRouter.
- ›Notifies users in-app when a new version of Crush is available.
- v0.18.2
Crush v0.18.2 adds Mode 2026 terminal sync for smoother rendering and defaults attribution to assisted-by.
└──▷ GET THIS VERSION$ git clone --branch v0.18.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.18.2
- ›Supports Mode 2026 terminal rendering synchronization via Bubble Tea v2, delivering smoother UI updates in compatible terminals.
- ›Defaults commit/output attribution to 'assisted-by' mode.
- v0.18.1
Crush v0.18.1 adds support for GPT-5.1, GPT-5.1-Codex, and GPT-5.1-Codex-Mini models.
└──▷ GET THIS VERSION$ git clone --branch v0.18.1 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.18.1
- ›Adds support for gpt-5.1, gpt-5.1-codex, and gpt-5.1-codex-mini as selectable models.
- v0.18.0
Crush now defaults to AGENTS.md for new projects, aligning with the emerging agents.md convention.
└──▷ GET THIS VERSION$ git clone --branch v0.18.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.18.0
- ›Defaults to creating
AGENTS.md(instead ofCRUSH.md) for new projects, with a new config setting to customize the filename.
- ›Defaults to creating
- v0.17.0
Crush v0.17.0 adds a recent-models picker and opt-in AI attribution trailers to git commits.
└──▷ GET THIS VERSION$ git clone --branch v0.17.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.17.0
- ›Adds a 'recent models' section at the top of the model picker so frequently used models are surfaced automatically.
- ›Adds
trailer_styleconfig option to append an Assisted-by git trailer (e.g.Assisted-by: Claude Sonnet 4.5 via Crush) to commits, following Fedora Council AI-disclosure guidelines. - ›Migrates the deprecated
co_authored_byconfig setting to the new attribution scheme.
- v0.16.0
Crush v0.16.0 adds background jobs so the LLM can spawn and manage parallel processes like servers and builds.
└──▷ GET THIS VERSION$ git clone --branch v0.16.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.16.0
- ›Adds background jobs support, enabling Crush to spawn and manage long-running processes (servers, parallel builds) asynchronously.
└──▷ BREAKING ON UPGRADE- !Persistent shell has been removed.
- v0.15.2
Crush v0.15.2 adds Ctrl+L/Ctrl+M hotkeys to open the model switcher from anywhere.
└──▷ GET THIS VERSION$ git clone --branch v0.15.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.15.2
- ›Adds Ctrl+L and Ctrl+M keyboard shortcuts to open the model switcher without leaving the keyboard.
- v0.15.0
Crush v0.15.0 adds an agentic fetch tool for reasoning over URL content plus keyboard shortcut UX improvements.
└──▷ GET THIS VERSION$ git clone --branch v0.15.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.15.0
- ›Adds an agentic fetch tool that lets subagents pull content from a URL, reason over it, and iterate until they find what they need.
- ›Press
/in an empty textarea to open the command palette (in addition to the existingctrl+pshortcut). - ›Use
@to open the file picker in the chat input.
└──▷ BREAKING ON UPGRADE- !The
@key now opens the file picker instead of/; existing muscle memory using/to pick files will no longer work — press/in an empty input to get the command palette instead.
- v0.14.0
Crush v0.14.0 adds MCP Prompt template support and startup progress feedback on Ghostty/Windows Terminal.
└──▷ GET THIS VERSION$ git clone --branch v0.14.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.14.0
- ›Supports MCP stored prompts (templates): access via ctrl+p then the MCP tab in the command prompt.
- ›Shows a progress bar loading feedback during startup on Ghostty and Windows Terminal.
- v0.13.7
Crush v0.13.7 adds Azure reasoning-level support and significantly faster rendering for long sessions.
└──▷ GET THIS VERSION$ git clone --branch v0.13.7 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.13.7
- ›Enables full OpenAI feature set for Azure-hosted models, including reasoning effort levels (Low, Medium, High).
- ›Significantly faster rendering and lower CPU usage when scrolling through large, long conversations.
- v0.13.0
Crush v0.13.0 adds an
openai-compatprovider type for better support of OpenAI-compatible APIs with extra features.└──▷ GET THIS VERSION$ git clone --branch v0.13.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.13.0
└──▷ USE ITSwitch a custom OpenAI-compatible provider to the new type to get improved behavior and access to previously unavailable features.{ "$schema": "https://charm.land/crush.json", "providers": { "my-custom-provider": { "type": "openai-compat" } } }- ›Adds new
openai-compatprovider type in config for OpenAI-compatible APIs, unlocking extra features previously unavailable to custom providers.
- ›Adds new
- v0.12.0
Crush v0.12.0 adds LSP-powered Find References tool and AWS Bearer Token support for Bedrock
└──▷ GET THIS VERSION$ git clone --branch v0.12.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.12.0
- ›New Find References tool taps into attached LSPs to locate symbol references with greater speed and precision than the grep tool.
- ›Supports
AWS_BEARER_TOKEN_BEDROCKenvironment variable for authenticating with AWS Bedrock.
- v0.11.0
Crush v0.11.0 adds terminal progress bar support, MCP notifications, and automatic filepath walk limits.
└──▷ GET THIS VERSION$ git clone --branch v0.11.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.11.0
- ›Adds application-level progress bar display in supporting terminals (Windows Terminal, Ghostty).
- ›Adds MCP notifications support including
tools/list_changedevents, enabling real-time tool updates to MCP clients like Neovim. - ›Adds automatic filepath walk limits, with lower limits applied automatically when not in a git repository.
- v0.10.4
Crush v0.10.4 adds
crush dirssubcommand to resolve config and data directory paths from the CLI.└──▷ GET THIS VERSION$ git clone --branch v0.10.4 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.10.4
└──▷ TRY ITOpen Crush's main config file directly without manually hunting down the path.$ vim "$(crush dirs config)/crush.json"Wipe all ephemeral Crush data (sessions, cache) for a clean slate.$ rm -rf "$(crush dirs data)"
- ›New
crush dirssubcommand surfaces the paths to Crush's config and data directories, enabling scripted access to config files and ephemeral data.
- ›New
- v0.10.0
Crush v0.10.0 adds Hugging Face inference support, recursive config search, custom Gemini providers, and pseudoanonymous usage metrics.
└──▷ GET THIS VERSION$ git clone --branch v0.10.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.10.0
- ›Adds Hugging Face inference provider integration.
- ›Supports custom providers of type
geminiin config. - ›Searches
crush.jsonrecursively up from the working directory. - ›Loads LSP defaults by either name or command.
- ›Pretty-prints MCP JSON in permissions output.
+2 moreshow less
- ›Adds
alt/option+esckey binding as an alias for the existingescbehavior. - ›Adds pseudoanonymous usage metrics (device hash only; prompts and responses never collected) with opt-out support.
- v0.9.0
Crush v0.9.0 overhauls LSP via Power Nap library and adds configurable attribution in commit messages.
└──▷ GET THIS VERSION$ git clone --branch v0.9.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.9.0
- ›Rewrites LSP implementation using the Power Nap library, reducing codebase complexity and improving LSP experience.
- ›Adds attribution settings to config and bash tool, allowing users to disable Crush attribution in commit messages.
- v0.8.0
Crush v0.8.0 adds in-app OpenAI reasoning controls, offline mode, tool disabling, and a new
crush update-providerscommand.└──▷ GET THIS VERSION$ git clone --branch v0.8.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.8.0
└──▷ TRY ITLock Crush to fully offline operation in air-gapped or restricted environments — no outbound calls tocatwalk.charm.sh.$ export CRUSH_DISABLE_PROVIDER_AUTO_UPDATE=1Manually refresh provider/model definitions when internet access is available, or seed from a vetted local file.$ crush update-providers /path/to/local-providers.jsonRestrict the AI agent to read-only tools by disabling shell execution and write capabilities in the config.{ "options": { "disabled_tools": [ "bash", "write", "edit", "multiedit", "download" ] } }- ›Adds in-app reasoning level selector for OpenAI models that support reasoning, previously only configurable by manually editing
crush.json. - ›New
crush update-providerscommand lets practitioners manually pull provider/model updates from Catwalk, a custom URL, a local file, or the embedded bundle. - ›New
disable_provider_auto_updateoption incrush.json(orCRUSH_DISABLE_PROVIDER_AUTO_UPDATEenv var) enables a fully offline mode, preventing outbound fetches tocatwalk.charm.sh. - ›New
disabled_toolsconfig option lets users selectively block individual agent tools (e.g.,bash,fetch,write) from being available to the model. - ›Model chooser now supports multi-word search and matches on provider name, making it easier to locate a specific model by provider.
- ›Adds in-app reasoning level selector for OpenAI models that support reasoning, previously only configurable by manually editing
- v0.7.9
Crush v0.7.9 cuts LSP file descriptors by 99% for dramatically faster multi-LSP workflows.
└──▷ GET THIS VERSION$ git clone --branch v0.7.9 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.7.9
- ›Optimizes LSP file watcher with 99% reduction in file descriptors, improving performance when using multiple LSPs.
- v0.7.8
Crush v0.7.8 adds multiline paste support on Windows and enables SQLite secure_delete for safer data handling.
└──▷ GET THIS VERSION$ git clone --branch v0.7.8 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.7.8
- ›Enables bracketed paste on Windows, allowing multiline text to be pasted correctly.
- ›Enables SQLite
secure_deletepragma so deleted database records are securely overwritten.
- v0.7.5
Crush v0.7.5 shows the persistent shell path in the permission dialog for better shell-action transparency.
└──▷ GET THIS VERSION$ git clone --branch v0.7.5 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.7.5
- ›Displays the persistent shell path in the permission dialog so users can see exactly which shell session is being granted access.
- v0.7.2
Crush v0.7.2 adds Anthropic custom base URL support and shows current path on project initialization.
└──▷ GET THIS VERSION$ git clone --branch v0.7.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.7.2
- ›Supports configuring a custom Anthropic base URL option for routing API traffic through proxies or compatible endpoints.
- ›Displays the current directory path when prompting to initialize a new project.
- v0.7.0
Crush v0.7.0 adds a
--data-dirflag and git-style parent-directory discovery for the .crush state folder.└──▷ GET THIS VERSION$ git clone --branch v0.7.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.7.0
└──▷ TRY ITPoint Crush at a shared data directory on a per-invocation basis, useful when you want to keep project state outside the default location.$ crush --data-dir /path/to/project/.crush
- ›Adds
--data-dir(-D) flag to specify a custom path for the.crushdata directory at runtime. - ›Automatically discovers a
.crushdirectory in any parent directory, similar to howgitlocates.git, so subdirectory work reuses the project's data dir.
- ›Adds
- v0.6.3
Crush v0.6.3 adds LSP custom env vars, auto-.gitignore for workspace dir, and tighter shell command restrictions.
└──▷ GET THIS VERSION$ git clone --branch v0.6.3 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.6.3
- ›Supports setting custom environment variables for LSP servers via config.
- ›Automatically creates a
.crush/.gitignoreso the workspace directory is excluded from Git without manual intervention. - ›Removes
gofrom the list of safe programs the model is allowed to run, narrowing the permitted command surface. - ›Compiled with Go's GreenTea Garbage Collector, reducing memory footprint and CPU usage.
- v0.6.2
Crush v0.6.2 adds Android/Termux support for on-the-go use.
└──▷ GET THIS VERSION$ git clone --branch v0.6.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.6.2
- ›Adds official Android/Termux release, enabling Crush to run on mobile Android terminals.
- v0.6.1
Crush v0.6.1 adds configurable MCP timeouts, automatic MCP reconnection, and per-filetype LSP scoping.
└──▷ GET THIS VERSION$ git clone --branch v0.6.1 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.6.1
└──▷ USE ITCap a slow remote MCP server at 30 seconds so it doesn't block your workflow indefinitely.{ "mcp": { "example": { "type": "http", "url": "https://example.org/mcp/", "timeout": 30 } } }Restrict gopls to only activate on Go-related files, keeping the LSP from interfering with other file types.{ "lsp": { "Go": { "command": "gopls", "filetypes": ["go", "mod", "sum", "work"] } } }- ›Adds configurable per-MCP timeout in config (default 15 seconds) so unreliable MCP servers don't hang Crush indefinitely.
- ›Enables automatic MCP client ping and reconnection when an MCP server becomes unresponsive.
- ›Supports restricting LSP servers to specific file types via a
filetypesconfig key for improved efficiency. - ›Ships built-in filetype associations for 17 popular language servers (gopls, rust-analyzer, pyright, typescript-language-server, and more), so no manual scoping is needed for common LSPs.
- v0.6.0
Crush v0.6.0 adds Power Steering, letting you queue messages to the model mid-task without interrupting its tool calls.
└──▷ GET THIS VERSION$ git clone --branch v0.6.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.6.0
- ›Adds Power Steering: queue messages for the model to pick up between tool calls or after task completion, with Esc to clear the queue.
- v0.5.0
Crush v0.5.0 adds configurable default diff mode (unified or split) via the TUI config.
└──▷ GET THIS VERSION$ git clone --branch v0.5.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.5.0
└──▷ USE ITSet your preferred diff mode so every session opens in split view without manual toggling.{ "options": { "tui": { "diff_mode": "split" } } }- ›Adds
diff_modeconfig option underoptions.tuito set the default diff view tounifiedorsplit.
- ›Adds
- v0.4.0
Crush v0.4.0 adds in-session Yolo Mode toggle, diff view mouse scrolling, built-in coreutils on Windows, and CRUSH_-prefixed env vars.
└──▷ GET THIS VERSION$ git clone --branch v0.4.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.4.0
└──▷ TRY ITStart a session with all permission dialogs bypassed from the command line.$ crush --yolo
Toggle Yolo Mode on or off mid-session without restarting.📍Press ctrl+p, then select 'Toggle Yolo Mode' from the menu.- ›Adds in-session Yolo Mode toggle via ctrl+p menu, so you can enable/disable permission bypass without restarting Crush.
- ›Enables mouse scrolling in the diff view.
- ›Ships built-in coreutils (
base64,gzip,mktemp,shasum,tar) on Windows — and speeds them up on all platforms by eliminating shell-outs. - ›Supports
CRUSH_-prefixedenvironment variables (e.g.CRUSH_ANTHROPIC_API_KEY) to scope secrets to Crush without clobbering default env vars.
- v0.3.0
Crush v0.3.0 adds mouse text selection, drag-and-drop image input, GPT-5 support, and OpenAI reasoning model improvements.
└──▷ GET THIS VERSION$ git clone --branch v0.3.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.3.0
- ›Adds mouse-based text selection in chat messages, including double-click to select and copy.
- ›Supports drag-and-drop image input into the chat from almost any terminal, including Apple Terminal.
- ›Adds out-of-the-box support for GPT-5 as an OpenAI provider.
- ›Supports minimal reasoning mode for OpenAI reasoning models.
- ›Available on Nixpkgs unstable for easier installation.
- v0.2.2
Crush v0.2.2 adds JetBrains rendering support, Scoop distribution for Windows, and LSP/MCP status indicators in the UI.
└──▷ GET THIS VERSION$ git clone --branch v0.2.2 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.2.2
└──▷ TRY ITInstall Crush on Windows using Scoop when you need a package-managed install that stays up to date.$ scoop bucket add charm https://github.com/charmbracelet/scoop-bucket.git && scoop install crush- ›Adds vastly improved rendering support for JetBrains terminals (JediTerm) used in GoLand, IntelliJ, PyCharm, and similar IDEs.
- ›Adds Scoop package distribution for easy installation on Windows.
- ›Adds LSP and MCP status indicators in the UI showing offline, starting up, online, and error states; full details viewable via
crush logs. - ›Adds Escape key as an additional way to deny prompts in the UI.
- v0.2.0
Crush v0.2.0 adds .crushignore support and enhanced debug logging with provider response capture.
└──▷ GET THIS VERSION$ git clone --branch v0.2.0 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.2.0
└──▷ TRY ITCapture full provider request/response traffic to diagnose unexpected model behaviour or prompt issues.$ crush --debug && crush logs
- ›Adds
.crushignorefile support to exclude files from Crush's context without removing them from version control; uses.gitignoresyntax and works in the project root and subdirectories. - ›Extends
--debugmode to also log provider request/response details, stored in.crush/logs/crush.logand viewable viacrush logs. - ›Applies
.crushignoreand.gitignorerules to the built-ingreptool, scoping searches consistently with context exclusions.
- ›Adds
- v0.1.6
Crush v0.1.6 is the first public release of Charmbracelet's AI coding assistant for the terminal.
└──▷ GET THIS VERSION$ git clone --branch v0.1.6 https://github.com/charmbracelet/crush.git # already have the repo? check out this version: $ git checkout v0.1.6
- ›Introduces Crush, a new terminal-native AI coding assistant CLI from Charmbracelet.
- ›Supports release artifact verification via cosign and sha256sum for supply-chain integrity.