Crush crush-config
Use when the user needs help configuring Crush — working with crush.json, setting up providers, configuring LSPs, adding MCP servers, managing skills or permissions, or changing Crush behavior.
install
source · Clone the upstream repo
git clone https://github.com/charmbracelet/crush
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/charmbracelet/crush "$T" && mkdir -p ~/.claude/skills && cp -r "$T/internal/skills/builtin/crush-config" ~/.claude/skills/charmbracelet-crush-crush-config && rm -rf "$T"
manifest:
internal/skills/builtin/crush-config/SKILL.mdsource content
Crush Configuration
Crush uses JSON configuration files with the following priority (highest to lowest):
(project-local, hidden).crush.json
(project-local)crush.json
or$XDG_CONFIG_HOME/crush/crush.json
(global)$HOME/.config/crush/crush.json
Basic Structure
{ "$schema": "https://charm.land/crush.json", "models": {}, "providers": {}, "mcp": {}, "lsp": {}, "options": {}, "permissions": {}, "tools": {} }
The
$schema property enables IDE autocomplete but is optional.
Common Tasks
- Add a custom provider: add an entry under
withproviders
,type
,base_url
, andapi_key
.models - Disable a builtin or local skill: add the skill name to
.options.disabled_skills - Add an MCP server: add an entry under
withmcp
and eithertype
(stdio) orcommand
(http/sse).url
Model Selection
{ "models": { "large": { "model": "claude-sonnet-4-20250514", "provider": "anthropic", "max_tokens": 16384 }, "small": { "model": "claude-haiku-4-20250514", "provider": "anthropic" } } }
is the primary coding model;large
is for summarization.small- Only
andmodel
are required.provider - Optional tuning:
,reasoning_effort
,think
,max_tokens
,temperature
,top_p
,top_k
,frequency_penalty
,presence_penalty
.provider_options
Custom Providers
{ "providers": { "deepseek": { "type": "openai-compat", "base_url": "https://api.deepseek.com/v1", "api_key": "$DEEPSEEK_API_KEY", "models": [ { "id": "deepseek-chat", "name": "Deepseek V3", "context_window": 64000 } ] } } }
(required):type
,openai
, oropenai-compatanthropic
supportsapi_key
syntax.$ENV_VAR- Additional fields:
,disable
,system_prompt_prefix
,extra_headers
,extra_body
.provider_options
LSP Configuration
{ "lsp": { "go": { "command": "gopls", "env": { "GOTOOLCHAIN": "go1.24.5" } }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] } } }
(required),command
,args
cover most setups.env- Additional fields:
,disabled
,filetypes
,root_markers
,init_options
,options
.timeout
MCP Servers
{ "mcp": { "filesystem": { "type": "stdio", "command": "node", "args": ["/path/to/mcp-server.js"] }, "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/", "headers": { "Authorization": "Bearer $GH_PAT" } } } }
(required):type
,stdio
, orssehttp- Additional fields:
,env
,disabled
,disabled_tools
.timeout
Options
{ "options": { "skills_paths": ["./skills"], "disabled_tools": ["bash", "sourcegraph"], "disabled_skills": ["crush-config"], "tui": { "compact_mode": false, "diff_mode": "unified", "transparent": false }, "auto_lsp": true, "debug": false, "debug_lsp": false, "attribution": { "trailer_style": "assisted-by", "generated_with": true } } }
[!IMPORTANT] The following skill paths are loaded by default and DO NOT NEED to be added to
:skills_paths,.agents/skills,.crush/skills,.claude/skills.cursor/skills
Other options:
context_paths, progress, disable_notifications, disable_auto_summarize, disable_metrics, disable_provider_auto_update, disable_default_providers, data_directory, initialize_as.
Tool Permissions
{ "permissions": { "allowed_tools": ["view", "ls", "grep", "edit"] } }
Environment Variables
- Override global config locationCRUSH_GLOBAL_CONFIG
- Override data directory locationCRUSH_GLOBAL_DATA
- Override default skills directoryCRUSH_SKILLS_DIR