workbuddy 在 macos 上执行 python 脚本报 “operation not permitted” 是因未获完整磁盘访问权限且进程未重启;脚本及所用数据必须位于授权路径(如 ~/documents),禁用 sip 保护区调用,启用 --debug 查看具体拒绝路径。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

WorkBuddy 执行 Python 脚本时抛出 Operation not permitted,不是脚本写错了,而是 macOS 拦住了系统调用——它不让你碰没明说要访问的路径,哪怕只是 os.listdir() 读个目录。
确认脚本是否落在授权路径内
macOS 不会因为你装了 Python 就自动放行所有文件操作。WorkBuddy 只能安全读写三类位置:用户主目录下的子目录(如 ~/Documents)、~/Library/Application Support/WorkBuddy、或通过 Open Panel 显式选取的路径。
- 运行前先检查脚本路径:
python -c "import os; print(os.path.abspath('analyze_data.py'))",确保输出以/Users/xxx/开头 - 如果路径是
/usr/local/bin、/tmp或桌面快捷方式指向的别名(alias),一律不行——重存到「文档」或「项目」文件夹再试 - 若脚本需加载外部数据(如
pd.read_csv('data.csv')),该 CSV 也必须在已授权路径下,不能靠相对路径“绕过”
补全「完整磁盘访问」权限后必须重启 WorkBuddy
只在系统设置里勾选 WorkBuddy.app 不生效,进程不会动态加载新权限。常见错误是勾选完直接点「运行脚本」,结果还是报错。
腾讯云代码助手CodeBuddy旗下WorkBuddy 4.24.8版本正式发布。本版本重点修复了上下文压缩异常、冷加载时偶现历史消息丢失、任务停止卡死等问题,并深度优化了Windows沙箱(lightSandbox)的日志写入与误弹窗逻辑,提供更安全稳定的AI协作体验。
- 打开「系统设置 → 隐私与安全性 → 完整磁盘访问」,点击右下角锁图标解锁
- 点「+」→
Cmd+Shift+G→ 输入/Applications/WorkBuddy.app→ 回车选中 → 确保复选框打钩 - 关闭所有 WorkBuddy 窗口(包括托盘进程),在活动监视器里确认没有残留的
WorkBuddy进程 - 重新双击启动,再执行脚本
避免在脚本里触发 SIP 保护区访问
某些 Python 库(如 psutil、pyobjc)底层会尝试读取 /proc、/System/Library 或 /usr/bin,这些路径受 SIP 保护,WorkBuddy 无权绕过。
- 删掉脚本中类似
psutil.disk_usage('/')、subprocess.run(['ls', '/usr'])这类越界调用 - 改用沙盒友好替代:查磁盘空间用
shutil.disk_usage(Path.home());列当前目录用os.listdir('.')而非绝对路径 - 如果必须调用系统命令,限定范围:
subprocess.run(['which', 'python'], capture_output=True)是安全的,但['ls', '/usr/local']可能失败(取决于你是否额外授权了该路径)
调试时加 --debug 看真实拒绝点
WorkBuddy 默认隐藏底层错误堆栈,只报模糊的「执行失败」。加参数才能暴露是哪一行、哪个系统调用被拒。
- 在 Claw 指令里写:
请运行 analyze_data.py --debug - 执行后查看日志里最末尾的
OSError: [Errno 1]行,注意filename=后面的路径和errno=1(Operation not permitted) - 常见陷阱:脚本里用了
open('/etc/hosts')、Path('/Library').iterdir()、甚至import tkinter(会尝试访问 /System)
真正卡住人的从来不是「要不要授权」,而是授权之后忘了重启、或者以为授权一次就一劳永逸——macOS 的权限模型是进程级的,不是应用级的。每次更新 WorkBuddy 或重装系统,都得重走一遍完整磁盘访问流程。










