
Claude Code のセッションを長くしすぎないために入れた工夫3つ
はじめに
こんにちは。クラスメソッドオペレーションズの山本です。
Claude Code を使っていて、使用量リミットに何度も到達するようになりました。原因を知りたかったので、Claude Code に自分の利用ログを集計してもらいました。分かったのは、長く続けたセッションほど消費が大きいということです。
公式ドキュメントにも、長いセッションで使用量が増える理由が書かれています。
長いコンテキスト: Claude Code はすべてのリクエストで完全な会話を送信し、Claude がツールを使用するたびに、そのツール結果のバッチを含む別のリクエストを送信します。プロンプトキャッシングを使用すると、Claude Code はその履歴をキャッシュされたトークンレートで再度読み込むため、一日中開いているセッションの 1 行の質問でも、会話全体の使用量が発生します。(...)
この記事では、その後に入れた工夫を3つ紹介します。どれも実装は Claude Code に頼んで作ってもらいました。効果を検証した記事ではなく、アイデアの共有です。
1. コンテキストが大きくなったら知らせる hook
セッションが長くなったことに自分で気づけるよう、Claude Code に通知できるようにしてほしいと頼みました。Claude Code が調べて作ったのが、hook で毎ターンのコンテキスト量を読み、200k を超えたら「作業を続けるなら /compact、別の作業に移るなら /session-save → /clear」を勧める仕組みです。
~/.claude/settings.json の配線はこれだけです。
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "bash \"$HOME/.claude/hooks/context-guard.sh\"",
"timeout": 10
}
]
}
]
}
}
通知を受けたあと、どちらにするかは自分で決めています。
なお、この hook はユーザーが入力したときに走ります。そのため、1回のターンの途中でコンテキストが膨らみ、次の入力までに下がった場合は通知が出ません。
2. 肥大したセッションを畳む運用
別の作業に移るときは、/session-save → /clear で畳むことにしました。
/session-save は自作のスキルです。いま何をしているか・次の一手・決めたことなどを作業ログのファイルに書き出します。書き出してから /clear すれば、作業の文脈はファイルに残したまま、新しいセッションで始め直せます。
公式も、関係のない作業に移るときは /clear を勧めています。
タスク間でクリアする: 関連のない作業に切り替えるときは
/clearを使用して新しく開始します。古いコンテキストは後続のすべてのメッセージでトークンを無駄にします。(...)
/compact との違いについても、公式に次の記述があります。
コンパクション:
/compactは要約するコンテキストを読み込むため、大規模なコンテキストをコンパクトにすること自体が大規模なリクエストです。継続性ではなく新しいスタートが必要な場合、/clearはコストがかかりません。
ただ、実際は /compact で済ませることのほうが多いです。
長時間離れる前にも畳む、というルールも CLAUDE.md に入れています。キャッシュの有効期間を過ぎてから再開すると、全履歴を処理し直すところから始まるためです。
キャッシュミス: キャッシュライフタイムより長い休止後の最初のメッセージはキャッシュをミスし、完全なコンテキストを再処理します。ライフタイムはサブスクリプションで 1 時間で、使用クレジットを使用している場合は 5 分に短縮されます。API キーまたはクラウドプロバイダーでは、デフォルトで 5 分です。(...)
3. 自動コンパクトのウィンドウを 500k に設定
Claude Code に調べてもらったところ、私の環境では自動コンパクトがほとんど走っていませんでした。1M コンテキストのモデルでは、自動コンパクトが走る時点の既定値が大きいためです。
ネイティブの 1M ウィンドウで実行されるモデルは、ウィンドウが埋まる前に、デフォルトで約 967K トークンの時点で圧縮します。(...)
この時点(自動圧縮ウィンドウ)は /autocompact コマンド・設定ファイル・環境変数で変えられます。私は settings.json の環境変数で入れています。
{
"env": {
"CLAUDE_CODE_AUTO_COMPACT_WINDOW": "500000"
}
}
最初は 200k でもよいと思っていました。ただ、自動でコンパクトされると、作業の主旨となる文脈が抜け落ちる可能性があると聞いていて、自分でもそう感じたことがありました。要約で失われうるものについて、公式ドキュメントには次の記述があります。
Claude Code はコンテキストウィンドウの制限に近づくと、自動的にコンテキストを管理します。古いツール出力をクリアし、必要に応じて会話を要約します。リクエストと主要なコードスニペットは保持されます。会話の早い段階からの詳細な指示は失われる可能性があります。(...)
そこで、200k の2倍より多めに猶予をとって 500k にしました。200k を超えたあたりから 500k までのあいだに、自動ではなく自分で /compact できればいい、くらいの感覚です。
最後に
誰かの参考になれば幸いです。
参考資料
- コストを効果的に管理する - Claude Code Docs
- Claude Code の仕組み - Claude Code Docs
- モデル設定 - Claude Code Docs
- hooks リファレンス - Claude Code Docs
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました








