Schedule Recurring Claude Tasks: Complete Guide

By Yanni Papoutsis | 5 min read | 2026-06-28

TL;DR: Claude Cowork supports scheduled tasks -- prompts that run automatically on a cron schedule without you being present. You can schedule weekly audits, daily reports, content generation runs, and any other repeatable workflow. This guide covers how to create scheduled tasks, write effective task prompts for autonomous execution, handle the "no user present" constraint, and review outputs after each run.

What Are Scheduled Tasks?

Scheduled tasks in Cowork are prompts that run automatically at a specified time or frequency. When the schedule triggers, Claude runs the task autonomously, using whatever MCP tools and skills are available, and writes its output to your Desktop or a specified location.

Use cases include: - Weekly blog draft generation (like this post's own generation workflow) - Daily financial report from QuickBooks - Weekly SEO audit of your sites - Monthly backup of important Supabase data - Daily Slack digest of important messages

Creating a Scheduled Task

Option 1: Via the Schedule Skill

In a Cowork session:

Create a scheduled task that runs every Monday at 09:00 to generate a 
weekly summary of my Gmail inbox. Save the output to ~/Desktop/weekly-reports/.

Claude loads the schedule skill, which creates the task using the mcp__scheduled-tasks__create_scheduled_task tool.

Option 2: Direct Tool Call

If you know the format, you can ask Claude to create the task directly:

Create a scheduled task with:
- Name: weekly-seo-audit
- Schedule: every Wednesday at 10:00 UTC
- Prompt: [your task prompt]
- Output: ~/Desktop/seo-reports/

Writing Effective Prompts for Autonomous Execution

The most important principle: the task runs without you present. Claude cannot ask you clarifying questions. Every decision must be pre-specified in the task prompt.

What to Include in Every Scheduled Task Prompt

  1. What to do: Specific, not vague.
  2. Where to write output: Full path on your Desktop.
  3. What to do if blocked: "If you cannot reach the API, write an error report to the same location."
  4. What NOT to do: "Do not push to GitHub. Do not send any emails. Do not publish anything."
  5. Output format: "Save as a .md file named DDMMYY_report.md"

Example: Weekly Audit Task

This is an automated run. The user is not present.

Task: Audit the last 7 days of Supabase logs for any error patterns.

Steps:
1. Connect to Supabase project [PROJECT_ID] and fetch logs from the last 7 days
2. Identify any errors appearing more than 5 times
3. Group errors by type and frequency
4. Write a report to ~/Desktop/session_notes/supabase-audit-DDMMYY.md

Rules:
- Do not execute any SQL that modifies data
- If Supabase is unreachable, write: "AUDIT FAILED: Could not connect to Supabase" 
  to the output file and exit
- No other tool calls beyond Supabase and file writes

Cron Schedule Syntax

Cowork scheduled tasks use standard cron syntax:

Expression Meaning
0 9 * * 1 Every Monday at 09:00
0 10 * * 3 Every Wednesday at 10:00
0 8 * * * Every day at 08:00
0 9 1 * * First day of every month at 09:00
0 */4 * * * Every 4 hours
0 9,17 * * 1-5 Weekdays at 09:00 and 17:00

When creating a task, you can also use plain English:

Schedule this task to run every weekday morning at 09:00 UTC

Viewing and Managing Scheduled Tasks

List all scheduled tasks:

List my scheduled tasks.

Claude calls mcp__scheduled-tasks__list_scheduled_tasks and shows you all active tasks with their names, schedules, and last run times.

Update a task:

Update the weekly-seo-audit task to run on Thursdays instead of Wednesdays.

Stop a task:

Stop the weekly-seo-audit scheduled task.

Reviewing Outputs After a Run

After a scheduled task runs, Claude writes output to the specified location. Check it by:

  1. Opening the file directly on your Desktop
  2. Asking Claude in a new session: "Read the latest output from [task name]"
  3. Asking Claude to summarise multiple recent outputs: "Read the last 4 weekly reports and summarise trends"

Best Practices

1. Start with a manual run. Before scheduling a task, run it manually in a session to verify the prompt produces the output you want. Schedule only after you are happy with manual output.

2. Verbose output. Autonomous runs should produce more verbose output than interactive sessions, since you need to understand what Claude did and why without being able to ask questions.

3. Include error states. Every scheduled task should define what to write when something goes wrong. "Write an error file" is better than silent failure.

4. Test the write path. Confirm the output path exists and is writable before scheduling. A task that cannot write its output fails silently.

5. Review the first 3 runs. New scheduled tasks often have edge cases not anticipated in the prompt. Review the first few runs and refine the prompt as needed.

Example: This Post Was Generated by a Scheduled Task

The blog post you are reading was generated by the weekly-roadmap-executor scheduled task, which runs autonomously every Wednesday and generates 7 days of draft posts for 7 sites. The task file specifies exactly what to do, where to write output, what to skip when infrastructure is missing, and what rules to follow without user input.

See the task structure in the 180-day blog plan for a real-world example of a complex autonomous task prompt.

Troubleshooting

Task ran but produced no output: - Check the output path exists - Verify the task has access to required MCP tools - Check if the task encountered an error (it should have written an error file if you included that instruction)

Task runs but uses wrong data: - Scheduled tasks do not inherit session context. Every run starts fresh. Include all necessary context in the task prompt itself.

Task is not running at the expected time: - Verify the cron expression is correct using a cron validator - Check that Claude Code / Cowork is running on your machine at the scheduled time (tasks require the application to be active)