Fix: Permission Denied / File Access Error
Error Message:
"Permission denied" "Cannot read file at path /Users/..." "Access to the requested resource is forbidden" "Operation not permitted: EACCES"
What This Error Means
Claude Cowork runs inside a sandboxed environment. On macOS, this is enforced by the operating system's App Sandbox and TCC (Transparency, Consent, and Control) framework. On Windows, it's enforced through the app's process permissions and User Account Control. By design, Claude cannot read or write files outside the directories you've explicitly granted it access to. When you see a permission denied error, it means Claude tried to touch a file or folder that falls outside those granted boundaries.
This is a security feature, not a bug. Without it, any prompt could theoretically direct Claude to read your SSH keys, browser cookies, or tax documents. The sandbox prevents that. The trade-off is that you have to manage access deliberately.
Root Cause Analysis
The most common cause is scope mismatch. During setup, you granted Claude access to a specific folder — say, ~/Documents/Cowork. Everything works fine until you ask Claude to read a file that lives somewhere else, like ~/Downloads/report.csv or ~/Projects/client-site/index.ts. Claude tries to open the file, the OS intercepts the call, checks the access list, finds no matching entry, and returns EACCES. The error message usually includes the full path, which tells you exactly which directory is missing from the allow-list.
A second cause is file-level permission issues. Even if Claude has access to the parent directory, the specific file might be locked, read-only, or owned by another user. This happens with files created by other applications, files copied from external drives (which can inherit restrictive permissions), or files in directories with restrictive ACLs. On macOS, files downloaded from the internet often carry a quarantine attribute that can interfere with access. On Windows, files in system directories like Program Files require elevated permissions that sandboxed apps don't have.
A third cause is stale permissions after OS updates or app reinstalls. macOS sometimes resets TCC entries after a major version upgrade or after an app is reinstalled. You might have granted access three months ago, but after updating to a new macOS version, the entry is gone and Claude silently loses access. The error appears out of nowhere even though nothing about your workflow changed.
Real-World Example
A user had been working with Claude on a project in ~/Documents/Cowork/project-alpha for weeks. One day they downloaded a CSV file from a client portal into ~/Downloads and asked Claude to "compare this CSV against the data in project-alpha." Claude read the project-alpha files fine but threw "Permission denied: Cannot read file at /Users/jane/Downloads/client-data.csv." The fix took 30 seconds: they moved the CSV into the project-alpha folder and re-asked. Claude read it immediately.
Step-by-Step Fix
Method 1: Move the File Into an Authorized Folder (Fastest)
If this is a one-time need, don't bother changing permissions. Just move the file.
- Find your Cowork workspace folder (usually
~/Documents/Coworkon macOS, orC:\Users\YourName\Documents\Coworkon Windows). - Drag or copy the file into that folder.
- Ask Claude to try again.
This is the safest approach because it doesn't expand Claude's access scope. You're bringing the file to Claude, not giving Claude access to more of your system.
Method 2: Grant Access to a New Directory (macOS)
If you need Claude to regularly access files in a different directory, add it to the allow-list permanently.
- Open System Settings → Privacy & Security.
- Click Files and Folders (on older macOS versions, this may be under Security & Privacy → Privacy tab).
- Find Claude (or Cowork) in the list.
- If you see the specific folder listed, toggle its switch to On.
- If the folder isn't listed, you may need to trigger access from within Claude: ask Claude to read a file in the new directory. macOS will show a permission prompt. Click Allow.
- If no prompt appears, go to System Settings → Privacy & Security → App Management or Full Disk Access, and add Claude there (use this sparingly — full disk access removes most sandbox restrictions).
- Restart Claude for permission changes to take effect.
Method 2 (Windows): Grant Directory Access
- Right-click the folder you want Claude to access → Properties → Security tab.
- Click Edit to change permissions.
- Add the user account that Claude runs under (usually your own account).
- Check Read & execute and List folder contents.
- Click Apply → OK.
- If Claude still can't access it, the folder may be on a different drive or in a protected location (
C:\Program Files,C:\Windows). Move your working files to a user directory likeC:\Users\YourName\Documentsinstead.
Method 3: Fix File-Level Permissions
If Claude has access to the directory but still can't read a specific file, the file itself is locked.
macOS:
- Right-click the file → Get Info.
- Scroll to Sharing & Permissions at the bottom.
- Ensure your user account has Read & Write access.
- If the file is locked, uncheck the Locked checkbox at the top of the Get Info window.
- If the file has a quarantine attribute, run this in Terminal:
xattr -d com.apple.quarantine /path/to/file
Windows:
- Right-click the file → Properties → Security tab.
- Ensure your user account has Read permission.
- If the file is marked read-only, right-click → Properties → uncheck Read-only → Apply.
Method 4: Re-Grant Access After macOS Updates
If permissions worked before and suddenly stopped after an OS update:
- Open System Settings → Privacy & Security → Files and Folders.
- Look for Claude in the list. If it's missing or the toggles are off, the update reset it.
- Remove Claude from the list entirely (if present), then re-trigger access by asking Claude to read a file. This forces a fresh TCC prompt.
- Restart Claude.
Common Pitfalls
- Granting Full Disk Access when you don't need it. This defeats the sandbox. Only grant access to the specific folders Claude needs.
- Forgetting to restart Claude after changing permissions. macOS caches TCC entries per process. If Claude is running when you change settings, it may not pick up the change until you quit and relaunch.
- Symlinks pointing outside the sandbox. If your workspace folder contains a symlink to a directory outside the granted scope, Claude will hit permission errors when it follows the link. Either remove the symlink or grant access to the target directory.
- Case sensitivity confusion. macOS filesystems are typically case-insensitive but case-preserving. If you grant access to
~/Documents/Coworkbut Claude tries to read~/documents/cowork, it usually works — but if you're on a case-sensitive volume (common with external drives), it won't. Match the case exactly.
Prevention Checklist
- Keep all files you want Claude to work on inside your designated workspace folder.
- When downloading files from the internet, save them directly into the workspace folder instead of
~/Downloads. - After any macOS major update, verify Claude still has folder access in System Settings.
- Avoid symlinks in your workspace that point to external directories.
- If working with files from external drives, copy them into the workspace first rather than granting access to the drive.
- Document which directories Claude has access to, so you can quickly re-grant them after a reset.