sec(auth): OAuth-minted PATs default to least privilege - Standard tier + read:organization #297
No reviewers
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.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea!297
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-270-decision-confirm-full-scope-all-for-oauth-minted-p"
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?
Summary
Implements the owner decision on #270 (2026-07-20): narrow, no opt-out flag.
oauthMintScopeschanges from ["all"] to ["write:repository", "write:issue", "write:notification", "read:user", "read:organization"] - the documented Standard tier plus org-label name resolution. write:X implies read:X in the Forgejo/Gitea scope model. Deliberately excluded: write:organization, package, admin, misc, activitypub - the existing 403 scope-hint machinery teaches those on demand, and broader needs use a manually-minted forge-UI token with the paste-based login.Full gate green (all cheap checks + test-race, staticcheck, govulncheck, gosec, modernize, docs-verify, cross-compile, mcp-conformance: PASS).
Closes #270