November 15, 2026 · 12 min read
48 Claude Code Automations That Run My Business While I Sleep

I automated 48 jobs with Claude Code, and it feels like nearly 100 times more productive. A backup at 2 a.m., a reply draft for every new support email, a report in my inbox at 6, and none of it needs a chat window left open all night.
I made a video about the one idea behind this and the five rules that keep it from going wrong. This article has what the video has no room for: how I counted the 48, the real schedule file for one of my jobs, a table of real jobs with the times they run, the code behind rules four and five, how Claude's own scheduled tasks differ, a prompt you can copy, and what I did not test.

The short version
- Don't keep the AI awake. Have Claude Code build the job once, then let your Mac's built-in timer (launchd) run it.
- A job is three small things: a script, a schedule file that says what to run and when, and a short note on how to stop it.
- The script calls Claude only for the steps that need AI. Counting, sorting and sending are plain steps.
- Five rules keep night jobs safe: draft, never send; ask before adding; write down how to stop it; a name you recognize; never twice at the same time.
- Start with one job that only reads and reports.
Why I do not leave a chat running overnight
Maybe you have seen the videos that say Claude works while you sleep, so you try it. You leave a chat running overnight. In the morning it stopped halfway, or it hit its limit, or it did something you never asked for. Or you never try at all, because you cannot watch it at 3 a.m. And even when it works, you have to remember to start it again every night.
The topic is everywhere right now. The Short in the picture, about Claude features that run your whole business while you sleep, had almost 500,000 views when I looked on November 8, 2026. I checked what Claude itself offers for this. These are the facts from the official pages, which I read on November 8, 2026:
- Claude has scheduled tasks. The version on your computer (Desktop) is listed with "Requires machine on: Yes", so it runs only while your computer is awake.
- The cloud version runs on Anthropic's computers, not yours.
- The Routines page says: "Scheduled tasks draw down subscription usage the same way interactive sessions do."
- The same page says organizations with usage credits turned on "can keep running scheduled tasks on metered overage". That means runs past your limit can keep going, billed on top of your plan.
Both are useful. I chose a different way, because I wanted all of this to fit inside the plan I already pay for. A script on my Mac's timer calls Claude only for the steps that really need it. Counting, sorting and sending never touch my plan. That is why 48 jobs can run every day and I stay inside my subscription.
The one idea: Claude builds it, launchd runs it
I have worked in IT for over 20 years and run my own company for 22. I do not write the code anymore. Claude Code writes all of it, and I decide what gets built. When a job breaks, my business is what stops, so I had to make every job boring and safe.
Think of Claude as the person who sets the alarm, not the person who stays up all night. When I need something done every day, I ask Claude Code once. It writes a small script, which is a short list of steps the computer can follow on its own. Then it hands the script to launchd, the part of macOS that starts things on a schedule. It is the same timer your Mac already uses for its own housekeeping, and you are just adding your own.
The timer reads a small settings file in ~/Library/LaunchAgents. The file says what to run and when. At that time the Mac runs the script, and Claude does not need to be open.
If a step needs AI, like writing a reply, the script calls it for just that step. Everything else is plain steps, so the job runs the same way every day: it does not drift, it does not get creative, and it does not forget.
This is the real schedule file of my 6 a.m. job that emails me which videos are ready. I changed only the folder paths, and I left out a few lines that do not matter here:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>Label</key><string>com.example.video-status-mail</string>
<key>ProgramArguments</key>
<array><string>/path/to/_video-status-mail</string></array>
<key>StartCalendarInterval</key>
<dict><key>Hour</key><integer>6</integer><key>Minute</key><integer>0</integer></dict>
<key>RunAtLoad</key><false/>
<key>Nice</key><integer>10</integer>
<key>StandardOutPath</key><string>/path/to/logs/launchd.out.log</string>
<key>StandardErrorPath</key><string>/path/to/logs/launchd.err.log</string>
</dict>
</plist>
My jobs use StartCalendarInterval for a fixed time of day and StartInterval for "every N seconds". The support email job uses StartInterval with 600, which is every 10 minutes.
What "48" means, and how I counted
The 48 is 26 plus 22. I counted them on my own Mac, and I ran the same two commands again on November 15, 2026, and got the same numbers:
ls ~/Library/LaunchAgents | grep -E '^(com|jp)\.lifescape\.' | wc -l
26
crontab -l | grep -vE '^\s*(#|$)|^[A-Z_]+=' | wc -l
22
- 26 are launchd jobs. On November 8, 2026, I also checked that all 26 are loaded, by comparing against
launchctl list. - 22 are lines in cron, the older timer that Unix has had for decades.
- My first count was 49, because I had counted the
PATH=line in crontab. That line is a setting, not a job, so the number is 48.
The names in the pictures are partly blurred, and the cron commands are fully blurred. The times are real.
The backup at 2 a.m. is a cron line, 0 2 * * *, that runs my backup script.
Real jobs, and when they run
I read the schedule files of five of my jobs on November 15, 2026. This is what they say:
| Job | Schedule in the file | What it does |
|---|---|---|
| video-status-mail | Every day at 6:00 | Emails which videos are ready for today, and what is stuck |
| ceo-todo-mail | Every day at 7:30 | Emails the things only I can decide |
| support-mail-autodraft | Every 600 seconds | Writes reply drafts for new support email. Sends only after I press approve |
| outliers-weekly | Monday at 6:00 | Lists videos on other channels that did far better than usual |
| disk-clean | Every day at 5:00 | Clears space on the disk, only things that can be rebuilt |
One thing to note. In the video I said the disk job runs every Sunday. The schedule file I read on November 15, 2026 has no weekday in it, so it fires every day at 5:00. I am telling you what the file says.
The 6 a.m. email tells me which videos are ready for today, and if something is stuck, what is stuck. The picture is a sample layout, not a real email.
The 7:30 email lists the things only I can decide. The job picks them from the notes that every Claude session leaves behind, and it picks them by fixed rules, not by asking an AI. So it finds the same things the same way every morning.
The Monday job scans other channels in my niche and lists the videos that did far better than usual. That list is where many of my video topics come from, including the idea for this video.
The disk job only deletes things that can be rebuilt, like browser caches and build files. It skips anything touched in the last 14 days. I read the script on November 15, 2026. It has a constant for 14 days, and for one kind of old record it only touches files older than that.
None of these needed me to stay up. I asked once, and they have run every day since.
Five rules that keep night jobs from going wrong
Jobs that run while you sleep can also go wrong while you sleep. These are the five rules I learned the hard way.
Rule 1: anything that reaches a customer is a draft, never a send
A few months ago, while Claude was looking into a missing order email, it re-sent that email to a real customer again and again, without asking me. It meant well. But a message to a customer is my decision, not the AI's. Now emails to customers wait for my approval. The job can write. Only I can send. My support email job works this way: it writes a draft and notifies me, and a reply goes out only after I press approve.
Rule 2: never let the AI add something that keeps running without asking you first
Once, Claude set up its own background databases for different projects. Later, nobody could say what half of them were for, and I had to go through them one by one. So now, before it adds anything new that keeps running, it asks me in one line.
Rule 3: write down how to stop every job, right next to it
Every one of my jobs has a note at the top: what it does, where it lives, when it runs, and the one command that turns it off. The same note goes into Claude's memory, so the next chat knows the job exists and how to stop it. At 3 a.m., you do not want to be searching for how to stop something.
#!/bin/bash
# What: drafts support replies
# Where: ~/jobs/support-draft/
# When: every 10 minutes
# Stop: launchctl bootout gui/$(id -u)/com.example.support-draft
Rule 4: give every job a name you can recognize
Your Mac lists everything allowed to run in the background in System Settings. If every item there just says bash, you cannot tell them apart.
So each of my jobs starts through a tiny file with its own name, like _video-status-mail. When something odd shows up in that list, I know in two seconds which job it is.
This is the real entry file of my 6 a.m. job, with the folder path changed. It is three lines:
#!/bin/bash
# launchd: com.example.video-status-mail (every day at 6:00)
exec /usr/bin/python3 -I /path/to/status_mail.py "$@"
The schedule file points at this file, not at the script. That is why the list shows _video-status-mail instead of bash.
Rule 5: make sure a job can never run twice at the same time
If a job is still running when its next turn comes, a second run can start and do everything twice, like sending two replies. So my support email job holds a lock. If the last run has not finished, the new one quietly stops.
LOCK="/path/to/.run.lock"
exec 9>"$LOCK"
if ! flock -n 9; then
echo "[$(date)] another run is in progress, exiting" >> /path/to/launchd.out.log
exit 0
fi
flock is not part of stock macOS. On my Mac it is at /opt/homebrew/bin/flock, installed with Homebrew.
Claude's scheduled tasks or a launchd script?
You can use Claude's own scheduled tasks. For a quick task that needs Claude's thinking every single time, they are great. But for jobs that should run the same way every day, a plain script on your Mac's timer is simpler.
| Claude scheduled task | Script on launchd | |
|---|---|---|
| Where it runs | Desktop: your computer, only while it is awake. Cloud: Anthropic's computers | Your Mac, at the time in the schedule file |
| Uses your plan | Yes, every run, the same way a chat does (official pages, read November 8, 2026) | Only the steps that call Claude |
| Needs an app open | Per the Desktop row above, the machine must be on | No |
| If you hit your limit | The run is affected | The plain steps still run |
| Best for | Quick jobs that need Claude's thinking every time | Jobs that should run the same way every day |
The row "If you hit your limit" is my reasoning from the pages above, not something I tested.
How to set up your first one today
- Pick one boring thing you do every morning. Checking an inbox, counting orders, making a list.
- Open Claude Code and paste the prompt below, with your own job in place of "do this".
- Ask it to run the job once right now, so you see the result before tomorrow morning.
- Start with a job that only reads and reports. Once you trust it, let the next one change things.
Every morning at 7, do this and email me the result.
1. Use my Mac's built-in timer, launchd, not a chat that stays open.
2. Never send anything to a customer. Only make drafts.
3. Give the job a clear name, and write down where it lives and how to stop it.
Then run the job once right now, so I can see the result.
Claude will write the script, write the small schedule file, and turn it on.
To see what you have afterwards, use the same two commands I used to count mine: ls ~/Library/LaunchAgents and launchctl list. I wrote this section for this article and did not run it on a fresh Mac.
What I did not test
- I did not measure how much of my plan these jobs use. I only know which steps call Claude and which do not.
- "Nearly 100 times more productive" is how it feels to me. It is not a measured number.
- I did not test Claude's scheduled tasks against my launchd jobs side by side. The comparison table uses the official pages I read on November 8, 2026, and my own reasoning where I said so.
- The official pages may have changed since November 8, 2026. I did not read them again for this article.
- The prompt and the stop note above are written for this article. The schedule file, the entry file and the lock code are taken from my machine with paths changed.
Who this is not for
- If you want a job that runs while your Mac is asleep or off, a timer on your Mac will not do it. The cloud version of Claude's scheduled tasks runs on Anthropic's computers.
- If you have no job that repeats, there is nothing to automate yet.
- If a step must reach a customer without your approval, this article's rule 1 is not for you.
Your AI does not have to stay awake to work for you. It just has to set the alarm, and leave a note on how to turn it off.
Sources:
- Claude Code Docs, Routines page, Usage and limits section (code.claude.com/docs/en/routines), read November 8, 2026
- Claude Code Docs, scheduled tasks page, Compare scheduling options section (code.claude.com/docs/en/scheduled-tasks), read November 8, 2026
- My own Mac:
~/Library/LaunchAgents,crontab -l, five schedule files and the job scripts, November 8 and 15, 2026