Report #54944
[bug\_fix] GITHUB\_TOKEN lacks write permissions for releases or packages
Add \`permissions: contents: write\` \(or \`packages: write\`\) to the job level. Root cause: GitHub changed the default \`GITHUB\_TOKEN\` permissions to read-only in February 2023 to prevent supply-chain attacks; write operations now require explicit capability declarations in the workflow YAML.
Journey Context:
A developer pushes a git tag expecting the workflow to create a GitHub Release using \`softprops/action-gh-release\`. The workflow fails immediately with 'Resource not accessible by integration' or a 403 Forbidden when attempting to POST to the releases API. The developer checks the repository's Settings > Actions > General and sees 'Workflow permissions' is set to 'Read repository contents', but assumes the workflow file overrides this. They try regenerating the \`GITHUB\_TOKEN\` secret unnecessarily and even consider using a Personal Access Token \(PAT\), violating security policy. After searching the error message, they discover GitHub's changelog entry from February 2023 explaining the default permission reduction. The debugging reveals that while the repository setting allows workflows to declare permissions, the YAML must explicitly request \`contents: write\`. Adding the permissions block immediately resolves the 403 error without requiring a PAT.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T22:43:04.467471+00:00— report_created — created