[FEATURE] Cowork: allow configuring the storage location for scheduled tasks (currently hardcoded to ~/Documents/Claude/Scheduled/)

Status Fixed / completed
Maintainer reply None cached
Activity 16 comments · opened Apr 30, 2026 · closed Aug 17, 2026

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

Cowork stores scheduled task definitions at the hardcoded path ~/Documents/Claude/Scheduled/<task-name>/. There is no setting in the app to change this location.

The hardcoded path under a TCC-gated, user-redirectable folder causes a class of bugs that can't be cleanly fixed at the symptom layer:

  • macOS Documents folder TCC denial → cryptic VirtioFS mount error on every session init (#54744). The TCC prompt at first launch can be dismissed without context, and the resulting failure gives no actionable signal that Documents access is missing.
  • Corporate / managed Macs where Documents is subject to MDM policies, DLP scanning, or principle-of-least-privilege restrictions on app access — frequent small-file writes from scheduled tasks conflict with these.
  • Windows Documents redirection to D:\ or other non-system drives → cross-drive hard-link failure (#43197) and "outside home directory" mount failure (#34667).
  • User preference — users who keep ~/Documents clean and put app-managed data elsewhere have no way to redirect Cowork.

Two adjacent feature requests exist (#34604 for default workspace folder, #47179 for default output folder) but neither covers the scheduled-task storage root specifically.

Proposed Solution

Add a configurable storage location for scheduled tasks, with a sensible new default:

  1. Change the default to an app-managed, non-TCC-gated location. ~/Library/Application Support/Claude/Scheduled/ on macOS and %APPDATA%\Claude\Scheduled on Windows are the conventional locations for app-managed user data. This single change would eliminate #54744, #34667, and #43197 without requiring any user-facing configuration.
  2. Expose a preference in Settings → Cowork → "Scheduled tasks location" for users who want a custom path.
  3. Support a config-file field for power users and managed deployments:

``json
{ "cowork": { "scheduledTasksRoot": "~/cowork-data/Scheduled" } }
``

For users who already have tasks at ~/Documents/Claude/Scheduled/, a one-time migration on update — or a symlink from the new location to the old — would preserve backward compatibility.

Alternative Solutions

_No response_

Priority

Medium - Would be very helpful

Feature Category

Configuration and settings

Use Case Example

Scenario: a user on a corporate-managed Mac installs Claude Desktop. The macOS TCC prompt for Documents folder access appears during onboarding without explaining that Cowork's scheduled tasks specifically depend on it. The user dismisses or denies the prompt.

  1. User opens Cowork and creates a scheduled task ("daily morning briefing")
  2. Task creation succeeds; the UI shows the task as configured normally
  3. User attempts to run the task or starts any new Cowork session
  4. Session fails immediately with RPC error: failed to mount ... operation not permitted
  5. User has no in-app indication that the failure is due to a missing TCC grant on ~/Documents/
  6. User files a bug report or gives up on Cowork

With the proposed fix (default storage moved to ~/Library/Application Support/Claude/Scheduled/):

  1. User opens Cowork and creates a scheduled task
  2. Task is stored in app-managed location, no TCC dependency
  3. Task runs successfully regardless of Documents folder permission state

Additional Context

Filed alongside #54744 (the bug this would structurally prevent). Cross-platform — applies to macOS and Windows.

The same architectural choice — app state under ~/Library/Application Support/ on macOS and %APPDATA% on Windows — is already used by Claude Desktop for vm_bundles/, MCP server configs, and other internal state. Scheduled tasks are the outlier in living under a user-visible, TCC-gated location.

If user-visible access to scheduled-task definitions is a deliberate design choice (e.g., so users can edit SKILL.md files directly in Finder), a symlink from ~/Documents/Claude/Scheduled/~/Library/Application Support/Claude/Scheduled/ would maintain that affordance while moving the canonical storage out of the TCC-gated path.

View original on GitHub ↗

14 Comments

github-actions[bot] · 4 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/52430
  2. https://github.com/anthropics/claude-code/issues/54744
  3. https://github.com/anthropics/claude-code/issues/31284

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

0xbrainkid · 4 months ago

This is path-assumption rigidity at the scheduled-task boundary.

If Cowork hardcodes scheduled task storage to ~/Documents/Claude/Scheduled/, then the feature is binding operational state to one host-path assumption that may not fit users' actual filesystem, privacy settings, sync strategy, or managed environment constraints.

Why it matters:

  • scheduled tasks are long-lived operational state, so storage location is not a trivial preference
  • hardcoded paths break more often on managed machines, nonstandard home layouts, externalized docs folders, and privacy-restricted desktops
  • once the path is fixed in product logic, users cannot adapt the feature to the environment they actually run

I would want clarity on:

  1. whether the current path is assumed by UI only, runtime only, or multiple layers that would need coordinated override support
  2. whether the product needs just a configurable root path or a more general storage provider abstraction
  3. whether path validation / permissions checks could be surfaced proactively so users know when the configured location is invalid before task failures occur

Operational features need environment-flexible storage semantics. If scheduled tasks depend on one hardcoded folder, the system is forcing a host assumption into a place where reliability depends on configurability.

aleozlx · 4 months ago
whether the current path is assumed by UI only, runtime only, or multiple layers that would need coordinated override support

it's opaque therefore unclear. (i didn't check source code etc)

aleozlx · 4 months ago
whether the product needs just a configurable root path or a more general storage provider abstraction

in my mind / use case. it's just a path

aleozlx · 4 months ago
whether path validation / permissions checks could be surfaced proactively so users know when the configured location is invalid before task failures occur

yes, more understandable / precise errors would be very helpful

aleozlx · 4 months ago

why not dup

https://github.com/anthropics/claude-code/issues/52430. different platform

https://github.com/anthropics/claude-code/issues/54744 different problem statement, not the same ask. i filed this one myself separately

https://github.com/anthropics/claude-code/issues/31284 different subject, not the same folder in question

lejacobroy · 3 months ago

This hardcoded path is preventing our team from using Claude Cowork Sheduled Tasks.
Minimaly, a root path entry in claude_desktop_settings.json would be added to configure the Sheduled Tasks parent folder.
From my quick look at the source code, the path is hardcoded at a lower level, not UI.

lejacobroy · 3 months ago

Proposal: configurable Cowork workspace paths (consolidates #57177, #54859, #54138, #52496)

Root cause (shared across all four issues)

Claude Desktop / Cowork resolves three storage roots from a single hardcoded base, ~/Documents/Claude/:

  • ~/Documents/Claude/ — Cowork workspace base
  • ~/Documents/Claude/Artifacts/ — Live Artifacts mount source
  • ~/Documents/Claude/Scheduled/ — scheduled task definitions

There is no user-facing setting and no claude_desktop_config.json field to override any of these. The result is a class of failures on otherwise-supported setups: macOS TCC denial on ~/Documents, OneDrive-synced Documents on macOS/Windows, Windows Documents redirected to D:\, MDM-restricted corporate Macs, and user folders kept outside ~/Documents by preference.

Proposed fix

1. New default location (no config required)

Move the canonical storage out of the TCC-gated, user-redirectable Documents folder:

  • macOS: ~/Library/Application Support/Claude/Cowork/
  • Windows: %APPDATA%\Claude\Cowork\
  • Linux: $XDG_DATA_HOME/Claude/Cowork/ (fallback ~/.local/share/Claude/Cowork/)

This is consistent with where Claude Desktop already stores vm_bundles/, MCP configs, and other app state. It eliminates the TCC, OneDrive, and cross-drive failure modes without any user configuration.

2. Single configurable base path in claude_desktop_config.json

{
  "cowork": {
    "workspaceRoot": "~/Documents/Systems/Claude",
    "artifactsRoot": "~/Documents/Systems/Claude/Artifacts",
    "scheduledTasksRoot": "~/Documents/Systems/Claude/Scheduled"
  }
}

Resolution rules:

  • If cowork.workspaceRoot is set and the sub-roots are not, derive artifactsRoot and scheduledTasksRoot as <workspaceRoot>/Artifacts and <workspaceRoot>/Scheduled.
  • Any sub-root explicitly set overrides the derived value.
  • ~ and environment variables ($HOME, %USERPROFILE%, %APPDATA%) are expanded.
  • Paths are validated at startup: must be writable, must not cross a virtiofs-incompatible mount (OneDrive/iCloud Drive cloud-only files, cross-drive on Windows). On failure, fall back to the default and surface a one-time notification.

3. Equivalent UI setting

Settings → Cowork → "Workspace location" with a folder picker, writing to the same config field. UI and config must be a single source of truth.

4. Per-session override (fixes #54138, #52496)

When the user selects a project folder via "Use an existing folder", Artifacts and any per-session storage MUST mount relative to that folder (e.g. <sessionFolder>/.claude-artifacts/), not the global artifactsRoot. The global root is only used for sessions without a selected folder.

5. Migration

On first launch after the change:

  • If ~/Documents/Claude/ exists and the new default location does not, move contents and leave a symlink at the old path for backward compatibility.
  • If the user has set cowork.workspaceRoot, migrate to that location instead.
  • Existing scheduled-tasks.json entries with absolute filePath values are rewritten to point at the new location.

Why one PR instead of four fixes

The four issues are symptoms of one architectural choice (hardcoded base under a TCC/cloud-sync-prone folder with no override). Fixing each surface independently leaves the other three reachable through different code paths. A single resolution layer that reads claude_desktop_config.json, falls back to the platform-appropriate app-data location, and honours per-session folder selection closes all four.

Acceptance criteria

  • Default install on macOS with Documents access denied → Cowork, Scheduled tasks, and Artifacts all work.
  • Windows with Documents redirected to D:\ → same.
  • macOS or Windows with OneDrive-synced Documents → same.
  • User sets cowork.workspaceRoot to an arbitrary path → all three storage areas land under it.
  • User opens a session with "Use an existing folder" → Artifacts mount inside the selected folder, not the global root.
  • Existing users with content at ~/Documents/Claude/ see no data loss after upgrade.
lejacobroy · 3 months ago

This is fixed in the latest version, thank you!

aleozlx · 2 months ago

Thanks is there a PR? I didn't see such link

maurocasile · 2 months ago

Still reproducible on the latest build — not fixed. Adding a precise root-cause analysis in case it helps triage.

Setup

  • OneDrive for Business, sync root on a non-system drive → %OneDrive% = D:\OneDrive - <Org>.
  • Windows "Documents" Known Folder correctly relocated to C:\Users\<user>\Documents, verified at every level: Shell Folders, User Shell Folders, the FOLDERID_Documents GUID, and .NET GetFolderPath(MyDocuments) — all return C:.
  • OneDrive Known Folder Move / backup for Documents is OFF.

Root cause
Cowork does not use the Windows Documents Known Folder. On every launch it rebuilds coworkUserFilesPath as %OneDrive% + \<localized Documents>\Claude — i.e. it reads the %OneDrive% env var and appends the Documents path, ignoring that Documents actually lives on C:. Confirmed with the app closed by searching all of %APPDATA%\Claude (JSON + leveldb): the OneDrive path is cached nowhere — it is derived live at startup, and claude_desktop_config.json only exists while the app is running (regenerated each launch).

Impact
Mounting the OneDrive root as a working folder is rejected:
Directory "...OneDrive..." overlaps a protected host location (...\Documents\Claude\Scheduled) and cannot be mounted.
Subfolders mount fine; only the root — which contains the auto-created Scheduled folder — is blocked. Net effect: the OneDrive root can't be used as a Cowork project folder, so top-level items there can't be created/browsed from Cowork.

Workarounds that do NOT work

  • Pre-writing claude_desktop_config.json with the path on C: → overwritten at next launch.
  • Marking that file read-only → fights the dynamic regeneration; breaks the intended behavior.
  • Restoring the Documents Known Folder → it's already on C:; the app ignores it.

Suggested fix
Derive the scheduled-tasks / user-files path from the actual Documents Known Folder (or %USERPROFILE%\.claude\Scheduled) instead of from %OneDrive%; or expose the config option requested in this issue.

lejacobroy · 2 months ago

There is a new setting in the UI, under "Cowork", called "Cowork Files".

maurocasile · 2 months ago
There is a new setting in the UI, under "Cowork", called "Cowork Files".

TYVM. Confirmed as Solved!

jshcnmt77 · 1 month ago

+1 on making the scheduled-tasks storage location configurable.
Concrete pain point this causes on Windows: I wanted to mount ...\OneDrive - ███████████\Claude as my Cowork working folder, but the mount is rejected because it overlaps the protected ...\Claude\Scheduled directory ("Directory overlaps a protected host location and cannot be mounted"). Since Scheduled is hardcoded inside that path, my only workarounds are to mount a narrower sibling folder or restructure my directories around Cowork's fixed location — rather than Cowork adapting to mine.
Moving the folder manually isn't safe because the app expects it at the hardcoded path, so this genuinely needs to be a supported setting.
Two things that would fully solve it:

A configurable storage location for scheduled tasks (the ask in this issue), and/or
Defaulting to an app-managed location outside user document folders (e.g. %APPDATA%\Claude\Scheduled on Windows / ~/Library/Application Support/Claude/Scheduled on macOS) so it doesn't collide with folders users want to mount.

Bonus: an app-managed default would also avoid the OneDrive sync overhead of having scheduled-task data inside a synced folder.

Showing cached comments. Read the full discussion on GitHub ↗