So I don't hit Claude Pro 5-hour session limits that often, and I've never actually hit the weekly limit. The times I have hit it made me look into how that session timer actually works.

The interesting thing that I noticed was that it always stays at "Resets in 5 hours" unless and until you start using it. In other words, if you haven't consumed any tokens for a given session, the start to the session is rolling, until your first prompt uses at least one token, and then the 5 hours starts.

The consequence of this is that you can start working at 9 am, or 10 am, or 11 am, and in all cases, whenever you start, you will have only one session's quota of tokens to use for the next five hours. But if you just do a small prompt at 9 am, it will start the five hour reset timer, even if you don't really start working until 10 am -- meaning that once you start working in earnest, you'll have essentially the same number of tokens to use with less time to wait before reset/refresh.

So this made me think about my days doing embedded systems programming, where the problem was the reverse... embedded microcontrollers usually have what's called a "watchdog timer" that you load with a value, and it counts down. If it ever hits zero, then the assumption is that your (usually single-threaded) code is stuck in a loop, and it will reset everything to get itself out. So you have to make sure to "kick the dog" every so often to keep it from resetting.

In this case, we're kicking off the timer early (to decrease time to reset) instead of kicking it to prevent a reset. If you start working at 9a, maybe 6 am would be a good time for that to happen (so you only have a couple hours to reset on the first session of the day). It's better to not have to do this locally, so you don't have to keep your laptop on overnight.

After a bit of searching, it turns out I wasn't the first person to think of this (surprise!). I found
this Reddit thread that proposed to do it as a Claude routine, which worked well.

In the Claude desktop app, just go to Routines, name the routine, click Draft:

Then add a single instruction ("Output only the digit 1" was what I ended up with after trying a few things to minimize token usage). Choose the cheapest model (in this case Haiku 4.5) and you'll have to add a Cloud Environment immediately below that if you haven't created a cloud routine in Claude before. Then create a trigger with the time you want it to run, and you're done.