TL;DR Before you trust a local task, click Run now once and answer "always allow" to every prompt. If it has to run with the lid closed, it isn't Local: it's a remote routine.
In Claude Code Desktop, the Routines page creates two kinds of scheduled task. A Local one runs on your machine, with your files, tools and MCP servers, but only while the app is open and the computer is awake. A Remote one is a cloud routine: it runs with the laptop off, on a fresh clone of the repo, at most once an hour. The full comparison with /loop is in this other tip.
The three failures below belong to local tasks. All of them happen while you're away, which is the whole point of scheduling.
What each run receives
I created a test task and started it with Run now. Every run is a new session in the task's folder, and your prompt arrives wrapped in a notice from Claude Code:
<scheduled-task name="wmedia-tip-test" file="[...]/scheduled-tasks/wmedia-tip-test/SKILL.md">
This is an automated run of a scheduled task. The user is not present to answer questions.
...
Claude knows you're not there and won't ask you anything: when something is ambiguous, it decides on its own. Write the prompt with that in mind.
Failure 1: it sits waiting on a permission
Each task has its own permission mode. If it runs in Manual mode and needs a tool it has no permission for, the run stops until you approve it. The session stays open in the sidebar, waiting for you to come back.
Fix: right after you create the task, click Run now, watch which permissions it asks for, and answer "always allow" to each one. Later runs approve those tools on their own. You can see and revoke them in the task's Always allowed panel. The allow rules in your ~/.claude/settings.json apply too.
One exception has no fix this way: an MCP tool marked requiresUserInteraction asks on every call and offers no "always allow". A task that uses it will stop every time.
Failure 2: it never ran
Open the task and check Review history. Skipped runs show up in the list, and hovering one tells you why: the computer was asleep, the previous run was still going, or other scheduled tasks were already running.
Fix: if it was sleep, the docs say to turn on Keep computer awake under Settings, Desktop app → General. Don't confuse it with "Keep computer awake while Claude works" in the Code tab: that one only holds while a session is working, and at 9:00 nothing is. Either way it stops idle sleep only; closing the lid still puts the machine to sleep (what survives a closed lid). If the task has to run with the laptop closed, make it Remote.
Failure 3: your 9am run fires at 11pm
When the app starts or the computer wakes, Desktop checks whether each task missed any runs in the last seven days. If it did, it starts exactly one catch-up run, for the most recent missed time, and drops the older ones. A daily task that missed six days runs once on wake, even if that's 11pm. On top of that, every task starts a few minutes after its scheduled time, always with the same offset, to spread out traffic.
Fix: if timing matters, put the condition in the prompt:
Only review today's commits. If it's after 5pm, skip the review:
summarize what went unreviewed and stop.
All three at a glance
| Symptom | Cause | Fix |
|---|---|---|
| Session open and stuck | Unapproved permission in Manual mode | Run now and "always allow" each prompt |
| No run at all | Asleep, previous run still going, or other tasks running | Review history; Keep computer awake or Remote |
| Runs at odd hours | One catch-up run on wake | A time condition in the prompt |
Where the task lives
Each local task is a file at ~/.claude/scheduled-tasks/<name>/SKILL.md, with name and description in the frontmatter and the prompt as the body. Edits apply from the next run. The schedule, folder, model and enabled state are not in that file: change them through Edit or by asking Claude. When you delete the task, tick Also delete files on disk if you want the file gone too. When I deleted mine by asking Claude, the SKILL.md stayed on disk.
Official docs: Schedule recurring tasks in Claude Code Desktop
Requirements
- Claude Desktop 1.1.5368 or later for local tasks, per the docs. Tested in the desktop app with Claude Code v2.1.282 on 27 September 2026.