[BUG] Cowork (macOS): scheduled-task storage root is global and ignores the creating project; its reserved path permanently blocks mounting the containing folder
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Cowork writes all scheduled task definitions to a single global root, <root>/Scheduled/, and registers that path as a protected host location. It then refuses to mount any directory containing a protected path, so the folder holding that root can never be mounted.
Directory "/Users/<me>/Library/CloudStorage/OneDrive-<tenant>/10_Knowledge"
overlaps a protected host location
(/Users/<me>/Library/CloudStorage/OneDrive-<tenant>/10_Knowledge/Scheduled)
and cannot be mounted. Request a project or document folder instead.
The registration is permanent. It survives deleting every scheduled task, renaming or removing the directory, disabling all tasks, and restarting the application.
This is related to #71307 but is not the same mechanism, and I think the difference matters. In #71307 the reserved path follows the selected folder, so every candidate parent is refused and no scheduled tasks were ever created. In my case the reservation is pinned to one specific root: a different folder that is actively configured as a Cowork project folder mounts without complaint. #54859 (configurable storage location) would resolve my case.
The decisive finding: the scheduled-task storage root is global and ignores the project that creates the task. I created a task from a project whose folder was ~/Cowork_Projects. It was written to 10_Knowledge/Scheduled/<taskId>/SKILL.md, i.e. into an unrelated folder belonging to a different project. This rules out every user-side workaround, since the root cannot be relocated by moving tasks between projects, and deleting tasks does not release the reservation.
Tests performed
- Test 1. Baseline: tasks present,
Scheduled/present. Refused. - Test 2. Mount
10_Knowledge/00_Global, a subfolder containing no reserved path. Succeeded. - Test 3.
Scheduled/renamed away, tasks still present. Refused, and the error still names the now-missing path. - Test 4. As test 3, after a full application restart. Refused, so this is not an in-memory cache.
- Test 5. All tasks disabled. Refused.
- Test 6. All tasks deleted,
Scheduled/present. Refused. - Test 7. All tasks deleted and
Scheduled/renamed away. Refused. - Test 8. Mount
10_Knowledge/Scheduleddirectly. Refused, so equality is treated as overlap. - Test 9. Mount
~/Cowork_Projects, a folder actively configured as a Cowork project folder but with no scheduled-task history. Succeeded. - Test 10. Create a task from the project whose folder is
~/Cowork_Projects. Stored at10_Knowledge/Scheduled/, not under the creating project's folder.
Tests 9 and 10 together isolate it: being a project folder is not sufficient to trigger the reservation, and task storage ignores the creating project entirely.
Ruled out
- Cloud provider or OneDrive paths: test 2 mounts a subfolder of the same OneDrive tree
- Cloud-only files: the folder is synced for offline use
- Stale sessions predating the folder configuration: new conversations behave identically
- Corrupt project configuration: a project rebuilt from scratch reproduced the failure
- Declined permission prompts: none is raised, the mount is never attempted
- In-memory caching of the reserved path: test 4
Three secondary effects
- The project-level folder binding fails silently. The Context panel shows the folder as connected, the session receives no mount, and no error is raised in either direction. The assistant reports having no file access while the UI shows access as configured. This presents to the user as the assistant being wrong rather than the app failing, and it cost me several hours before I found the explicit error by requesting the folder manually. Possibly the same underlying refusal as #68954.
- Scheduled tasks report success while producing nothing. They fire on schedule and
lastRunAtupdates, but they cannot mount their target workspace so they write nothing. A weekly backup task of mine reported runs for a fortnight while producing no backups. Nothing surfaces the failure. - The guard blocks task management.
update_scheduled_taskdocuments that a task's current prompt is inspected by reading thepathreturned bylist_scheduled_tasks. That path is inside the protected directory, so the documented way to read a task's own prompt is blocked by the same check.
What Should Happen?
Mounting a directory that contains a Cowork-reserved subdirectory should succeed, with the reserved subdirectory excluded from the mount. Refusing the entire parent is disproportionate, and where the application placed the reserved directory inside a user-nominated folder, it is not avoidable by the user.
Failing that, any of:
- Store scheduled task definitions in application-local state rather than in a user folder
- Make the scheduled-task root configurable (#54859)
- Release the reservation when the last task referencing it is deleted
Separately, and independent of the mount behaviour: the silent failure is the more damaging half. A folder that displays as connected while providing no access should surface an error.
Error Messages/Logs
Directory "/Users/<me>/Library/CloudStorage/OneDrive-<tenant>/10_Knowledge" overlaps a protected host location (/Users/<me>/Library/CloudStorage/OneDrive-<tenant>/10_Knowledge/Scheduled) and cannot be mounted. Request a project or document folder instead.
Session mount table with the project's folder configured as `10_Knowledge`, showing no user directory mount at all:
/sessions/<id>/mnt/outputs (rw, fuse)
/sessions/<id>/mnt/uploads (ro, fuse)
/sessions/<id>/mnt/.auto-memory (ro, fuse)
/sessions/<id>/mnt/.claude/skills (ro, fuse)
/sessions/<id>/mnt/.claude/projects (ro, fuse)
Session metadata passed to the assistant reads `User selected a folder: no`, despite a folder being configured on the project.
Steps to Reproduce
- Create a Cowork project pointed at ~/Workspace.
- Create any scheduled task. Its definition is written to ~/Workspace/Scheduled/<taskId>/SKILL.md.
- Request ~/Workspace. The mount is refused as overlapping a protected host location.
- Delete the task, delete the directory, and restart the application. Repeat step 3: still refused.
- Create a second project pointed at ~/Elsewhere and create a task from it. Observe that the definition is written to ~/Workspace/Scheduled/, not ~/Elsewhere/Scheduled/.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Unknown build number, but the window is narrow. The workspace mounted normally on the morning of Tuesday 2026-08-11. An app update was installed either that afternoon or on the morning of Wednesday 2026-08-12. The failure was noticed on Thursday 2026-08-13. Current version 1.28929.0 (d1a6bc) is affected. The reserved directory was created 2026-07-10 (stat -f "%SB") and the workspace mounted normally for a month afterwards, so the directory layout did not change and no files were modified on my end. For the avoidance of doubt, this is not the earlier scheduled-tasks cloud-execution change, which landed a week or two before this and which I remediated separately. This is a distinct regression from a later update.
Claude Code Version
Claude for Mac 1.28929.0 (d1a6bc)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Current workaround: mounting individual subfolders that do not contain the reserved path. This restores file access but requires a separate request per subfolder per conversation, prevents cross-folder work in a single session, and is unavailable to scheduled tasks, since a non-interactive run cannot answer a permission prompt.
The affected workspace is a structured knowledge base whose conventions require every Cowork project to mount the workspace root, so that shared context is visible from every project. Twelve projects are affected. Subfolder mounting is not a viable long-term substitute.
Related: #71307 (same error string, reserved path follows the selected folder rather than being pinned to a global root), #54859 (configurable scheduled-task storage location), #68954 (project-level folder not mounted in new conversations).
3 Comments
Unblocked on my instance by @jturuc's workaround, and I can now explain why it works, which I don't think the thread has established yet. Leaving this open, since the underlying behaviour is unchanged: the check still refuses any parent of the reserved path, the failure is still silent when it occurs via a project's configured folder, and the storage location still isn't configurable. The workaround moves the reserved path out of the way rather than fixing it, and it permanently rules out ever pointing the setting at a working folder.
The setting is Settings → Cowork → Cowork files. That path is the reserved root. Mine was set to my workspace root, so the workspace could never be mounted. Repointing it to a folder structurally unrelated to my work (~/Cowork_Files, a sibling of nothing I work in) fixed it immediately. The workspace mounted on the first attempt with no other change, project-level folder bindings started working again, and scheduled tasks can now reach the workspace.
The mechanism, which explains the odd results several of us have reported. The reserved path is derived from that single global setting, not from the project or folder being mounted. Two tests make this concrete:
I mounted ~/Cowork_Projects, a folder actively configured as a Cowork project folder but not the Cowork files location. It mounted without complaint. So being a selected or configured folder is not what triggers the block.
I created a scheduled task from the project whose folder was ~/Cowork_Projects. The definition was written to <Cowork files>/Scheduled/<taskId>/SKILL.md, i.e. into an unrelated folder belonging to a different project.
That is why deleting tasks, renaming the directory, removing it entirely, disabling tasks and restarting the app all changed nothing for me: the check is path arithmetic against the setting, never a filesystem test. It is also why reporters who have never created a scheduled task still hit it.
Two warnings for anyone applying the workaround.
Changing the setting copies rather than moves, and it copies everything in the old location, not just the Cowork-managed folders. My old location was a knowledge workspace of several hundred folders on OneDrive, and the change produced a complete second copy on local disk, including cloud-only files that had to be downloaded. Check the size of the current location before changing it. Afterwards, only Artifacts/ and Scheduled/ in the new location are needed; the rest can be deleted, and the originals are untouched.
The new location then inherits the block, exactly as @jturuc found. There is no folder that can be both the Cowork files location and mountable, so it has to be somewhere you never need Claude to read.
Corrected regression window for my report. I originally gave a wider range. My daily scheduled task produced output at 07:46 on 2026-08-12 and failed at 07:36 on 2026-08-13, so the break is inside that window. Affected version 1.28929.0 (d1a6bc), macOS Tahoe 26.5.2. No file changes and no layout changes on my end.
On the suggested fix. Agreed that excluding the reserved subtree from the overlap check is the right shape, and it would close #54859. I'd add one thing that cost me more time than the mount failure itself: when the reserved path blocks a project's configured folder, nothing surfaces. The Context panel shows the folder as connected, the session receives no mount, and no error appears in either direction. It presents as the assistant being wrong rather than the app failing. The explicit error only appears if you request the folder manually. Even without a behavioural change to the check, surfacing that failure would save people a lot of misdirected debugging.
Same regression on Windows, so this is not macOS-specific.
Environment
C:\Users\<me>\OneDrive\Personal\My-Cowork-Workspace...\My-Cowork-Workspace\05_Claude\ScheduledTimeline matches yours exactly. Everything worked through Tuesday
2026-08-11. An app update landed on the 11th or 12th. From 2026-08-13 the
workspace root no longer mounts by any route. I changed no configuration in
the ten days before.
Extra data point on the mechanism. Before the update, the overlap rule
applied only to folders requested interactively mid-session. Folders
configured in project settings still mounted fine, which is why my setup kept
working for weeks after the reserved path was created. After the update the
same check applies to configured project folders too. That narrows the
regression to where the check is applied, not to the check itself.
Your test 2 reproduces here. Leaf subfolders with no reserved path inside
mount and are writable (
00_Core,wiki,05_Claude\scripts,05_Claude\.session-queue). The root and05_Claudeare refused.Confirming your secondary effect #1, which is the expensive one. The
context panel shows the folder as connected while the session gets no mount
and no error. From the user side this reads as the assistant being wrong
about its own file access, not as the app failing. I lost most of a day to
that before finding this issue.
Confirming secondary effect #2. Scheduled tasks fire,
lastRunAtupdates, and nothing is written. In my case a daily brief wrote its output
file but its logging step failed silently, so the run looked clean while
leaving no trace. I only caught it because a separate canary reads four
sources instead of one.
Practical consequence worth adding to the report. Root-level files are
collateral.
CLAUDE.mdat the workspace root is the standard place for it,and it is now unreachable from every session, so sessions start without their
configuration and behave differently with no visible cause.
+1 on the primary fix: mounting a folder that contains a reserved
subdirectory should succeed with that subdirectory excluded.
Ran into this hurdle the other night, and was completely confused - until Claude itself told me that the Scheduled folder is now a protected folder. The only reason I knew there was a failure was because I had an abort & notify step already built into the task I was trying to manually run. (Claude initially tried to claim that the manual run operated "differently" from a scheduled run; which I refused to accept based on logic alone - and proved when I rescheduled that task and that also failed to mount the needed folder!).
Unfortunately the "fix" you recommend doesn't resolve my issue - as the only things I had inside the linked Cowork files folder under settings were my artifacts, tasks, and other Claude creations. It was the items inside those task folders that some of my tasks needed that were suddenly no longer being mounted. And were unreachable even by Bash with a direct line to that file!
My "fix" is having to redesign the key steps of the affected tasks into a different method, though I do not call this a fix. Especially since this protected folder status came with no obvious announcement. My tasks just started failing - and only my own abort/notification step in the task instructions let me know there was even an issue!