GitHub Actions 权限与任务依赖审查
审查单份本地 workflow 声明的令牌权限、实际 needs 边、环与动作引用,导出完整 JSON 和 CSV。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
选择一份 UTF8 YAML1.2 工作流快照。根据 workflow 声明或明确提供但未经验证的仓库默认值,解析 job 的权限映射。缺省值保持未知,全局模式保留原声明;只审查依赖和 uses,不运行表达式、不联系 GitHub。
如何使用
- 从自己的仓库复制并选择一份 workflow YAML。
- 默认保留未知;只有明确掌握仓库设置时才提供上下文,选择 JSON 映射后才解析文本框。
- 检查权限来源、省略项 none、缺失或未解析的依赖,以及精确环成员。
- 下载完整 JSON/CSV 与每个 job 的原声明;仓库设置和实际运行权限需另行核验。
支持范围与限制
单文件最多 5MiB;解析后 YAML 值节点 100,000 个、深度 64、job 1,000 个、needs 声明和 uses 各 10,000 个。默认权限 JSON 最多 4KiB;完整 JSON/CSV 合计 10MiB。各项限制同时生效。只预览前 200 个 job,每格最多 2,000 个 UTF16 字符;下载保留全部记录。
只支持单份 YAML1.2 core 文档、唯一字符串映射键、普通映射/数组/标量和无环别名。yaml2.9.1 的加权别名展开保护值为 50,不承诺支持 50 次字面引用。自定义/Set/二进制/日期标签、YAML1.1、环、重复键、非有限数、不安全整数和未知权限键会让整份审查失败。
权限键固定于 2026-10-07 配置。job 映射替换 workflow 映射;省略的权限为 none,{} 表示全部 none。缺少默认值仍未知,用户提供的默认值仍未验证。read-all/write-all 保留字面模式,不虚构逐项实际权限。
只读单份已提供快照,不是完整 workflow 模式验证、安全结论或实时令牌测试。fork、Dependabot、可复用工作流和仓库限制仍未知。矩阵、条件、needs 表达式与 job/step uses 只保留原文;不抓取动作、不改仓库、不请求网络、不运行脚本。取消后丢弃全部结果。
操作示例
示例输入
六个 job:build/deploy/empty、cycleA/cycleB 和 after。workflow 声明 contents: read/issues: write;deploy 声明 id-token: write;after 引用缺失 job 和表达式。
示例参数
{"repositoryDefault":"unknown","defaultPermissions":"{}"}示例输出
完整六条记录、七条 needs 声明、五条已有边、一个两成员环、一条缺失目标和一条未解析依赖;deploy 的 contents 为 none,下游 after 不属于环。
出现问题时
修正重复键、不支持的类型/权限或超限项,保留原文件并重跑。不同工作流分别审查,只填写已知上下文。非法输入或取消不会生成部分成功文件;再次运行同一支持文件会重建完整报告。
常见问题
job 权限会与 workflow 权限合并吗?
这里 job 映射会替换 workflow 策略。workflow 为 contents: read、job 为 id-token: write 时,该 job 的 contents 为 none。明确的空 job 映射让所有支持的权限为 none。
未知默认值或全局模式能证明实际权限吗?
不能。未知仍未知,用户上下文未经验证,read-all/write-all 保留字面声明。单份本地文件无法推断实际令牌限制或引用工作流的权限。