
Crush Configuration
Configures Crush providers, models, MCP servers, hooks and permissions.
Install
npx skills add charmbracelet/crush --skill crush-config -g -a claude-code -y- Repository
- charmbracelet/crush28.9k
- Category
- Engineering
- Updated
- 3d ago
- License
- See repository
- Context cost
- Mediumabout 3,000 tokens
- Runs scripts
- No, instructions only
What it does
Use when the user needs help configuring Crush, writing crushrc (the Bash config format) or crush.json, setting up providers, models, LSPs, MCP servers, hooks, skills, permissions, or changing Crush behavior.
Crush Configuration
Crush supports two config formats:
crushrc, a Bash script that builds config by calling Crush builtins. Preferred. Because it is real Bash you get includes, secrets, conditionals, and variables for free.crush.json, static JSON. Fully supported; see Legacy JSON format.
Both are discovered together and deep-merged. Priority (highest to lowest):
.crushrc/crushrc/.crush.json/crush.json(project-local, closer-to-cwd wins; Windows uses.\.crushrc/.\crushrc)$XDG_CONFIG_HOME/crush/crushrcor~/.config/crush/crushrc(%XDG_CONFIG_HOME%\crush\crushrcor%USERPROFILE%\.config\crush\crushrcon Windows)
Data directories (~/.local/share/crush and %LOCALAPPDATA%\crush) contain
machine-owned JSON state only; Crush does not discover or execute a crushrc
from those locations.
If a directory has both crushrc and crush.json, they merge (crushrc wins
on conflicts) and Crush logs a warning.
crushrc at a glance
A crushrc is a plain Bash script executed at load time with the same embedded
shell the bash tool uses. It builds config by calling builtins (provider,
model, mcp, lsp, hook, permissions, option). Statements run top to
bottom; later statements win, and remove/reset operate on anything defined
earlier or pulled in via source.
#!/usr/bin/env bash
# Includes and secrets are just Bash.
source ~/.config/crush/shared.sh
provider add anthropic --api-key "$ANTHROPIC_API_KEY"
model large anthropic/claude-sonnet-4-20250514 --max-tokens 16384
model small anthropic/claude-haiku-4-20250514
option skill-path ./skills
permissions allow view ls grep edit
Values are ordinary Bash, quote and expand normally ("$VAR", $(cmd),
${VAR:?required}). A failing $(command) aborts the load.
