Feature Request: Automatic model/effort tier switching based on daily usage
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.jsonand per-session.jsonlfiles - 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
modelandeffortLevelsettings - Aligns with Claude's goal of being a thoughtful, resource-aware assistant
- Would benefit every user on a metered or capped plan
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗