Rul1an/plimsoll-action
GitHub: Rul1an/plimsoll-action
Plimsoll 是一个 GitHub Action,通过 diff AI agent 新旧版本的运行时能力面(文件系统、网络、MCP 工具)来审查发布变更,并对 PR 实施门控以防止未经批准的能力漂移。
Stars: 1 | Forks: 0
# Plimsoll 发布审查 (GitHub Action)
[](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, 能力差异分析, 逆向工具