SpyBara
Go Premium

Documentation 2026-03-06 06:10 UTC to 2026-03-07 03:37 UTC

7 files changed +268 −16. View all changes and history on the product overview
2026
Tue 31 21:09 Mon 30 21:13 Sat 28 18:04 Fri 27 21:09 Thu 26 21:07 Wed 25 21:08 Tue 24 18:15 Mon 23 21:08 Sun 22 18:04 Sat 21 18:03 Fri 20 21:05 Thu 19 06:17 Wed 18 18:16 Tue 17 21:10 Mon 16 21:10 Sat 14 03:44 Fri 13 21:07 Thu 12 21:07 Wed 11 03:43 Tue 10 03:43 Mon 9 21:06 Sat 7 03:37 Fri 6 06:10 Thu 5 06:12 Wed 4 21:06 Sun 1 06:10
Details

47When you start a task on Claude Code on the web:47When you start a task on Claude Code on the web:

48 48 

491. **Repository cloning**: Your repository is cloned to an Anthropic-managed virtual machine491. **Repository cloning**: Your repository is cloned to an Anthropic-managed virtual machine

502. **Environment setup**: Claude prepares a secure cloud environment with your code502. **Environment setup**: Claude prepares a secure cloud environment with your code, then runs your [setup script](#setup-scripts) if configured

513. **Network configuration**: Internet access is configured based on your settings513. **Network configuration**: Internet access is configured based on your settings

524. **Task execution**: Claude analyzes code, makes changes, runs tests, and checks its work524. **Task execution**: Claude analyzes code, makes changes, runs tests, and checks its work

535. **Completion**: You're notified when finished and can create a PR with the changes535. **Completion**: You're notified when finished and can create a PR with the changes


227 227 

228When you start a session in Claude Code on the web, here's what happens under the hood:228When you start a session in Claude Code on the web, here's what happens under the hood:

229 229 

2301. **Environment preparation**: We clone your repository and run any configured Claude hooks for initialization. The repo will be cloned with the default branch on your GitHub repo. If you would like to check out a specific branch, you can specify that in the prompt.2301. **Environment preparation**: We clone your repository and run any configured [setup script](#setup-scripts). The repo will be cloned with the default branch on your GitHub repo. If you would like to check out a specific branch, you can specify that in the prompt.

231 231 

2322. **Network configuration**: We configure internet access for the agent. Internet access is limited by default, but you can configure the environment to have no internet or full internet access based on your needs.2322. **Network configuration**: We configure internet access for the agent. Internet access is limited by default, but you can configure the environment to have no internet or full internet access based on your needs.

233 233 


239 Claude operates entirely through the terminal and CLI tools available in the environment. It uses the pre-installed tools in the universal image and any additional tools you install through hooks or dependency management.239 Claude operates entirely through the terminal and CLI tools available in the environment. It uses the pre-installed tools in the universal image and any additional tools you install through hooks or dependency management.

240</Note>240</Note>

241 241 

242**To add a new environment:** Select the current environment to open the environment selector, and then select "Add environment". This will open a dialog where you can specify the environment name, network access level, and any environment variables you want to set.242**To add a new environment:** Select the current environment to open the environment selector, and then select "Add environment". This will open a dialog where you can specify the environment name, network access level, environment variables, and a [setup script](#setup-scripts).

243 243 

244**To update an existing environment:** Select the current environment, to the right of the environment name, and select the settings button. This will open a dialog where you can update the environment name, network access, and environment variables.244**To update an existing environment:** Select the current environment, to the right of the environment name, and select the settings button. This will open a dialog where you can update the environment name, network access, environment variables, and setup script.

245 245 

246**To select your default environment from the terminal:** If you have multiple environments configured, run `/remote-env` to choose which one to use when starting web sessions from your terminal with `--remote`. With a single environment, this command shows your current configuration.246**To select your default environment from the terminal:** If you have multiple environments configured, run `/remote-env` to choose which one to use when starting web sessions from your terminal with `--remote`. With a single environment, this command shows your current configuration.

247 247 


254 ```254 ```

255</Note>255</Note>

256 256 

257### Setup scripts

258 

259A setup script is a Bash script that runs when a new cloud session starts, before Claude Code launches. Use setup scripts to install dependencies, configure tools, or prepare anything the cloud environment needs that isn't in the [default image](#default-image).

260 

261Scripts run as root on Ubuntu 24.04, so `apt install` and most language package managers work.

262 

263<Tip>

264 To check what's already installed before adding it to your script, ask Claude to run `check-tools` in a cloud session.

265</Tip>

266 

267To add a setup script, open the environment settings dialog and enter your script in the **Setup script** field.

268 

269This example installs the `gh` CLI, which isn't in the default image:

270 

271```bash theme={null}

272#!/bin/bash

273apt update && apt install -y gh

274```

275 

276Setup scripts run only when creating a new session. They are skipped when resuming an existing session.

277 

278If the script exits non-zero, the session fails to start. Append `|| true` to non-critical commands to avoid blocking the session on a flaky install.

279 

280<Note>

281 Setup scripts that install packages need network access to reach registries. The default network access allows connections to [common package registries](#default-allowed-domains) including npm, PyPI, RubyGems, and crates.io. Scripts will fail to install packages if your environment has network access disabled.

282</Note>

283 

284#### Setup scripts vs. SessionStart hooks

285 

286Use a setup script to install things the cloud needs but your laptop already has, like a language runtime or CLI tool. Use a [SessionStart hook](/en/hooks#sessionstart) for project setup that should run everywhere, cloud and local, like `npm install`.

287 

288Both run at the start of a session, but they belong to different places:

289 

290| | Setup scripts | SessionStart hooks |

291| ------------- | ------------------------------------------------- | -------------------------------------------------------------- |

292| Attached to | The cloud environment | Your repository |

293| Configured in | Cloud environment UI | `.claude/settings.json` in your repo |

294| Runs | Before Claude Code launches, on new sessions only | After Claude Code launches, on every session including resumed |

295| Scope | Cloud environments only | Both local and cloud |

296 

297SessionStart hooks can also be defined in your user-level `~/.claude/settings.json` locally, but user-level settings don't carry over to cloud sessions. In the cloud, only hooks committed to the repo run.

298 

257### Dependency management299### Dependency management

258 300 

259Custom environment images and snapshots are not yet supported. As a workaround, you can use [SessionStart hooks](/en/hooks#sessionstart) to install packages when a session starts. This approach has [known limitations](#dependency-management-limitations).301Custom environment images and snapshots are not yet supported. Use [setup scripts](#setup-scripts) to install packages when a session starts, or [SessionStart hooks](/en/hooks#sessionstart) for dependency installation that should also run in local environments. SessionStart hooks have [known limitations](#dependency-management-limitations).

302 

303To configure automatic dependency installation with a setup script, open your environment settings and add a script:

304 

305```bash theme={null}

306#!/bin/bash

307npm install

308pip install -r requirements.txt

309```

260 310 

261To configure automatic dependency installation, add a SessionStart hook to your repository's `.claude/settings.json` file:311Alternatively, you can use SessionStart hooks in your repository's `.claude/settings.json` file for dependency installation that should also run in local environments:

262 312 

263```json theme={null}313```json theme={null}

264{314{


611 661 

612## Best practices662## Best practices

613 663 

6141. **Use Claude Code hooks**: Configure [SessionStart hooks](/en/hooks#sessionstart) to automate environment setup and dependency installation.6641. **Automate environment setup**: Use [setup scripts](#setup-scripts) to install dependencies and configure tools before Claude Code launches. For more advanced scenarios, configure [SessionStart hooks](/en/hooks#sessionstart).

6152. **Document requirements**: Clearly specify dependencies and commands in your `CLAUDE.md` file. If you have an `AGENTS.md` file, you can source it in your `CLAUDE.md` using `@AGENTS.md` to maintain a single source of truth.6652. **Document requirements**: Clearly specify dependencies and commands in your `CLAUDE.md` file. If you have an `AGENTS.md` file, you can source it in your `CLAUDE.md` using `@AGENTS.md` to maintain a single source of truth.

616 666 

617## Related resources667## Related resources

desktop.md +75 −7

Details

10 10 

11Desktop adds these capabilities on top of the standard Claude Code experience:11Desktop adds these capabilities on top of the standard Claude Code experience:

12 12 

13* Visual diff review with inline comments13* [Visual diff review](#review-changes-with-diff-view) with inline comments

14* Live app preview with dev servers14* [Live app preview](#preview-your-app) with dev servers

15* GitHub PR monitoring with auto-fix and auto-merge15* [GitHub PR monitoring](#monitor-pull-request-status) with auto-fix and auto-merge

16* Parallel sessions with automatic Git worktree isolation16* [Parallel sessions](#work-in-parallel-with-sessions) with automatic Git worktree isolation

17* Connectors for GitHub, Slack, Linear, and more17* [Scheduled tasks](#schedule-recurring-tasks) that run Claude on a recurring schedule

18* [Connectors](#connect-external-tools) for GitHub, Slack, Linear, and more

18* Local, [SSH](#ssh-sessions), and [cloud](#run-long-running-tasks-remotely) environments19* Local, [SSH](#ssh-sessions), and [cloud](#run-long-running-tasks-remotely) environments

19 20 

20<Tip>21<Tip>

21 New to Desktop? Start with [Get started](/en/desktop-quickstart) to install the app and make your first edit.22 New to Desktop? Start with [Get started](/en/desktop-quickstart) to install the app and make your first edit.

22</Tip>23</Tip>

23 24 

24This page covers [working with code](#work-with-code), [managing sessions](#manage-sessions), [extending Claude Code](#extend-claude-code), and [configuration](#environment-configuration). It also includes a [CLI comparison](#coming-from-the-cli) and [troubleshooting](#troubleshooting).25This page covers [working with code](#work-with-code), [managing sessions](#manage-sessions), [extending Claude Code](#extend-claude-code), [scheduled tasks](#schedule-recurring-tasks), and [configuration](#environment-configuration). It also includes a [CLI comparison](#coming-from-the-cli) and [troubleshooting](#troubleshooting).

25 26 

26## Start a session27## Start a session

27 28 


318 </Tab>319 </Tab>

319</Tabs>320</Tabs>

320 321 

322## Schedule recurring tasks

323 

324Scheduled tasks start a new local session automatically at a time and frequency you choose. Use them for recurring work like daily code reviews, dependency update checks, or morning briefings that pull from your calendar and inbox.

325 

326Tasks run on your machine, so the desktop app must be open and your computer awake for them to fire. See [How scheduled tasks run](#how-scheduled-tasks-run) for details on missed runs and catch-up behavior.

327 

328<Note>

329 By default, scheduled tasks run against whatever state your working directory is in, including uncommitted changes. Enable the worktree toggle in the prompt input to give each run its own isolated Git worktree, the same way [parallel sessions](#work-in-parallel-with-sessions) work.

330</Note>

331 

332To create a scheduled task, click **Schedule** in the sidebar, then **+ New task**. Configure these fields:

333 

334| Field | Description |

335| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

336| Name | Identifier for the task. Converted to lowercase kebab-case and used as the folder name on disk. Must be unique across your tasks. |

337| Description | Short summary shown in the task list. |

338| Prompt | The instructions sent to Claude when the task runs. Write this the same way you'd write any message in the prompt box. The prompt input also includes controls for model, permission mode, working folder, and worktree. |

339| Frequency | How often the task runs. See [frequency options](#frequency-options) below. |

340 

341You can also create a task by describing what you want in any session. For example, "set up a daily code review that runs every morning at 9am."

342 

343### Frequency options

344 

345* **Manual**: no schedule, only runs when you click **Run now**. Useful for saving a prompt you trigger on demand

346* **Hourly**: runs every hour. Each task gets a fixed offset of up to 10 minutes from the top of the hour to stagger API traffic

347* **Daily**: shows a time picker, defaults to 9:00 AM local time

348* **Weekdays**: same as Daily but skips Saturday and Sunday

349* **Weekly**: shows a time picker and a day picker

350 

351For intervals the picker doesn't offer (every 15 minutes, first of each month, etc.), ask Claude in any Desktop session to set the schedule. Use plain language; for example, "schedule a task to run all the tests every 6 hours."

352 

353### How scheduled tasks run

354 

355Scheduled tasks run locally on your machine. Desktop checks the schedule every minute while the app is open and starts a fresh session when a task is due, independent of any manual sessions you have open. Each task gets a fixed delay of up to 10 minutes after the scheduled time to stagger API traffic. The delay is deterministic: the same task always starts at the same offset.

356 

357When a task fires, you get a desktop notification and a new session appears under a **Scheduled** section in the sidebar. Open it to see what Claude did, review changes, or respond to permission prompts. The session works like any other: Claude can edit files, run commands, create commits, and open pull requests.

358 

359Tasks only run while the desktop app is running and your computer is awake. If your computer sleeps through a scheduled time, the run is skipped. To prevent idle-sleep, enable **Keep computer awake** in Settings under **Desktop app → General**. Closing the laptop lid still puts it to sleep.

360 

361### Missed runs

362 

363When the app starts or your computer wakes, Desktop checks whether each task missed any runs in the last seven days. If it did, Desktop starts exactly one catch-up run for the most recently missed time and discards anything older. A daily task that missed six days runs once on wake. Desktop shows a notification when a catch-up run starts.

364 

365Keep this in mind when writing prompts. A task scheduled for 9am might run at 11pm if your computer was asleep all day. If timing matters, add guardrails to the prompt itself, for example: "Only review today's commits. If it's after 5pm, skip the review and just post a summary of what was missed."

366 

367### Permissions for scheduled tasks

368 

369Each task has its own permission mode, which you set when creating or editing the task. Allow rules from `~/.claude/settings.json` also apply to scheduled task sessions. If a task runs in Ask mode and needs to run a tool it doesn't have permission for, the run stalls until you approve it. The session stays open in the sidebar so you can answer later.

370 

371To avoid stalls, click **Run now** after creating a task, watch for permission prompts, and select "always allow" for each one. Future runs of that task auto-approve the same tools without prompting. You can review and revoke these approvals from the task's detail page.

372 

373### Manage scheduled tasks

374 

375Click a task in the **Schedule** list to open its detail page. From here you can:

376 

377* **Run now**: start the task immediately without waiting for the next scheduled time

378* **Toggle repeats**: pause or resume scheduled runs without deleting the task

379* **Edit**: change the prompt, frequency, folder, or other settings

380* **Review history**: see every past run, including ones that were skipped because your computer was asleep

381* **Review allowed permissions**: see and revoke saved tool approvals for this task from the **Always allowed** panel

382* **Delete**: remove the task and archive all sessions it created

383 

384You can also manage tasks by asking Claude in any Desktop session. For example, "pause my dependency-audit task", "delete the standup-prep task", or "show me my scheduled tasks."

385 

386To edit a task's prompt on disk, open `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (or under [`CLAUDE_CONFIG_DIR`](/en/settings#environment-variables) if set). The file uses YAML frontmatter for `name` and `description`, with the prompt as the body. Changes take effect on the next run. Schedule, folder, model, and enabled state are not in this file: change them through the Edit form or ask Claude.

387 

321## Environment configuration388## Environment configuration

322 389 

323When starting a session, you choose between three environments:390The environment you pick when [starting a session](#start-a-session) determines where Claude executes and how you connect:

324 391 

325* **Local**: runs on your machine with direct access to your files392* **Local**: runs on your machine with direct access to your files

326* **Remote**: runs on Anthropic's cloud infrastructure. Sessions continue even if you close the app.393* **Remote**: runs on Anthropic's cloud infrastructure. Sessions continue even if you close the app.


459| File attachments | not available | images, PDFs |526| File attachments | not available | images, PDFs |

460| Session isolation | [`--worktree`](/en/cli-reference) flag | automatic worktrees |527| Session isolation | [`--worktree`](/en/cli-reference) flag | automatic worktrees |

461| Multiple sessions | separate terminals | sidebar tabs |528| Multiple sessions | separate terminals | sidebar tabs |

529| Recurring tasks | cron jobs, CI pipelines | [scheduled tasks](#schedule-recurring-tasks) |

462| Scripting and automation | [`--print`](/en/cli-reference), [Agent SDK](/en/headless) | not available |530| Scripting and automation | [`--print`](/en/cli-reference), [Agent SDK](/en/headless) | not available |

463 531 

464### What's not available in Desktop532### What's not available in Desktop

Details

6 6 

7> Install Claude Code on desktop and start your first coding session7> Install Claude Code on desktop and start your first coding session

8 8 

9The desktop app gives you Claude Code with a graphical interface: visual diff review, live app preview, GitHub PR monitoring with auto-merge, parallel sessions with Git worktree isolation, and the ability to run tasks remotely. No terminal required.9The desktop app gives you Claude Code with a graphical interface: visual diff review, live app preview, GitHub PR monitoring with auto-merge, parallel sessions with Git worktree isolation, scheduled tasks, and the ability to run tasks remotely. No terminal required.

10 10 

11This page walks through installing the app and starting your first session. If you're already set up, see [Use Claude Code Desktop](/en/desktop) for the full reference.11This page walks through installing the app and starting your first session. If you're already set up, see [Use Claude Code Desktop](/en/desktop) for the full reference.

12 12 


123 123 

124**Track your pull request.** After opening a PR, Claude Code monitors CI check results and can automatically fix failures or merge the PR once all checks pass. See [Monitor pull request status](/en/desktop#monitor-pull-request-status).124**Track your pull request.** After opening a PR, Claude Code monitors CI check results and can automatically fix failures or merge the PR once all checks pass. See [Monitor pull request status](/en/desktop#monitor-pull-request-status).

125 125 

126**Put Claude on a schedule.** Set up [scheduled tasks](/en/desktop#schedule-recurring-tasks) to run Claude automatically on a recurring basis: a daily code review every morning, a weekly dependency audit, or a briefing that pulls from your connected tools.

127 

126**Scale up when you're ready.** Open [parallel sessions](/en/desktop#work-in-parallel-with-sessions) from the sidebar to work on multiple tasks at once, each in its own Git worktree. Send [long-running work to the cloud](/en/desktop#run-long-running-tasks-remotely) so it continues even if you close the app, or [continue a session on the web or in your IDE](/en/desktop#continue-in-another-surface) if a task takes longer than expected. [Connect external tools](/en/desktop#extend-claude-code) like GitHub, Slack, and Linear to bring your workflow together.128**Scale up when you're ready.** Open [parallel sessions](/en/desktop#work-in-parallel-with-sessions) from the sidebar to work on multiple tasks at once, each in its own Git worktree. Send [long-running work to the cloud](/en/desktop#run-long-running-tasks-remotely) so it continues even if you close the app, or [continue a session on the web or in your IDE](/en/desktop#continue-in-another-surface) if a task takes longer than expected. [Connect external tools](/en/desktop#extend-claude-code) like GitHub, Slack, and Linear to bring your workflow together.

127 129 

128## Coming from the CLI?130## Coming from the CLI?

overview.md +1 −1

Details

92 </Tab>92 </Tab>

93 93 

94 <Tab title="Desktop app">94 <Tab title="Desktop app">

95 A standalone app for running Claude Code outside your IDE or terminal. Review diffs visually, run multiple sessions side by side, and kick off cloud sessions.95 A standalone app for running Claude Code outside your IDE or terminal. Review diffs visually, run multiple sessions side by side, schedule recurring tasks, and kick off cloud sessions.

96 96 

97 Download and install:97 Download and install:

98 98 

scheduled-tasks.md +129 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Run prompts on a schedule

6 

7> Use /loop and the cron scheduling tools to run prompts repeatedly, poll for status, or set one-time reminders within a Claude Code session.

8 

9Scheduled tasks let Claude re-run a prompt automatically on an interval. Use them to poll a deployment, babysit a PR, check back on a long-running build, or remind yourself to do something later in the session.

10 

11Tasks are session-scoped: they live in the current Claude Code process and are gone when you exit. For durable scheduling that survives restarts and runs without an active terminal session, see [Desktop scheduled tasks](/en/desktop#schedule-recurring-tasks) or [GitHub Actions](/en/github-actions).

12 

13## Schedule a recurring prompt with /loop

14 

15The `/loop` [bundled skill](/en/skills#bundled-skills) is the quickest way to schedule a recurring prompt. Pass an optional interval and a prompt, and Claude sets up a cron job that fires in the background while the session stays open.

16 

17```text theme={null}

18/loop 5m check if the deployment finished and tell me what happened

19```

20 

21Claude parses the interval, converts it to a cron expression, schedules the job, and confirms the cadence and job ID.

22 

23### Interval syntax

24 

25Intervals are optional. You can lead with them, trail with them, or leave them out entirely.

26 

27| Form | Example | Parsed interval |

28| :---------------------- | :------------------------------------ | :--------------------------- |

29| Leading token | `/loop 30m check the build` | every 30 minutes |

30| Trailing `every` clause | `/loop check the build every 2 hours` | every 2 hours |

31| No interval | `/loop check the build` | defaults to every 10 minutes |

32 

33Supported units are `s` for seconds, `m` for minutes, `h` for hours, and `d` for days. Seconds are rounded up to the nearest minute since cron has one-minute granularity. Intervals that don't divide evenly into their unit, such as `7m` or `90m`, are rounded to the nearest clean interval and Claude tells you what it picked.

34 

35### Loop over another command

36 

37The scheduled prompt can itself be a command or skill invocation. This is useful for re-running a workflow you've already packaged.

38 

39```text theme={null}

40/loop 20m /review-pr 1234

41```

42 

43Each time the job fires, Claude runs `/review-pr 1234` as if you had typed it.

44 

45## Set a one-time reminder

46 

47For one-shot reminders, describe what you want in natural language instead of using `/loop`. Claude schedules a single-fire task that deletes itself after running.

48 

49```text theme={null}

50remind me at 3pm to push the release branch

51```

52 

53```text theme={null}

54in 45 minutes, check whether the integration tests passed

55```

56 

57Claude pins the fire time to a specific minute and hour using a cron expression and confirms when it will fire.

58 

59## Manage scheduled tasks

60 

61Ask Claude in natural language to list or cancel tasks, or reference the underlying tools directly.

62 

63```text theme={null}

64what scheduled tasks do I have?

65```

66 

67```text theme={null}

68cancel the deploy check job

69```

70 

71Under the hood, Claude uses these tools:

72 

73| Tool | Purpose |

74| :----------- | :-------------------------------------------------------------------------------------------------------------- |

75| `CronCreate` | Schedule a new task. Accepts a 5-field cron expression, the prompt to run, and whether it recurs or fires once. |

76| `CronList` | List all scheduled tasks with their IDs, schedules, and prompts. |

77| `CronDelete` | Cancel a task by ID. |

78 

79Each scheduled task has an 8-character ID you can pass to `CronDelete`. A session can hold up to 50 scheduled tasks at once.

80 

81## How scheduled tasks run

82 

83The scheduler checks every second for due tasks and enqueues them at low priority. A scheduled prompt fires between your turns, not while Claude is mid-response. If Claude is busy when a task comes due, the prompt waits until the current turn ends.

84 

85All times are interpreted in your local timezone. A cron expression like `0 9 * * *` means 9am wherever you're running Claude Code, not UTC.

86 

87### Jitter

88 

89To avoid every session hitting the API at the same wall-clock moment, the scheduler adds a small deterministic offset to fire times:

90 

91* Recurring tasks fire up to 10% of their period late, capped at 15 minutes. An hourly job might fire anywhere from `:00` to `:06`.

92* One-shot tasks scheduled for the top or bottom of the hour fire up to 90 seconds early.

93 

94The offset is derived from the task ID, so the same task always gets the same offset. If exact timing matters, pick a minute that is not `:00` or `:30`, for example `3 9 * * *` instead of `0 9 * * *`, and the one-shot jitter will not apply.

95 

96### Three-day expiry

97 

98Recurring tasks automatically expire 3 days after creation. The task fires one final time, then deletes itself. This bounds how long a forgotten loop can run. If you need a recurring task to last longer, cancel and recreate it before it expires, or use [Desktop scheduled tasks](/en/desktop#schedule-recurring-tasks) for durable scheduling.

99 

100## Cron expression reference

101 

102`CronCreate` accepts standard 5-field cron expressions: `minute hour day-of-month month day-of-week`. All fields support wildcards (`*`), single values (`5`), steps (`*/15`), ranges (`1-5`), and comma-separated lists (`1,15,30`).

103 

104| Example | Meaning |

105| :------------- | :--------------------------- |

106| `*/5 * * * *` | Every 5 minutes |

107| `0 * * * *` | Every hour on the hour |

108| `7 * * * *` | Every hour at 7 minutes past |

109| `0 9 * * *` | Every day at 9am local |

110| `0 9 * * 1-5` | Weekdays at 9am local |

111| `30 14 15 3 *` | March 15 at 2:30pm local |

112 

113Day-of-week uses `0` or `7` for Sunday through `6` for Saturday. Extended syntax like `L`, `W`, `?`, and name aliases such as `MON` or `JAN` is not supported.

114 

115When both day-of-month and day-of-week are constrained, a date matches if either field matches. This follows standard vixie-cron semantics.

116 

117## Disable scheduled tasks

118 

119Set `CLAUDE_CODE_DISABLE_CRON=1` in your environment to disable the scheduler entirely. The cron tools and `/loop` become unavailable, and any already-scheduled tasks stop firing. See [Environment variables](/en/settings#environment-variables) for the full list of disable flags.

120 

121## Limitations

122 

123Session-scoped scheduling has inherent constraints:

124 

125* Tasks only fire while Claude Code is running and idle. Closing the terminal or letting the session exit cancels everything.

126* No catch-up for missed fires. If a task's scheduled time passes while Claude is busy on a long-running request, it fires once when Claude becomes idle, not once per missed interval.

127* No persistence across restarts. Restarting Claude Code clears all session-scoped tasks.

128 

129For cron-driven automation that needs to run unattended, use a [GitHub Actions workflow](/en/github-actions) with a `schedule` trigger, or [Desktop scheduled tasks](/en/desktop#schedule-recurring-tasks) if you want a graphical setup flow.

settings.md +1 −0

Details

813| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Set to `1` to disable [auto memory](/en/memory#auto-memory). Set to `0` to force auto memory on during the gradual rollout. When disabled, Claude does not create or load auto memory files | |813| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Set to `1` to disable [auto memory](/en/memory#auto-memory). Set to `0` to force auto memory on during the gradual rollout. When disabled, Claude does not create or load auto memory files | |

814| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Set to `1` to remove built-in commit and PR workflow instructions from Claude's system prompt. Useful when using your own git workflow skills. Takes precedence over the [`includeGitInstructions`](#available-settings) setting when set | |814| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Set to `1` to remove built-in commit and PR workflow instructions from Claude's system prompt. Useful when using your own git workflow skills. Takes precedence over the [`includeGitInstructions`](#available-settings) setting when set | |

815| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Set to `1` to disable all background task functionality, including the `run_in_background` parameter on Bash and subagent tools, auto-backgrounding, and the Ctrl+B shortcut | |815| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Set to `1` to disable all background task functionality, including the `run_in_background` parameter on Bash and subagent tools, auto-backgrounding, and the Ctrl+B shortcut | |

816| `CLAUDE_CODE_DISABLE_CRON` | Set to `1` to disable [scheduled tasks](/en/scheduled-tasks). The `/loop` skill and cron tools become unavailable and any already-scheduled tasks stop firing, including tasks that are already running mid-session | |

816| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Set to `1` to disable Anthropic API-specific `anthropic-beta` headers. Use this if experiencing issues like "Unexpected value(s) for the `anthropic-beta` header" when using an LLM gateway with third-party providers | |817| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Set to `1` to disable Anthropic API-specific `anthropic-beta` headers. Use this if experiencing issues like "Unexpected value(s) for the `anthropic-beta` header" when using an LLM gateway with third-party providers | |

817| `CLAUDE_CODE_DISABLE_FAST_MODE` | Set to `1` to disable [fast mode](/en/fast-mode) | |818| `CLAUDE_CODE_DISABLE_FAST_MODE` | Set to `1` to disable [fast mode](/en/fast-mode) | |

818| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Set to `1` to disable the "How is Claude doing?" session quality surveys. Also disabled when using third-party providers or when telemetry is disabled. See [Session quality surveys](/en/data-usage#session-quality-surveys) | |819| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Set to `1` to disable the "How is Claude doing?" session quality surveys. Also disabled when using third-party providers or when telemetry is disabled. See [Session quality surveys](/en/data-usage#session-quality-surveys) | |

skills.md +2 −0

Details

28 28 

29* **`/debug [description]`**: troubleshoots your current Claude Code session by reading the session debug log. Optionally describe the issue to focus the analysis.29* **`/debug [description]`**: troubleshoots your current Claude Code session by reading the session debug log. Optionally describe the issue to focus the analysis.

30 30 

31* **`/loop [interval] <prompt>`**: runs a prompt repeatedly on an interval while the session stays open. Claude parses the interval, schedules a recurring cron task, and confirms the cadence. Useful for polling a deployment, babysitting a PR, or periodically re-running another skill. Example: `/loop 5m check if the deploy finished`. See [Run prompts on a schedule](/en/scheduled-tasks).

32 

31* **`/claude-api`**: loads Claude API reference material for your project's language (Python, TypeScript, Java, Go, Ruby, C#, PHP, or cURL) and Agent SDK reference for Python and TypeScript. Covers tool use, streaming, batches, structured outputs, and common pitfalls. Also activates automatically when your code imports `anthropic`, `@anthropic-ai/sdk`, or `claude_agent_sdk`.33* **`/claude-api`**: loads Claude API reference material for your project's language (Python, TypeScript, Java, Go, Ruby, C#, PHP, or cURL) and Agent SDK reference for Python and TypeScript. Covers tool use, streaming, batches, structured outputs, and common pitfalls. Also activates automatically when your code imports `anthropic`, `@anthropic-ai/sdk`, or `claude_agent_sdk`.

32 34 

33## Getting started35## Getting started