The endpoint
PUT /repos/:owner/:repo/contents/*
does not require write permissions and allows access with read permission only via repoAssignment().
After passing the permission check, PutContents() invokes UpdateRepoFile(), which results in:
git pushAs a result, a token with read-only permission can be used to modify repository contents.
PUT /contents request to update an arbitrary file{
"cwe_ids": [
"CWE-862",
"CWE-863"
],
"github_reviewed": true,
"github_reviewed_at": "2026-02-06T18:10:05Z",
"nvd_published_at": "2026-02-06T18:15:56Z",
"severity": "MODERATE"
}