帖子说了什么
@jacksunny18 对照 Agent Skills 规范 指出:技能格式没有独立的信任/出处字段;六个 frontmatter 字段里,唯一碰权限的是 allowed-tools——描述为「预先批准可运行的工具」的空格分隔列表,且标了 (Experimental)。它是授权(grant),不是「把权限收紧」的限制。相关 harness 文档还写明:该字段在调用 skill 的那一轮授予所列工具;并不会禁止其它工具;工作区信任(workspace trust)也不闸住它;skill 甚至可以给自己写很宽的工具访问。真正在 Claude Code 侧用来「减工具」的是扩展字段 disallowed-tools,并不在可移植规范的那六个字段里。
为什么和账号安全有关
陌生仓库或市场里的 skill,作者可以在 SKILL.md 里写好一行 allowed-tools,再附带 scripts/ 可执行代码。你一点安装/启用,等于接受了对方写好的预批清单。规范本身只要求脚本「自包含、有错误信息」,不要求签名或 provenance。
落地做法
- 安装前打开
SKILL.md,专门搜allowed-tools;过宽(例如大范围Bash)就先不要用。 - 不要用「已信任工作区」当免检:官方/规范侧都说明 trust 不闸住该字段。
- 组织环境:可配合 managed 的
allowManagedPermissionRulesOnly,让部分来源的allowed-tools被忽略(见设置参考)。 - 自己写 skill:宁可少写预批,也不要为了「省弹窗」开过大权限。
小结
allowed-tools 读作「作者要了哪些工具」,不是「作者主动收紧了什么」。陌生 skill 的这一行,值得当成安全审查的第一行。
