Claude CodeとCrushの違い — モデル切替とLSP連携を比較
CharmのターミナルエージェントCrushとClaude Codeを、モデル切替・LSP・MCP・権限・設定ファイルの5点で比較します。crushrcの記述例と、Claude Code側の対応する設定も並べます。
Crushは、Charmが公開しているターミナル向けのコーディングエージェントです。Claude Codeとの最大の違いは、モデルの選択肢にあります。Crushは複数のLLMを選べて、セッション途中でも切り替えられます。Claude Codeは、Claudeモデルを前提にした設計です。
この記事では、設定の書き方まで含めて両者を対応づけます。取り上げるのは、モデル切替、LSP、MCP、権限、設定ファイルの5点です。同じ構図の比較はClaude CodeとOpenCodeの違いにもあります。
Crushとは何か — 複数のLLMを選べるターミナルエージェント
Crushは、Charmが公開しているターミナル向けのコーディングエージェントです。機能一覧のうち、Claude Codeとの比較に関わる6点を挙げます。
Crushの特徴
複数モデル対応
多数のLLMから選べます。OpenAI互換またはAnthropic互換のAPIで、自前のモデルも足せます。
途中でのモデル切替
コンテキストを保ったまま、セッション途中でLLMを切り替えられます。
セッション管理
プロジェクトごとに、複数の作業セッションとコンテキストを持てます。
LSP連携
人間と同じように、LSPから追加の文脈を取り込みます。
MCP拡張
http、stdio、sseの3種類で、MCPサーバーを足せます。対応環境
macOS、Linux、Windows(PowerShellとWSL)、Android、BSD系で動きます。
ライセンスはFSL-1.1-MITです。ソースコードは公開されていますが、一定期間後にMITへ移行する形式で、OSIが定義するオープンソースとは異なります。ClaudeモデルもAnthropicのAPIキーで使えます。環境変数の表には、ANTHROPIC_API_KEY と、Amazon Bedrock経由でClaudeを使うためのAWS系の変数が並びます。
つまりCrushは、Claudeを使えるが、Claudeに限定されないエージェントです。Claude Codeを使っている人が気になるのは、乗り換えたときに何が変わるかでしょう。以降で順に対応づけます。
モデル切替の違い — セッション途中の切り替えとキャッシュの扱い
Claude Codeにも、セッション中にモデルを切り替える手段があります。/model <alias|name> で即座に切り替わり、引数なしなら選択画面が開きます。エイリアスは sonnet、opus、haiku、fable などです。
/model sonnet切り替えられるのは、Claudeのモデルの間です。ゲートウェイ経由の利用について、Claude Code側のドキュメントには「非Claudeモデルへのルーティングは、どのゲートウェイを通してもサポートしない」と書かれています。他社モデルを使いたい場面では、Crushのような別のエージェントが選択肢になります。
Claude Code側には、切り替えのコストを示す記述があります。モデルごとにキャッシュが別なので、/model で切り替えた直後のリクエストは、会話履歴の全体をキャッシュなしで読み直します。内容が同じでも変わりません。キャッシュが温かい間は、切替前に確認が出ます。
Crushは、切替時にコンテキストが保たれるとだけ説明しています。切替後のコスト面の挙動は、READMEに記載がありません。長いセッションで頻繁に切り替えるなら、利用先のプロバイダーの課金ルールを自分で確かめる必要があります。
使えるプロバイダーの追加方法
Crushは、プロバイダーとモデルをコマンドで追加します。OpenAI互換のAPIなら、--type openai-compat を指定します。
provider add deepseek --type openai-compat \
--base-url "https://api.deepseek.com/v1" \
--api-key "$DEEPSEEK_API_KEY"
model add deepseek/deepseek-chat \
--name "Deepseek V3" \
--context-window 64000 \
--default-max-tokens 5000openai と openai-compat は別の種類です。OpenAI自身を経由・中継するときは openai、OpenAI互換の他社APIには openai-compat を使います。Anthropic互換のAPIには --type anthropic を使い、--extra-header anthropic-version 2023-06-01 のようにヘッダーを足します。
ローカルモデルは、ollama、llamacpp、lmstudio、litellm、omlx の種類を指定すると、モデル一覧を自動で取得します。
Claude Code側でこれに近いのは、ANTHROPIC_BASE_URL で別のエンドポイントを指す構成です。ただし、前述のとおりClaudeモデルが前提になります。モデルの振り分けを試すなら、Claude Code Routerの設定と注意点が参考になります。
LSP連携の違い — 設定の置き場所が変わる
CrushのLSPは、crushrc に1行ずつ書いて追加します。
lsp add go --command "gopls" --env "GOTOOLCHAIN go1.24.5"
lsp add typescript --command "typescript-language-server" --args --stdio
lsp add nix --command "nil"Claude Codeでは、LSPはプラグインの一部として設定します。プラグイン直下の .lsp.json、または plugin.json の lspServers に、サーバー名ごとの設定を書きます。command と extensionToLanguage(拡張子とLSPの言語IDの対応)が必須です。
{
"lspServers": {
"go": {
"command": "gopls",
"args": ["serve"],
"extensionToLanguage": { ".go": "go" }
}
}
}対応関係を表にします。
| 項目 | Crush | Claude Code |
|---|---|---|
| 追加方法 | Crushlsp add <名前> --command ... | Claude Codeプラグインの .lsp.json / lspServers |
| 拡張子との対応 | CrushREADMEに記載なし | Claude CodeextensionToLanguage で明示 |
| 環境変数 | Crush--env | Claude Codeenv |
| 編集後の診断 | CrushREADMEに記載なし | Claude Codediagnostics(既定は true)で文脈に取り込み |
Claude Code側には、起動待ちの startupTimeout、クラッシュ時の restartOnCrash など、運用向けの項目もあります。LSPを使ったコードの理解を掘り下げた記事は、Claude Codeのコードインテリジェンス(LSP)活用ガイドです。
Crush側は、設定がコマンド1行で済む手軽さが強みです。Claude Code側は、プラグインとして配布・共有できる点が違いです。
MCP・権限・フックの違い
MCPは同じ3種類、ただし推奨の向きが違う
MCPの接続方式は、Crushが stdio、http、sse の3種類です。Claude Codeも stdio、http、sse に対応しますが、ドキュメントはHTTPを推奨し、SSEは非推奨としています。
Crushでの追加は、crushrc に書きます。
mcp add github --type http --url https://api.github.com/mcp/ \
--timeout 10 --header Authorization "Bearer $GH_PAT" \
--disabled-tools create_issueClaude Codeでは claude mcp add --transport http <name> <url> で追加します。
claude mcp add --transport http notion https://mcp.notion.com/mcpCrushはMCPサーバーごとに --disabled-tools でツールを個別に無効化できます。OAuthが要るサーバーは、JSON設定で "oauth": true を指定する形です。
権限は「聞く」が既定、起点の持ち方が違う
どちらも、既定ではツール実行の前に確認が出ます。Crushは、確認なしで通すツールを列挙します。
permissions allow view ls grep edit
permissions deny bash sourcegraphpermissions deny は、ツールをエージェントから見えなくします。全部の確認を飛ばすのは --yolo フラグです。
Claude Codeは /permissions で、deny、ask、allowの順にルールを評価します。最初に一致したものが結果を決めます。広いdenyルールは、狭いallowルールがあっても優先されます。ルールの置き方は/permissionsコマンドの解説にまとめています。
全確認を飛ばす手段は bypassPermissions モードです。ただしこちらも、denyルールは効き続けます。Claude Code側ではdenyが最優先なので、「許可を広げても、禁止は崩れない」構造です。
フックは両方にあるが、成熟度が違う
Crushのフックは「preliminary support(暫定的な対応)」の段階で、詳細は別のガイドに任されています。Claude Codeのフックは、PreToolUseなどのイベントに処理を挟む仕組みです。テスト自動実行への使い方は、hooksでテストを自動実行する記事にあります。
設定ファイルと指示ファイルの違い
Crushの設定は crushrc で、Bashに専用のビルトインが加わった形式です。旧来のJSON形式もサポートされますが、非推奨の扱いです。置き場所の優先順位は、./.crushrc、./crushrc、~/.config/crush/crushrc の順です。
crushrc は信頼されたコードとして実行されます。中身を確認していないディレクトリでは、Crushを起動しないよう注意書きがあります。
指示ファイルは、次のように対応します。
| 用途 | Crush | Claude Code |
|---|---|---|
| 全体共通の指示 | Crush~/.config/crush/CRUSH.md / ~/.config/AGENTS.md | Claude Code~/.claude/CLAUDE.md |
| プロジェクトの指示 | Crushプロジェクトの初期化時に生成。既定名は AGENTS.md | Claude Code./CLAUDE.md(AGENTS.md を代わりに読む場合もある) |
スキルの置き場所は、乗り換えの障壁を下げます。Crushは ~/.claude/skills とプロジェクトの .claude/skills も読み込みます。Claude Code向けに作ったSKILL.mdを、そのままCrushでも使える構成です。
もう1点、コミットの署名があります。Crushは既定でGitコミットに Assisted-by: Crush:[ModelID] の行と Generated with Crush の行を足します。止めるときは、次のように設定します。
option attribution-trailer-style none
option attribution-generated-with falseClaude Code側のコミット文は、attribution 設定で調整します。
使い分けの目安
目安を表にします。
| 状況 | 向く選択 |
|---|---|
| Claudeモデルだけで足りる | 向く選択Claude Code |
| Claude以外のモデルや、ローカルモデルも同じ画面で試したい | 向く選択Crush |
| プラグインで設定を配布・共有したい | 向く選択Claude Code |
設定を crushrc のBash数行で軽く済ませたい | 向く選択Crush |
| フックで細かく制御したい | 向く選択Claude Code |
既存の .claude/skills を別のエージェントでも使いたい | 向く選択Crush(読み込み対象に含まれる) |
併用も成り立ちます。スキルは共有でき、指示ファイルも AGENTS.md を軸にすれば揃えられます。MCPサーバーは、それぞれの設定に同じものを登録するだけです。
よくある質問
CrushでClaudeモデルは使えますか
使えます。起動後に ctrl+l でモデル選択画面を開き、Anthropicを選んでキーを貼る方法もあります。環境変数 ANTHROPIC_API_KEY を設定しておく方法でも動きます。
Crushのモデル一覧は誰が更新していますか
Catwalkというオープンソースのリポジトリが管理しています。既定では、最新の一覧を自動で確認して取り込みます。制限された環境では option provider-auto-update false で止められます。
使った内容は送信されますか
利用状況の匿名メトリクスが記録されます。プロンプトと応答は収集されず、環境変数でオプトアウトできます。
まとめ
CrushとClaude Codeは、ターミナルでコードを書くエージェントという点で同じです。違いは、前提にする世界にあります。Crushはモデルの幅を広げ、設定を軽く保つ設計です。Claude Codeはモデルを絞る代わりに、プラグイン・権限・フックを細かく作り込んでいます。
Claudeだけで足りるなら、乗り換える理由は多くありません。他社モデルやローカルモデルが要件に入った時点で、Crushを並べて試す価値が出ます。