Claude Code /loop vs Desktop Scheduler: Which One Should You Use?
Claude Code now ships with two distinct ways to schedule recurring work: the /loop slash command in the CLI and the Desktop scheduled tasks UI. They sound similar, but they solve different problems. Picking the wrong one will frustrate you quickly.
What /loop Does (and What It Costs You)
/loop is a session-scoped scheduler built into the Claude Code CLI. The syntax is minimal:
/loop 5m check if the deployment finished and tell me what happened
Claude parses the interval, converts it to a cron expression internally, and fires the prompt in the background while your session stays open. You can also write one-shot natural language reminders:
remind me at 3pm to push the release branch
Sessions can hold up to 50 scheduled tasks, times are interpreted in your local timezone, and the scheduler checks every second for due tasks.
The trade-offs are real. Tasks only fire while Claude Code is running AND idle. If you close the terminal, everything disappears. If Claude is mid-response when a task comes due, it waits until the current turn ends rather than catching up. Recurring tasks also auto-delete after 3 days, whether you want them to or not. There is no persistence across restarts.
/loop does not support extended cron syntax like L, W, ?, or name aliases like MON or JAN. You get standard 5-field expressions only.
The clearest use case: watching a deploy for the next 45 minutes, polling a CI job, or babysitting a PR while you context-switch to something else. Short-lived, in-session monitoring where you KNOW the terminal will stay open.
What Desktop Scheduled Tasks Do Differently
Desktop scheduled tasks live in the Claude Code sidebar. You create them once, define a prompt, pick a cadence, and they survive restarts. Each run fires a fresh Claude Code session with full access to your files, MCP servers, skills, and plugins.
This is where durable automation lives. Daily code reviews, morning Slack summaries, nightly error log scans that open PRs automatically. If you want something to run next week without thinking about it, Desktop scheduled tasks are the answer.
The worktree isolation toggle is worth noting: enabling it gives each scheduled run its own isolated Git branch, so automated jobs cannot interfere with your active work. That is not available in /loop.
The catch is that the Desktop app has to be OPEN for tasks to fire. If your laptop sleeps or the app closes, scheduled tasks pause. This is a lighter constraint than the CLI’s “session must be active” requirement, but it still means you cannot rely on these for overnight automation on a machine you shut down. For that level of durability, the official docs point to GitHub Actions with a schedule trigger.
Limitations Side by Side
/loop (CLI):
- Dies when the session ends or terminal closes
- Tasks expire in 3 days automatically
- No catch-up on missed fires if Claude is busy
- No worktree isolation
- Great for quick, in-session polling
Desktop scheduler:
- Requires the Desktop app to stay open
- Each task gets a fresh session, no shared context with your manual work
- Worktree isolation available per task
- Tasks persist across restarts (as long as the app is running)
- Best for recurring automation you want to set and forget
Neither option is a full server-side scheduler. For truly unattended, machine-off-overnight automation, the docs are explicit: use GitHub Actions.
How to Choose
Use /loop when you are already in a session and need to monitor something for the next hour or two. It is the fastest way to say “check this every 5 minutes and interrupt me if something changes.”
Use Desktop scheduled tasks when the work should happen on a recurring basis regardless of what you are actively doing. Morning briefings, daily code reviews, periodic log scanning. Anything you want Claude to handle consistently without you remembering to start it.
If you need something to run at 2am while your computer is off, neither of these is the right tool. Reach for a GitHub Actions workflow instead.
Wrapping Up
The two features complement each other rather than compete. loop is tactical and ephemeral. Desktop scheduling is strategic and persistent. Knowing which problem you have makes the choice obvious. Start with /loop for anything situational, graduate to Desktop tasks when a workflow earns a permanent slot in your day. You can read further about both options in the official documentation:
https://code.claude.com/docs/en/scheduled-tasks
https://code.claude.com/docs/en/desktop#schedule-recurring-tasks
If you want to go from beginner to pro with Claude Code, check out my full Udemy course on mastering the tool:
