Skip to content

feat: update-pr safe output #78

@jamesadevine

Description

@jamesadevine

Summary

Add an update-pr safe output that allows agents to update pull request metadata — add/remove reviewers, update labels, set auto-complete, and vote (approve/reject/wait).

ADO API

  • PATCH /_apis/git/repositories/{repo}/pullRequests/{id}?api-version=7.1 — Update PR properties
  • PUT /_apis/git/repositories/{repo}/pullRequests/{id}/reviewers/{reviewerId}?api-version=7.1 — Add reviewers / cast votes

Agent Parameters

  • pull-request-id (required) — PR ID to update
  • repository (optional) — Repository alias (default: self)
  • operation (required) — One of:
    • add-reviewers — Add reviewers (requires reviewers list)
    • add-labels — Add labels (requires labels list)
    • set-auto-complete — Enable auto-complete
    • vote — Cast a vote (requires vote value: approve, approve-with-suggestions, wait-for-author, reject, reset)
    • update-description — Update PR description (requires description)

Front Matter Configuration (safe-outputs.update-pr)

  • allowed-operations — Restrict which operations are permitted (e.g., only add-reviewers, not vote)
  • allowed-repositories — Restrict which repos the agent can update PRs in
  • allowed-votes — Restrict which vote types are allowed (e.g., only approve-with-suggestions, never approve)

Use Cases

  • Auto-approval agents (with appropriate vote restrictions)
  • Reviewer assignment agents
  • PR triage agents adding labels/updating descriptions
  • Merge-readiness agents setting auto-complete when checks pass

Security Considerations

  • Operation allow-list is critical — prevents agents from self-approving without review
  • Vote restrictions prevent full approve without human oversight
  • Repository allow-list
  • Standard text sanitization on descriptions and labels

Priority

Tier 2 — Solid addition. Medium complexity (multiple sub-operations).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions