方法与实践 可动手 重点 10月27日 周二 #agent-skills#safety#devtools

统计 3,715 个公开 Skill:近三成不受限 Bash 授权根本没用上

公开 Agent Skill 调查项目 agent-skills-state-2026 在 10 月 26 日发布跟进报告,分析在 allowed-tools 里申请不受限 Bash(裸 `Bash` 或 `Bash(*)`,技能激活时可免确认执行任意命令)的技能实际做了什么。在 392 个仓库的 3,715 个技能中,29.9% 既没写 shell 命令也不带脚本;写了命令的 2,545 个技能里,55.7% 只用到三个或更少的不同命令;34.7% 记录或附带了至少一种较高风险行为。

安装包和直接 HTTP 调用是技能里最常见的风险行为
安装或拉取包15.7%
直接 HTTP 调用14.4%
递归删除/丢弃 git 改动9.2%
eval 执行拼接字符串8.4%
推送或发布5.0%

数据来自 agent-skills-state-2026 的 10 月 26 日跟进报告

要点

  • 较高风险行为中最常见的是安装或拉取包(15.7%)、直接 HTTP 调用(14.4%)、递归删除或丢弃 git 改动(9.2%)、用 eval 执行拼接字符串(8.4%)、推送或发布(5.0%)
  • 首期报告显示,2,621 个带技能的仓库中 15.5% 至少有一个技能申请了不受限 Bash
  • 作者人工抽查 60 个技能,授权判定 60 个全对,风险行为标记 20 个中 17 个正确(85.0%);规则在同一样本上调整过,数字可能偏乐观
  • 建议:没有命令和脚本的技能直接删掉 Bash,其余改成只允许文中出现的命令,如 `Bash(git status:*)`,并固定所装包的版本、每次更新后重新审查
为什么值得关注

团队引入社区 Skill 时,可以照这份清单检查 allowed-tools,把权限收窄到具体命令;这一做法与模型无关,自部署环境同样适用。注意报告只分析了页面和技能目录内的脚本,不代表 Agent 运行时实际执行的命令。

配套实验

已验证 检查 12/12 通过 GitHub Actions 实际运行 · Python 3.12.15 · 耗时 不到 0.1s
离线审查 SKILL.md:找出不受限 Bash 授权并给出收窄规则

参考 agent-skills-state-2026 的 10 月 26 日报告,用 8 个内置 mock 技能演示:解析前言、识别裸 Bash / Bash(*) 授权、找出没用上的授权、标记较高风险命令,并按正文命令给出 Bash(命令:*) 形式的收窄建议。

结论5 个不受限 Bash 授权中 1 个可直接删除,其余可按命令收窄

…
[PASS] no-frontmatter: parse='missing'
[PASS] formatter: 收窄后的规则覆盖了正文中的全部命令
[PASS] release: 收窄后的规则覆盖了正文中的全部命令
[PASS] bootstrap: 收窄后的规则覆盖了正文中的全部命令
[PASS] env-loader: 收窄后的规则覆盖了正文中的全部命令

METRIC: 技能总数 = 8 个
METRIC: 前言无法解析或缺失 = 2 个
METRIC: 不受限 Bash 授权 = 5 个
METRIC: 授权未用上 = 1 个
METRIC: 带较高风险命令 = 4 个
METRIC: 不受限授权中未用上的比例 = 20.0 %
METRIC: 用到的不同命令不超过 3 个的比例 = 75.0 %
RESULT: 5 个不受限 Bash 授权中 1 个可直接删除,其余可按命令收窄
python main.py 查看代码与内网复现步骤 →

来源

Esc
↑ ↓ 选择Enter 打开

分享图

1080 × 1350,适合发到群聊或朋友圈
分享图预览

键盘快捷键

j / k
下一条 / 上一条
o
展开或收起当前条目
Enter
打开当前条目详情
c
复制当前条目链接
s
收藏 / 取消收藏当前条目
/ 或 ⌘K
搜索
1 2 3
切换密度:标题 / 摘要 / 完整
t
切换主题
?
显示本帮助