Repository navigation
Description
Found by the security review of #7393. Both predate that PR (the PR rewrites these bodies but neither added nor removed this).
-
Untrusted-content framing absent (P4).
plugins/bugs/skills/scan/SKILL.md(rung 1, hunters, Step 6 dedupe) andplugins/bugs/skills/write/SKILL.md(survey) read repository files and tracker item text, but no bugs skill or context file carries the inline framingdocs/conventions/untrusted-content/README.mdrequires (grep -rln 'never instructions to you' plugins/bugsis empty). A planted imperative in scanned code or a tracker item could steer hunters or gates (suppress or skew findings). Filing stays gated by--trackandfiling_posture. Fix: add the convention's inline form to the scan Step 2 and Step 4 dispatch contracts (context/lenses.md,context/verification-gate.md) and the write survey step. -
Lane cursor and dedupe trust any author (P4). Rung 1 picks the next lane from the newest tracker item containing
Filed by /bugs:scan (lane: <name>)with no author check, so on a public repo anyone can steer the rotation; Step 6 dedupe can attach a real finding as a comment on an outsider's issue.plugins/work-items/reference/item-content-trust.mdrequires a provider-enforced write surface. Fix: accept the provenance line and dedupe matches only from the scanning identity or a repo writer; otherwise fall through to rung 2 / file a new item.
Also noted, not graded: scan/context/verification-gate.md lets a gate run the scanned repo's tests to label a finding reproduced, which executes scanned code on an unattended run over an untrusted checkout.
Done when
-
plugins/bugs/skills/scan/context/lenses.md,plugins/bugs/skills/scan/context/verification-gate.md,plugins/bugs/skills/scan/SKILL.md(rung 1 lane cursor and Step 6 dedupe) andplugins/bugs/skills/write/SKILL.md(survey step) each carry the inline form fromdocs/conventions/untrusted-content/README.md, with both conformance fragments unbroken:never instructions to youanduntrusted-content/README.md` "The framing contract". - Rung 1's lane cursor and Step 6 dedupe accept a
Filed by /bugs:scan (lane: <name>)match only from the scanning identity or a repository writer, and otherwise fall through to rung 2 or file a new item. - The changelog fragment is valid (the lane's fragment check passes), and CI's
check-skillsjob passes on the PR (a PR check; this run does not run it).
Out of scope
- The verification gate running the scanned repository's tests (the "Also noted, not graded" item): tracked in bugs: verification gate runs the scanned repository's tests on an untrusted checkout (hardening deferred) #7787.
Activity
github-actions commentedon Oct 13, 2026
Thanks for the report. Automated triage handed this issue to a maintainer.
Automated triage. A maintainer reviews it.
kyle-sexton commentedon Oct 17, 2026
Admitted in owner wave 1.
kyle-sexton commentedon Oct 17, 2026