
开发者利用 Finder 颜色标签限制 AI 编程代理访问文件夹
来源标题:How we use Finder color tags
开发者发现可将 macOS Finder 的颜色标签作为元数据,用来控制 Claude Code 等 AI 编程代理能访问哪些文件夹。标签以扩展属性形式保存在文件夹本身,比静态配置文件更灵活,移动文件夹也不会失效。具体做法是安装 PreToolUse hook 按标签拦截代理访问。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
你知道 Finder 从 2013 年起就有彩色标签了吗?我们问了几个人,发现大多数用户试过一次就再也没碰过。我姐姐把她所有的文件夹都标成了红色,因为看起来酷,但我们不谈这个。除此之外,那些标签似乎没什么用,但它们却出现在 Finder 许多右键菜单的正中间。我们该怎么利用这一点呢?
我们目前最好的想法:告诉 AI 编程 agent 它们可以碰哪些文件夹。
Claude Code 和其他编程 agent 能读取你的用户账户能读取的任何内容。你可以在配置文件里屏蔽路径,但那样你就得不断更新那个文件。移动文件夹会打乱配置,因为它是静态的。结果 Finder 标签不是这么运作的!它们作为元数据保存在文件夹本身之上。
macOS 把标签保存在一个名为 com.apple.metadata:_kMDItemUserTags 的扩展属性(二进制 plist)里。
$ xattr -px com.apple.metadata:_kMDItemUserTags ~/Taxes | xxd -r -p | plutil -p - 0 => "Taxes 6"
标签有一个名称、一个换行符和一个数字。颜色/数字对应: 1 灰色 2 绿色 3 紫色 4 蓝色 5 黄色 6 红色 7 橙色
通过标签阻止 Agent 访问
我们可以在 Claude Code 上安装一个 PreToolUse hook,它会在每次工具调用时运行。该 hook 调用一个脚本,检查文件夹的元数据。然后这次调用会被阻止,并向 stderr 输出一个错误,好让 agent 知道发生了什么。想更有趣的话,可以给 agent 极其含糊的错误信息,让它越来越困惑和烦躁。
#!/bin/bash
~/.claude/hooks/red-folders.sh
path=$(plutil -extract tool_input.file_path raw - 2>/dev/null) || exit 0 dir=$path while [ "$dir" != "/" ]; do if xattr -px com.apple.metadata:_kMDItemUserTags "$dir" 2>/dev/null | xxd -r -p | plutil -convert json -o - - 2>/dev/null | grep -q '\n6"'; then echo "$dir was never real" >&2 exit 2 fi dir=$(dirname "$dir") done
在 ~/.claude/settings.json 中启用它: "hooks": { "PreToolUse": [{ "matcher": "Read|Edit|Write
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。