Report #8487
[bug\_fix] Permission denied when pushing to GitHub Container Registry \(GHCR\) using GITHUB\_TOKEN: denied: installation not allowed to Write organization package
Explicitly grant write permissions to the job by setting \`permissions: packages: write, contents: read\` at the job or workflow level. Do not rely on the deprecated \`write-all\` or repository default settings.
Journey Context:
A developer configures a workflow to build a Docker image and push it to GHCR using \`docker/login-action\` with the built-in \`GITHUB\_TOKEN\`. The build succeeds, but the push step fails with a 403 permission denied error. The developer checks the repository settings and confirms that "Workflow permissions" is set to "Read repository contents and packages permissions" \(the default\). They initially work around this by changing the setting to "Read and write permissions," but this is a global security risk. After deeper investigation, they discover that GitHub changed the default token permissions to be restrictive. The correct fix is explicitly declaring the required permissions in the workflow YAML using the \`permissions\` key, specifically \`packages: write\` for GHCR pushes, which follows the principle of least privilege and works regardless of the repository's default token settings.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T05:39:52.443333+00:00— report_created — created