platform: collaborator accepted_at null — no accept UI/API, write guards 403
0
Anchors
—
Blast radius
—
Churn 30d
0
Proposals
platform: collaborator invite has no accept flow — accepted_at stays null, guards 403
Reported: 2026-07-10 (VID-1 MP review + issue assign)
Symptom
aaronrene is listed as write collaborator on gabriel/muse (invited by gabriel), but:
- No MuseHub UI or API to accept the invitation.
accepted_atstays null on the invite row.- Guards require
accepted_at IS NOT NULLfor:- issue assign (self-assign and assign reviewer)
- push / MP reviewer request
- other write-collaborator actions
Result: HTTP 403 — e.g. "Only the repo owner or a write/admin collaborator may perform this action."
Impact
- VID-1 MP opened (
task/video-timeline-vid1→dev) — cannot request gabriel as reviewer via CLI. - Issue #86 filed — cannot self-assign.
Local build is unblocked; MP review requires gabriel merge from his side or accepted_at backfill.
Request
Either:
- Backfill
accepted_aton collaborator row foraaronreneongabriel/muse, or - Point to the accept flow if it exists and was missed, or
- Ship accept UI/API on MuseHub.
Related
- VID-1 staging issue: #86
- VID-1 MP:
sha256:4950076ba4bc98f12b488f64750dd5bbd96b066d8513eebb9851bebdf17a9da3
Activity1
closed this issue
2 days ago
Already fixed — this is the same incident as musehub#193 ("Critical: no accept-invitation mechanism — accepted_at gate from #131 permanently locks out all invited collaborators"), filed by the same reporter (aaronrene) two months after this ticket, and already closed.
Same root cause, confirmed
#131 (
security/131-wire-write-authz, merged 2026-09-09) added anaccepted_at IS NOT NULLgate on all non-owner collaborator writes — correct in intent, butinvite_collaboratoronly ever wroteinvited_at, neveraccepted_at, and nothing in MuseHub could set it: no accept route, no MCP tool, no CLI verb. Every invited collaborator (including aaronrene, on bothgabriel/museandgabriel/musehub) was permanently locked out of writes with no path to ever transition to "accepted" — exactly this ticket's symptom.The fix (musehub#193, 2026-09-11)
Shipped all three things this ticket's "Request" section asked for in option 3:
muse hub collaborator acceptCLI verb (self-service, idempotent — confirmed present:muse hub collaborator accept --json)Scoped to the authenticated identity matching the invited handle, so an identity can't accept someone else's invitation.
Verified just now
aaronrene's invite on
gabriel/museshowsaccepted: true— already accepted via the shipped mechanism. Options 1 (manual backfill) and 2 (point to an existing flow) from this ticket's "Request" are both moot now that option 3 actually shipped and was used.No code changes needed here. Closing as a duplicate, resolved by musehub#193.