GitHub Actions "Resource not accessible" Setting a Commit Status
A step that sets a commit status (a custom context shown on the commit and PR) fails with a 403 because the workflow token lacks statuses: write.
What this error means
A call to create a commit status returns "Resource not accessible by integration", so the custom status context never appears on the commit or pull request.
Error: Resource not accessible by integration
status: 403
POST /repos/org/repo/statuses/{sha}Common causes
Missing statuses: write permission
Creating commit statuses requires statuses: write. It is not granted under restricted default permissions, so the call is denied.
Confusing statuses with checks
The Statuses API and the Checks API are different. Granting checks: write does not enable the statuses endpoint, and vice versa.
How to fix it
Grant statuses: write
permissions:
contents: read
statuses: write
jobs:
report:
runs-on: ubuntu-latestGrant the right scope for the API you use
- Use statuses: write for the commit Statuses API.
- Use checks: write for the Checks API (check runs and annotations).
- Scope the permission to the job that writes the status.
How to prevent it
- Match the permission scope to the exact API the step calls.
- Grant statuses: write only on the reporting job.
- Keep default workflow permissions read-only and opt in per job.