api passthrough bypasses the forge write guard #784
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#670 epic: one guard enforces the recorded limits on every surface
sixfold-space/madtea
Reference
sixfold-space/madtea#784
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The forge write guard runs on the two first-class send paths only. The raw
apipassthrough sends its writes through a different path that never calls the guard, so a write throughmadtea apiormadt_api_callreaches the forge with no check.Reachable today:
DELETE /repos/<owner>/<repo>/issues/42hard-deletes an issue, an omitted and unrecoverable destroy.PUT /repos/<owner>/<repo>/contents/x {"branch":"main"}writes the default branch.POST /repos/<other>/<repo>/contents {...}writes a repo outside the session scope.Until the passthrough calls the guard, the endpoint-effect matcher is dead code in production and the "every surface" promise of the write-guard design is not met.
Fix:
Acceptance:
Part of the write-guard work (#670). Found while enabling the guard (#660).