Rul1an/plimsoll-action

GitHub: Rul1an/plimsoll-action

Plimsoll 是一个 GitHub Action,通过 diff AI agent 新旧版本的运行时能力面(文件系统、网络、MCP 工具)来审查发布变更,并对 PR 实施门控以防止未经批准的能力漂移。

Stars: 1 | Forks: 0

# Plimsoll 发布审查 (GitHub Action) [![市场](https://img.shields.io/badge/GitHub%20Marketplace-Plimsoll%20release%20review-blue?logo=github)](https://github.com/marketplace/actions/plimsoll-agent-release-review) **查看 AI agent 发布在运行时所做的更改,对其进行审查,并为 PR 设置门控。** 在每个 pull request 上, Plimsoll 会对 agent 在实际运行中可以执行的操作(filesystem、network、MCP 工具)在先前版本与 新版本之间进行 diff 比对,决定是否需要人工批准该更改,在 PR 上发布审查, 并在 code scanning 中报告发现结果。 专为发布 agent(MCP 服务器、使用工具的 agent、 agent 工作流)的 AI 平台团队和安全工程师构建,他们需要在部署前回答一个问题:**运行时能力发生了什么变化,以及 我们是否应该批准它?** 主题:AI agent、agent 安全、MCP、工具投毒 (tool poisoning)、rug pull、运行时能力、发布审查、 能力差异、供应链、SARIF、code scanning、CI 门控。 ## 快速开始 ``` # .github/workflows/plimsoll.yml name: Plimsoll release review on: pull_request permissions: contents: read pull-requests: write security-events: write jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # pin to a SHA in production - uses: Rul1an/plimsoll-action@v1 # pin to a SHA in production with: before: before.json # previous release's capability surface after: after.json # the new release's capability surface fail-on: pending # fail until a human approves new capability ``` 能力面 (capability surface) 是指 agent 在运行时实际执行的操作。它来自于 [assay](https://github.com/Rul1an/assay)(通过 eBPF 进行内核观察)或任何能够生成简单 `{fs, net, tools, procs}` 结构的生产者。该 action 还接受 assay runner 归档文件 (`.tar.gz`)。 ## 您将获得什么(免费,无需账户) 可在任何 repo 上运行,无需 token,由该 repo 中的开放审查引擎提供支持: - 两个版本之间的能力差异(新的 filesystem 路径、network endpoint、MCP 工具), - PR 上的置顶审查评论和作业摘要, - 上传至 code scanning 的 SARIF,因此发现结果会显示在“安全”选项卡和 PR 批注中, - 可配置的门控:`fail-on: pending` 会保留发布,直到人工批准新功能; `blocked` 仅在覆盖率挂起时失败;`never` 仅报告而不失败, - 覆盖率诚实,失败即关闭:只有在实际观察到的能力面上,无差异运行才会被自动清除。如果 相关能力面(例如网络层)未被观察到,则发布会作为 `inconclusive_observation_gap` 被保留,而不会悄然通过。“什么也没看到”绝不会被视为“没有去检查”。 - 证据清理:如果记录的能力面值看起来像是一个密钥(提供商 token、PEM 私钥、 JWT、bearer token、`key=value` 凭证),审查会发出警告并生成 `PLIMSOLL-POSSIBLE-SECRET` 发现结果,以便您在捕获时对其进行脱敏处理。它是无值的(永远不会回显匹配的值)并且 是建议性的,而非门控。 这是针对单个 repo 的完整审查,而不是试用体验。 ## 捕获在您批准后发生更改的工具 这种捕获来自于观察到的实际效果,而不是通过重新阅读工具的描述,因此它能够有效防范 工具投毒和 rug pull(描述或行为在批准后发生更改的工具)。一个 翻译 agent 如果悄悄开始读取凭证文件、打开未声明的 endpoint,并 使用新的出站 HTTP 工具,将被识别为三个发现结果并以 `pending` 状态保留,而一个仅 触及工作区的例行发布会自动清除。 ## 最大化使用(托管层) 免费的 action 一次只能审查一个 repo。运行多个 agent 的团队可以使用 `license` 输入将运行连接到托管 层:具有保留期的跨 repo 审计账本、能力漂移的机群视图、受管制的批准工作流 (RBAC、SSO、批准队列),以及锚定的审查证明。 这些功能需要托管服务,因此它们位于 Plimsoll 账户之后,而不是受限的本地检查之后。 开放审查引擎保持开放。托管层目前处于预览阶段。 ## 这与 assay action 有何不同 | | [assay action](https://github.com/Rul1an/assay-action) | Plimsoll action(此 action) | | --- | --- | --- | | 输入 | 来自 agent 运行的证据包 | 两个能力面(先前版本对比新版本) | | 作用 | 验证、lint、与基线进行 diff、合规性检查包、证明 | 能力差异、审查策略、批准/保留、门控 | | 回答 | 本次运行的证据是否有效且完整? | 版本之间发生了什么变化,我们是否应该批准它? | 它们可以组合使用:assay 验证记录是否可信;Plimsoll 审查能力更改并对其进行 门控。assay 负责观察和验证;Plimsoll 负责审查和决策。 ## 安全性 - 将此 action 和您工作流中的每个 action 固定到完整的 commit SHA,而不是 tag。 - 无第三方 action 依赖项:它在 runner 上使用 `python3` 和 `gh` CLI,并仅使用 作业 token 与 GitHub API 通信。 - 在公共 repo 上,code scanning 是免费的;在私有 repo 上,SARIF 上传需要 GitHub Advanced Security,如果没有它会优雅地跳过(门控和评论仍然会运行)。 ## 输入与输出 有关完整参考,请参阅 [docs/GITHUB-ACTION.md](docs/GITHUB-ACTION.md) 和 [examples/plimsoll-review.yml](examples/plimsoll-review.yml)。 ## 许可证与来源 Apache-2.0。此 repo 包含开放审查引擎及该 action。更广泛的 Plimsoll 产品位于 其他地方;审查原语是开放的部分。
标签:AI安全, Chat Copilot, Docker镜像, GitHub Action, MCP, 能力差异分析, 逆向工具