Last updated: November 2, 2026
Charm Crush, the open-source terminal coding agent from Charm, shipped four releases in October 2026. Version 0.99.0 adds 13 lifecycle hook events, Catwalk v3 provider types and new client/server features for host apps, while 0.98.x added Grok OAuth login and fixed sign-in and crash bugs.
Contents
- What’s new in Crush
- Hooks across the whole run
- Catwalk v3 provider types
- Client/server mode for host apps
- Grok OAuth and sign-in fixes
- How to install or upgrade
- Power-user workflows
- How Crush compares
- Frequently asked questions
Crush runs in your terminal and connects your code, tools and workflows to the model of your choice. The Crush GitHub repository describes it as multi-model, session-based, LSP-enhanced and extensible through MCP servers over http, stdio and sse, with support for macOS, Linux, Windows, Android and the BSDs. It is published under the Functional Source License 1.1 with an MIT future license. Everything below comes from Charm’s official release notes and documentation.
What’s new in Crush
| Release | Date (UTC) | Main changes |
|---|---|---|
| 0.98.0 | October 8, 2026 | Grok OAuth login, OSC 7501 Program Status Protocol support, MCP keep-alive and toggle fixes, git branch support in server mode |
| 0.98.1 | October 9, 2026 | Routes newer GitHub Copilot models, including GPT-6 models, through the Responses API |
| 0.98.2 | October 23, 2026 | Fixes a crash when parallel tool calls finish together, OAuth sign-in and refresh fixes, OpenRouter sticky routing headers, a new keanu theme |
| 0.99.0 | October 29, 2026 | Lifecycle hooks, PostToolUse hooks, Catwalk v3, host themes and context, piped permissions, config reload on SIGHUP |
Hooks across the whole run
The headline change in Crush 0.99.0 is that hooks are no longer limited to tool calls. Hooks are shell commands that run when events happen during the agent lifecycle, and the Crush hooks documentation now lists 13 events: PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest, PermissionResult, SessionStart, SessionEnd, TurnStart, TurnEnd, StopFailure, Interrupt, PreCompact and PostCompact.
The new post-tool hooks matter most. A PostToolUse hook can replace what the model sees with updated_output, for example to redact API keys from command output, add context, or end the turn with halt: true. Returning decision: "deny" with a reason after a tool has already run hands that reason to the model as feedback, such as a note that it committed without running the tests.
A few rules from the documentation are worth knowing before you rely on hooks:
- Hooks run in parallel but resolve in config order. The last hook wins when rewriting input, and the first deny wins when blocking.
- Tool and turn events fire only for the top-level agent, not for sub-agents such as the task tool.
- Permission events fire only when a prompt is actually shown, so allow-listed calls and YOLO mode skip them.
SessionEndhas a two-second budget shared by every SessionEnd hook, and the default hook timeout is 30 seconds.- Hooks run through Crush’s embedded POSIX shell, so inline commands behave the same on macOS, Linux and Windows.
Catwalk v3 provider types
Crush’s default model list comes from Catwalk, Charm’s open-source catalog of Crush-compatible models. With Catwalk v3, a provider type now describes the API format rather than the company: completions for OpenAI-compatible APIs, responses for OpenAI or anything routed through it, and messages for Anthropic-compatible APIs. Existing configs migrate automatically when they load.
The command-line flags changed too. --can-reason is replaced by --thinking always|never|toggleable, --max-attachments N is new, and the model picker shows reasoning levels with friendly names such as X-High. The release notes give this example for adding DeepSeek:
crush provider add deepseek --type completions \
--base-url "https://api.deepseek.com/v1" --api-key "$DEEPSEEK_API_KEY"
crush model add deepseek/deepseek-chat --thinking toggleable --max-attachments 5
Client/server mode for host apps
If you build an editor or app that runs Crush inside it, 0.99.0 adds several server API features:
- Host themes. The host app can theme the terminal interface so Crush matches it.
- Host context. The host can report what is in view, such as open files, and those files appear in completions.
- Append to the next prompt. Clients can add text the agent reads with the next prompt without starting a run.
- Shared viewing. Clients can see which session other clients are viewing.
- Piped permissions. With
CRUSH_PERMISSIONS_PIPED=1, the host answers permission prompts so users are not asked twice. - Steadier server.
SIGHUPreloads the config instead of stopping the server,http://addresses work as an alias fortcp://, and a shutdown from a service manager now saves work in progress.
Grok OAuth and sign-in fixes
Crush 0.98.0 added xAI Grok OAuth login; see our Grok API moderation controls guide for the API side. It also fixed OAuth models that were not listed in Catwalk. Crush 0.98.2 then fixed OAuth sign-in and credential refresh, asks you to sign in again whenever a provider rejects a credential, and passes renewed credentials to sub-agents.
How to install or upgrade
- Install or update with your package manager:
brew install charmbracelet/tap/crush,npm install -g @charmland/crush,winget install charmbracelet.crushorgo install github.com/charmbracelet/crush@latest. - Start
crushin your project and press Ctrl+L to open the model picker, then choose a provider and paste an API key, or set an environment variable such asANTHROPIC_API_KEY,OPENAI_API_KEYorXAI_API_KEY. - Put settings in a project
.crushrcor the global~/.config/crush/crushrc. Project files take priority. - If you script
model add, replace--can-reasonwith--thinking. - Add a test hook, such as
hook add TurnEnd --name "ding" --command '...', and confirm it appears in the interface before adding blocking hooks.
The README warns that crushrc runs in a full shell and that any $(...) in crush.json runs at load time, so do not launch Crush in a directory whose config you have not reviewed.
Power-user workflows
- Block risky commands. Use a
PreToolUsehook with--matcher '^bash$'that exits with code 2 to block commands such as a forced git push. The message on stderr is shown to the model. - Redact secrets. A
PostToolUsehook can pipetool_responsethrough a pattern replacement before the model sees it. - Enforce tests. Deny after a commit tool call with a reason telling the model to run the test suite first.
- Notifications. A
TurnEndhook can play a sound or send a desktop alert once per prompt. - Protect context. A
PreCompacthook can block compaction when you want to keep the full conversation.
How Crush compares
Because Crush hooks use the same payload fields, output forms and exit codes as Claude Code, many existing Claude Code hook scripts can be reused with small changes to event names. Our Claude Code guide covers Anthropic’s own agent. Unlike vendor agents such as Codex CLI or Qwen Code CLI, Crush is not tied to one model vendor, and its README lists environment variables for more than 20 providers, plus local models. For other terminal agents updated in October, see the Mistral Vibe CLI 3.0 guide and the Antigravity CLI guide.
Frequently asked questions
What is new in Charm Crush 0.99?
Crush 0.99.0, released October 29, 2026, expands hooks to the whole agent run, moves provider configuration to Catwalk v3, and adds client/server features for apps that embed Crush, such as host themes, host context, piped permissions and config reload on SIGHUP.
Do I need to change my Crush config for Catwalk v3?
No. The 0.99.0 release notes say your config is migrated automatically when it loads, so the old openai, openai-compat and anthropic provider types keep working. Only scripts that call provider add or model add with the old –can-reason flag need updating to –thinking.
Are Crush hooks compatible with Claude Code hooks?
Largely. The Crush hooks documentation says hooks use the same payload field names, output forms and exit codes as Claude Code. Some event names differ: Crush TurnStart maps to UserPromptSubmit and TurnEnd maps to Stop.
Can I sign in to Crush with my xAI Grok account?
Yes. Crush 0.98.0, released October 8, 2026, added Grok OAuth login. Version 0.98.2 then fixed OAuth sign-in and credential refresh, so update to 0.99.0 if sign-in prompts misbehave.
How do I install or update Crush?
The Crush README lists brew install charmbracelet/tap/crush, npm install -g @charmland/crush, winget install charmbracelet.crush and go install github.com/charmbracelet/crush@latest. Use your package manager’s upgrade command to update.
Sources
- Crush v0.99.0 release notes (GitHub)
- Crush v0.98.2 release notes (GitHub)
- Crush v0.98.0 release notes (GitHub)
- Crush hooks documentation (GitHub)
- Crush README and installation (GitHub)
Image: “RustCodeOnScreen” by Slashme, Wikimedia Commons, CC0 public domain dedication, cropped and resized. It is a generic photo of code on a laptop screen, not a Crush screenshot. FreeAnswers is not affiliated with Charm.
Related guide: OpenCode 2.2 guide: /goal, desktop plugins, image generation and scheduled prompts.
1 thought on “Charm Crush 0.99: Power-User Guide to the October 2026 Releases”