[FEATURE] Cowork: allow configuring the storage location for scheduled tasks (currently hardcoded to ~/Documents/Claude/Scheduled/)
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
~/Documentsclean 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:
- Change the default to an app-managed, non-TCC-gated location.
~/Library/Application Support/Claude/Scheduled/on macOS and%APPDATA%\Claude\Scheduledon 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. - Expose a preference in Settings → Cowork → "Scheduled tasks location" for users who want a custom path.
- 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.
- User opens Cowork and creates a scheduled task ("daily morning briefing")
- Task creation succeeds; the UI shows the task as configured normally
- User attempts to run the task or starts any new Cowork session
- Session fails immediately with
RPC error: failed to mount ... operation not permitted - User has no in-app indication that the failure is due to a missing TCC grant on
~/Documents/ - User files a bug report or gives up on Cowork
With the proposed fix (default storage moved to ~/Library/Application Support/Claude/Scheduled/):
- User opens Cowork and creates a scheduled task
- Task is stored in app-managed location, no TCC dependency
- 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.
Showing cached comments. Read the full discussion on GitHub ↗
14 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
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:
I would want clarity on:
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.
it's opaque therefore unclear. (i didn't check source code etc)
in my mind / use case. it's just a path
yes, more understandable / precise errors would be very helpful
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
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.
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 definitionsThere is no user-facing setting and no
claude_desktop_config.jsonfield 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 toD:\, MDM-restricted corporate Macs, and user folders kept outside~/Documentsby preference.Proposed fix
1. New default location (no config required)
Move the canonical storage out of the TCC-gated, user-redirectable Documents folder:
~/Library/Application Support/Claude/Cowork/%APPDATA%\Claude\Cowork\$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.jsonResolution rules:
cowork.workspaceRootis set and the sub-roots are not, deriveartifactsRootandscheduledTasksRootas<workspaceRoot>/Artifactsand<workspaceRoot>/Scheduled.~and environment variables ($HOME,%USERPROFILE%,%APPDATA%) are expanded.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 globalartifactsRoot. The global root is only used for sessions without a selected folder.5. Migration
On first launch after the change:
~/Documents/Claude/exists and the new default location does not, move contents and leave a symlink at the old path for backward compatibility.cowork.workspaceRoot, migrate to that location instead.scheduled-tasks.jsonentries with absolutefilePathvalues 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
D:\→ same.cowork.workspaceRootto an arbitrary path → all three storage areas land under it.~/Documents/Claude/see no data loss after upgrade.This is fixed in the latest version, thank you!
Thanks is there a PR? I didn't see such link
Still reproducible on the latest build — not fixed. Adding a precise root-cause analysis in case it helps triage.
Setup
%OneDrive%=D:\OneDrive - <Org>.C:\Users\<user>\Documents, verified at every level:Shell Folders,User Shell Folders, theFOLDERID_DocumentsGUID, and .NETGetFolderPath(MyDocuments)— all returnC:.Root cause
Cowork does not use the Windows Documents Known Folder. On every launch it rebuilds
coworkUserFilesPathas%OneDrive%+\<localized Documents>\Claude— i.e. it reads the%OneDrive%env var and appends the Documents path, ignoring that Documents actually lives onC:. 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, andclaude_desktop_config.jsononly 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
Scheduledfolder — 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
claude_desktop_config.jsonwith the path onC:→ overwritten at next launch.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.There is a new setting in the UI, under "Cowork", called "Cowork Files".
TYVM. Confirmed as Solved!
+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.