When Does Claude Code Rate Limit Reset?

Claude Code has two separate limit windows. They reset independently, and neither resets at a fixed clock time.

Short answer: The 5-hour session window resets 5 hours after your oldest in-window request. The 7-day weekly cap resets 7 days after your oldest in-week request. Both are rolling windows, not "every Monday" or "every night."

The two windows explained

WindowDurationHow it resets
Session5 hoursRolling: oldest request in the window falls off after 5h from when it was made
Weekly7 daysRolling: oldest request falls off after 7 days from when it was made

Because the windows are rolling, there's no single "reset time." If you're at 100% session usage and your oldest session request was made 4h50m ago, you have ~10 minutes to wait. The reset is continuous, not a cron job.

How to see your exact countdown

Headroom shows both countdowns live in the menu bar dropdown:

Session   23%  ████░░░░░░  resets in 3h 12m
Weekly    74%  ███████░░░  resets in 4d 9h

When you're near a limit, the status bar changes color — amber at 70%, red at 90%. You see the pressure before the hard stop, not after.

Without Headroom, the only way to check is the /usage command inside Claude Code — a command you have to remember to run, in an interface you have to switch to.

Check the reset time from the command line

Once Headroom is installed, the countdown is also in the local JSON file:

# See both countdowns as seconds-until-reset
cat ~/.claude/headroom-usage.json | python3 -c "
import json,sys,time
d=json.load(sys.stdin)
sr=d.get('sessionResetSec',0)
wr=d.get('weeklyResetSec',0)
def fmt(s): h,r=divmod(int(s),3600); m=r//60; return f'{h}h {m}m' if h else f'{m}m'
print(f'Session resets in: {fmt(sr)}')
print(f'Weekly  resets in: {fmt(wr)}')
"

Or with jq (raw seconds, useful for scripting):

jq '{sessionResetSec,weeklyResetSec}' ~/.claude/headroom-usage.json

Why did it stop me mid-task?

Claude Code enforces both limits independently. You can hit the session window at any point in a work session — not just after 5 straight hours. The window counts from when each request was sent, not from when you opened Claude Code. A morning burst + an afternoon burst can combine to fill the window by 3pm even though neither alone was heavy.

The weekly cap works the same way: it's not "all the tokens I used this calendar week." It's a rolling 7-day window anchored to when each request was made.

Strategy while waiting for a reset

If you hit the session window (5h): you usually don't have to wait the full 5 hours. The window is rolling — requests from 4h45m ago fall off in 15 minutes. Watch the Headroom countdown.

If you hit the weekly cap: you're waiting days, not hours. This is the one to avoid by watching the weekly % number. Headroom shows the weekly % in the status bar at all times; the amber threshold at 70% is your "start planning" signal.

Install Headroom — see both countdowns always

brew install --cask patwalls/tap/headroom

Or download directly. Free, MIT, ~267 KB. No API key, no login — it reads the same numbers Claude Code already computes.

Full guide to Claude Code rate limits
Set up threshold alerts
FAQ