GitHub Actions default GITHUB_TOKEN permissions cause a 403
By Kaveh Alemi·Latchkey
Your repo or org sets the default GITHUB_TOKEN to read-only, so any write the workflow attempts returns 403. This is a settings issue, not transient.
What this error means
Write operations fail with 403 across the workflow because the default token permissions are read-only and the workflow grants nothing extra.
github-actions
RequestError [HttpError]: Resource not accessible by integration
status: 403
# default workflow permissions are set to read-only
Common causes
Org or repo default is read-only
The "Workflow permissions" setting defaults the token to read, blocking writes.
No per-workflow permissions override
Without an explicit permissions block granting write, the read-only default stands.
How to fix it
Grant write where needed, keep defaults strict
- Keep the org default read-only for safety.
- Add an explicit permissions block granting only the write scopes a workflow needs.
.github/workflows/ci.yml
permissions:
contents: write
pull-requests: write
How to prevent it
- Set the org-wide default to read-only and grant writes per workflow.
- Audit workflows to ensure each declares the scopes it relies on.
Frequently asked questions
What causes "default token permissions 403"?
The "Workflow permissions" setting defaults the token to read, blocking writes.
How do I fix default token permissions 403?
Grant write where needed, keep defaults strict
Related guides
References