Repository navigation
Triage WPT updates with the wpt-update skill in CI - #7731
Conversation
|
Since last review: 1 resolved, 0 still open, 1 new. The workflow now isolates runner-generated files before creating the update PR. Other findings
Not re-run: tests, docs (no author changes in their files since the last review) Reviewed commit: 5c443f6e · github run |
logan-gatlin
left a comment
There was a problem hiding this comment.
This has been a good exercise in learning about how the security model needs to work for AI automation. Clearly the AI reviewer needs more guidance, and frankly humans will need help as well. If I hadn't just finished working on an AI automation I would have had a lot of difficulty understanding the threat model here. I don't have any more blocking concerns
f5b0778 to
4444b76
Compare
|
🛑 Significant concerns — 2 BLOCKING security items. The triage agent can write to runner.temp, which holds GITHUB_ENV and GITHUB_PATH, so code it plants runs unsandboxed in later steps. It can also plant a report.md symlink that leaks the AI Gateway token into the public PR body. Both break the isolation this PR depends on. Findings: 2 blocking · 1 warning · 1 question · 1 info · 1 suggestion The decision is advisory: this comment never approves, blocks or requests changes on the pull request. 🔧 Fix with your agentPaste the following into your coding agent to investigate and fix these issues. 🔒 Security: 🛑 3 issuesThe isolation around the triage agent can be bypassed: the paths it can write are later read and run without the sandbox, and the warm Bazel server may run its actions outside the sandbox too. Recommendation: 🔴 Serious Concerns
View full review1. The agent can write to
2. A
3. The Bazel server started before the agent runs is outside the sandbox (
Checked and found fine
The PR's own description says the agent's commands cannot read the gateway token. Items 1 and 2 show two ways they can. 📋 Code Quality: ❓ 2 questionsThe bump and patch-verification logic look sound. Two minor points remain: confirm the model name, and pin the CLI version. The isolation findings were moved to the security section. Recommendation: 💬 Optional Nits
View full review
The Bazel server, post-agent step and 📝 Documentation: 💬 1 commentThe skill doesn't mention the updater's new VERSION and --latest options. Recommendation: 💬 Optional Nits
View full review
✅ All other checks passed📖 AGENTS.md: ✅ LGTMNo AGENTS.md concerns. ⚡ Performance: ✅ LGTMNo performance concerns. Reviewed commit: |
The WPT updater now has an agent triage each bump with the wpt-update skill and opens a pull request with the result. The agent reads untrusted upstream content, so its job holds no write token, DevProd PAT, or remote cache key. Its commands run in Claude Code's sandbox, which cannot read the AI Gateway token and which Bazel is configured to trust for TLS. The agent's commits are exported as patches. A separate job recreates the bump from the recorded WPT version, applies the patches on top, and rejects any that touch paths outside the WPT update's scope. If the triage fails, the pull request contains only the bump. Automerge applies only when the triage made no changes. update_wpt.py can now pin a given version or print the latest. The skill now treats patches/wpt as in scope for every update. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
4444b76 to
5c443f6
Compare
The WPT updater now has an agent triage each bump with the
wpt-update skill and opens a pull request with the result.
The agent reads untrusted upstream content, so its job holds no
write token, DevProd PAT, or remote cache key. Its commands run
in Claude Code's sandbox, which cannot read the AI Gateway token
and which Bazel is configured to trust for TLS.
The agent's commits are exported as patches. A separate job
recreates the bump from the recorded WPT version, applies the
patches on top, and rejects any that touch paths outside the WPT
update's scope. If the triage fails, the pull request contains
only the bump. Automerge applies only when the triage made no
changes.
update_wpt.py can now pin a given version or print the latest.
The skill now treats patches/wpt as in scope for every update.