Claude Codeのコストを半分にした7つの設定
はじめに
基礎編では /compact や /clear といった日常的なコスト管理術を紹介した。
この記事では、その先にある設定レベルの最適化を解説する。Claude Codeの内部構造を理解し、「知らないうちにトークンを消費していた」ポイントを潰していく。
恐怖の実例:こうなる前に
設定を見直す動機として、まず実際に報告されているコスト事故を紹介する。
| 事例 | 金額 | 原因 |
|---|---|---|
| 5時間のデバッグセッション | $3,500+(約52万円) | コンテキスト肥大化に気づかず継続 |
| auto-compact の無限ループ | 数百ドル | コンパクト→復元→コンパクトの繰り返し |
| Agent Teams の並列実行 | 通常の7倍 | サブエージェントがそれぞれトークン消費 |
これらは極端な例だが、「設定を知らない」だけで発生しうる。以下の7つの設定で予防できる。
1. MCPサーバーの隠れたコスト
MCPサーバーは便利だが、接続しているだけでトークンを消費する。
なぜコストが発生するのか
MCPサーバーを接続すると、そのサーバーが提供する「ツール定義」が毎リクエストのコンテキストに含まれる。つまり:
- サーバーがアイドル状態でも、ツール定義分のトークンが消費される
- 1サーバーあたり約 14,000トークン(ツール数による)
- 3つ接続すれば、何もしなくても42,000トークン/リクエスト
使ってないのに金が溶ける。これ、電気消し忘れた部屋の比じゃない。
対策
使わないMCPサーバーは外す。必要な時だけ接続する。
# 現在の接続を確認
claude mcp list
# 不要なサーバーを削除
claude mcp remove サーバー名
CLI代替があるならCLIを使う。たとえばGitHub操作は MCP サーバーよりも gh コマンドの方がコンテキスト効率が良い。
| 操作 | MCPサーバー | CLI代替 |
|---|---|---|
| GitHub | MCP GitHub Server(14K+トークン/リクエスト) |
gh コマンド(0トークン) |
| ファイル検索 | MCP Filesystem Server | Claude Code内蔵のGlob/Grep |
| Web検索 | MCP Web Search | Claude Code内蔵のWebSearch |
2. Skills分離で98%トークン削減
CLAUDE.md に全ルールを詰め込んでいないだろうか。
基礎編で「CLAUDE.md は短くする」と書いたが、ではルールをどこに書くのか。答えは Skills(スキル)だ。
CLAUDE.md vs Skills
| CLAUDE.md | Skills | |
|---|---|---|
| 読み込みタイミング | 毎リクエスト | 必要な時だけ |
| コスト影響 | 1行増える = 全リクエストのコスト増 | 使わない限りゼロ |
| 向いている内容 | プロジェクト全体の基本ルール | 特定タスク用の詳細ルール |
具体例
たとえば「コミットメッセージの書き方」が50行あるとする。
CLAUDE.md に書いた場合:ファイルを読むだけのリクエストでも50行分のトークンを消費する。
Skillsに分離した場合:/commit を実行した時だけ読み込まれる。それ以外のリクエストでは消費ゼロ。
公式ドキュメントによると、CLAUDE.md は 500行以下 が推奨。それを超えるルールは Skills に移動すべき。
3. Hooksでログフィルタリング
Hooksを使って、不要なツール出力をフィルタリングできる。
なぜ効果があるのか
Claude Code がツールを実行すると、その出力全体がコンテキストに入る。たとえば git log の結果が500行あれば、500行分のトークンを消費する。地味に痛い。
Hooks の PostToolUse で出力を加工し、必要な部分だけを残すことで、90〜99%のトークン削減が可能。
設定例:Bash出力の行数制限
{
"hooks": {
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "jq -r '.tool_output' | head -50"
}
]
}
]
}
}
この設定で、Bash コマンドの出力が最大50行に制限される。git log やテスト結果の出力が数百行になっても、50行しかコンテキストに入らない。
4. /compact の最適タイミング
基礎編では「長い会話の途中で /compact」と書いた。ここでは最適なタイミングを示す。
自動コンパクトは遅すぎる
自動コンパクトはコンテキストの 95% で発動する。しかし80%を超えたあたりから、すでにパフォーマンスが低下し始める。
推奨:コンテキストの 50〜70% 時点で手動 /compact を実行する。
どうやって50〜70%を知るか
正確な数値を知る方法は限られるが、以下が目安になる:
- 20回以上やり取りした:ほぼ確実に50%を超えている
- 大きなファイルを複数読ませた:一気に消費する
- Claudeの応答が遅くなった:コンテキスト肥大化のサイン
迷ったら /compact して損はない。
5. /rewind と Summarize from here の活用
会話の途中で「ここから先は間違った方向に行った」と気づくことがある。
/rewind
会話を特定のポイントまで巻き戻すコマンド。間違った試行錯誤をなかったことにできる。
/rewind
直近の会話を巻き戻すピッカーが表示される。
Summarize from here
巻き戻した後、それまでの会話を要約させる。これにより:
- 間違った試行錯誤がコンテキストから消える
- 正しい情報だけが残る
-
/clearと違い、有用な情報を保持したままリセットできる
/clear は「全部忘れる」、/rewind + 要約は「失敗だけ忘れる」。
6. Agent Teamsのコスト構造を理解する
Claude Code の Agent Teams(サブエージェント並列実行)は強力だが、コストも高い。
なぜ7倍になるのか
Agent Teams では複数のサブエージェントがそれぞれ独立したコンテキストを持つ。つまり:
- メインエージェント:1コンテキスト分のコスト
- サブエージェント×N:各1コンテキスト分のコスト
- 合計 = (1 + N) × 単体コスト
3つのサブエージェントを並列で動かすと、単純計算で4倍。さらに各エージェントがファイルを読み込むと、7倍以上になることも。
いつ使うべきか
| 状況 | 判断 |
|---|---|
| 明確に独立したタスクが複数ある | 使う価値あり |
| 急いでいないが正確さが必要 | 直列で十分 |
| コスト重視 | 直列で1つずつ |
7. Boris Chernyの「一発正解」哲学
Claude Code の開発者 Boris Cherny は、コスト最適化について逆説的な哲学を持つ。
大きいモデルで一発正解を出す方が、小さいモデルで何度も修正するより安い。
つまり:
| アプローチ | トークン消費 |
|---|---|
| 安いモデルで試行 → 失敗 → 修正指示 → 再試行(×3回) | 4倍以上 |
| 高性能モデルで一発正解 | 1倍 |
具体的な行動:
- 指示を明確にする(基礎編テクニック3)。曖昧な指示での失敗が最大のコスト
- Plan Mode で設計を確認してから実装(基礎編テクニック5)。やり直しを防ぐ
- モデルの知能を信じて、十分な情報を与える。情報不足が試行錯誤の原因
「ケチって小さいモデルにする」よりも「正確な指示で一発で終わらせる」方がトータルコストは低い。
コスト最適化チェックリスト
| チェック項目 | 確認方法 |
|---|---|
| 不要なMCPサーバーが接続されていないか | claude mcp list |
| CLAUDE.md が500行を超えていないか | wc -l CLAUDE.md |
| 特定タスク用ルールがSkillsに分離されているか |
.claude/skills/ を確認 |
/compact を50〜70%時点で実行しているか |
20回以上やり取りしたら実行 |
| Agent Teams を不必要に使っていないか | 直列で十分か検討 |
まとめ
| 設定 | 期待効果 |
|---|---|
| MCP接続を最小化 | リクエストあたり14K+トークン削減 |
| Skills分離 | 不使用時のトークン消費ゼロ |
| Hooksでログ制限 | 出力の90〜99%をカット |
/compact を早めに実行 |
パフォーマンス低下前にリセット |
/rewind で失敗を巻き戻す |
不要なコンテキストを除去 |
| Agent Teams を慎重に使う | 最大7倍のコスト増を回避 |
| 一発正解を狙う | 試行錯誤の繰り返しを防止 |
基礎編の内容(/compact、/clear、具体的な指示)は全員に必要な「基本の薬」。
この上級編は、それでもコストが気になる人のための「専門外来」。自分の使い方を振り返り、該当するものから試してみてほしい。
Discussion