Skip to content

source-control:babysit-prs: claude[bot] review job commits a fix locally but cannot push it (GitHub App write denied) #454

Description

@kyle-sexton

Lane: babysit-prs (safe-tier fix-round worker)

Triggering example: #377, claude[bot] review run 29679358520 against head 473e4c3. The bot correctly diagnosed a real bug in plugins/autonomy/skills/setup/scripts/check-security-binding.mjs (IPv6 ::/96 IPv4-compatible-literal bypass), drafted a fix, and made a local commit 833246e — but that commit never reached origin: "write access to the branch was denied by the GitHub App". The bot left a checklist comment describing the intended fix and fixture plan, but the commit itself is orphaned and unreachable by anyone reading the PR from GitHub's UI.

What happened: A structurally correct, verified fix sat uncommitted-to-remote because the reviewing GitHub App lacks push permission on this branch. The babysit worker had to independently rediscover, re-verify, and re-implement the same fix from scratch (it did, successfully, in a later commit) — but a differently-shaped finding could easily have been missed if the orphaned local commit was the only place the fix's specifics were captured, since the checklist comment described it in prose, not a diff.

What should happen: either the reviewing bot's GitHub App is granted push access to head branches it's asked to review (so a self-diagnosed, self-fixed finding lands automatically), or — if push access is intentionally withheld — the bot's own comment should say explicitly "fix drafted locally but could not be pushed; treat this comment as the complete diff, not a pointer to a commit" so a human or a later worker doesn't have to discover the discrepancy by digging through git cat-file/git log to notice the named commit SHA doesn't actually exist on the remote.

Category: operational

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-humanHuman-in-the-loop required; autonomous sessions must not resolve items carrying this.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions