Feature Request: Automatic model/effort tier switching based on daily usage

Resolved 💬 2 comments Opened Feb 24, 2026 by Scomalia Closed Mar 25, 2026

Summary

Add built-in support for automatically switching the active model and effort level based on daily usage, so users can maximize quality early in the day and conserve quota as limits approach.

Motivation

Power users on Claude Max and similar plans have finite daily usage limits. Currently there's no way to automatically tier down from a high-quality model (e.g. Opus/high effort) to a more conservative one (e.g. Sonnet/medium effort) as usage approaches the daily cap — users either burn through their quota or manually manage it.

Proposed Behavior

Add a settings option like:

{
  "modelPolicy": {
    "default": { "model": "opus", "effortLevel": "high" },
    "thresholds": [
      { "dailyUsagePct": 75, "model": "sonnet", "effortLevel": "medium" }
    ]
  }
}
  • Claude Code already tracks daily message/token counts in ~/.claude/stats-cache.json and per-session .jsonl files
  • At session start, compare today's usage against the configured threshold(s)
  • Automatically apply the matching model/effort tier
  • Optionally surface a brief status line at startup: ⚠ 78% daily usage — using sonnet/medium

Current Workaround

This can be hacked together with a shell wrapper function that calls a Python script to read ~/.claude/projects/**/*.jsonl, count today's assistant messages, and rewrite settings.json before launching. But it's fragile, requires manual setup, and breaks if the internal file format changes.

Why This Should Be Built-In

  • Claude Code already has all the data needed (local session files, stats cache)
  • It's a natural extension of the existing model and effortLevel settings
  • Aligns with Claude's goal of being a thoughtful, resource-aware assistant
  • Would benefit every user on a metered or capped plan

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗