Skip to content

pr-management-code-review: AI-attribution footer claims "confirmed by a Magpie maintainer" without verifying the runner is one #923

Description

@choo121600

What's broken

The pr-management-code-review skill appends an AI-attribution footer to every review it posts, asserting the submission was "confirmed by a Magpie maintainer" and that "a Magpie maintainer — a real person — will take the next look at the PR." The skill never verifies that the person running it actually holds a maintainer role, so this claim is emitted verbatim even when the runner is an ordinary contributor with no write/maintainer role on the target repo. The result is a public review body that makes an inaccurate factual claim about who vouched for it.

Which layer

  • skills/pr-management-code-review/posting.md§ AI-attribution footer (all three variants — APPROVE / REQUEST_CHANGES / COMMENT — hard-code the "maintainer" wording).
  • skills/pr-management-code-review/SKILL.mdGolden rule 5, which mandates the footer verbatim ("do not paraphrase, do not omit") and describes it as reassuring the contributor that "an maintainer — a real person — has confirmed the submission."
  • Related gate: skills/pr-management-code-review/prerequisites.md§ 1 (the collaborator/permission pre-flight).

How to reproduce

  1. As a GitHub user who is not a maintainer/committer on the target repo (a contributor only — no admin/maintain/write), run /magpie-pr-management-code-review pr:<N> against a public PR.
  2. Accept a disposition and confirm posting. A COMMENT review succeeds from any account — GitHub lets any user submit a PR review on a public repo regardless of write access.
  3. The posted review body ends with:

    This review was drafted by an AI-assisted tool and confirmed by a Magpie maintainer. … a Magpie maintainer — a real person — will take the next look at the PR.

Observed live on apache/magpie#902 (public), posted from a non-committer contributor account. The PR's reviewDecision stayed REVIEW_REQUIRED afterward — confirming the account is not a maintainer whose review satisfies the branch-protection gate, even though the footer told the contributor a "maintainer" had confirmed.

Expected vs actual

Expected — the attribution is accurate about who confirmed the review. Either:

  • (a) the skill verifies the runner holds a maintainer/write role before it emits "maintainer" wording, or
  • (b) the footer wording is role-neutral — e.g. "confirmed by the reviewer running Magpie" / "confirmed by a project maintainer or contributor" — so it never asserts a role the runner may not hold.

Actual — the footer asserts "maintainer" unconditionally. SKILL.md Golden rule 5 forbids paraphrasing or omitting it. And prerequisites.md § 1's permission probe (admin/maintain/write) both (1) conflates "write collaborator" with project "maintainer", and (2) per its own text only "warns and offers dry-run" rather than blocking — so a non-maintainer can post a review that publicly, and inaccurately, claims maintainer confirmation.

Surface area (optional)

  • All three disposition templates inherit the same footer, so every posted review is affected.
  • Adopters who install the pr-management-* family inherit this footer wording in their own repos, so the inaccuracy propagates to adopter projects.
  • Likely fix touchpoints: derive the footer text from a verified role check in prerequisites.md, and relax Golden rule 5's verbatim constraint enough to allow the role-accurate variant while keeping the "AI-drafted, human-confirmed, may contain mistakes" substance intact.

Environment (optional)

  • Harness: Claude Code (Opus 4.8), skill pr-management-code-review.
  • Framework version: self-adopted framework checkout (.apache-magpie.lockmethod: local, source: skills/); no snapshot drift.
  • Observed target: apache/magpie (public), PR feat(codex): first-class Codex CLI skill runtime #902.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions