GitHub Pages "Get Pages site failed" (Pages not enabled)
The configure-pages action queries the Pages site for the repository. If Pages is disabled, or its source is not set to GitHub Actions, the lookup fails before any artifact is built. This is a settings issue, not a flake.
What this error means
The actions/configure-pages step fails reporting it could not get the Pages site, often with a 404 from the Pages API.
Error: Get Pages site failed. Please verify that the repository has Pages enabled
and configured to build using GitHub Actions. (HttpError: Not Found)Diagnose it: what token do you actually have?
Permission failures in Actions are almost never about your repository settings alone. Three things combine: the default GITHUB_TOKEN permission set for the repo or organization, the permissions: block in the workflow, and whether the event is a fork pull request, which downgrades the token to read-only regardless of everything else.
- name: Show the token scopes actually granted
run: |
curl -sI -H "Authorization: Bearer $GITHUB_TOKEN" \
https://api.github.com/ | grep -i "^x-oauth-scopes\|^x-accepted"
echo "event: ${{ github.event_name }}"
echo "fork PR: ${{ github.event.pull_request.head.repo.fork }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}Common causes
Pages disabled for the repository
No Pages site exists yet, so the API returns 404 when the action looks it up.
Source not set to GitHub Actions
Pages is set to deploy from a branch instead of from GitHub Actions, so the Actions build path is not configured.
How to fix it
Enable Pages with the Actions source
- In Settings > Pages, set Build and deployment Source to GitHub Actions.
- Or let configure-pages enable it by setting enablement: true (requires pages: write).
- Re-run the workflow once Pages is enabled.
- uses: actions/configure-pages@v5
with:
enablement: trueGrant the narrowest permission that works
Declaring a permissions: block switches the job from the repository default to exactly what you list, so an incomplete block is a common cause of a new failure right after someone tightened security. List every scope the job needs, not just the one that failed.
permissions:
contents: read # checkout
packages: write # push to GHCR
id-token: write # OIDC to a cloud provider
pull-requests: write # comment on or label a PR
checks: write # publish check runsHow to prevent it
- Set the Pages source to GitHub Actions before running the deploy workflow.
- Grant pages: write and id-token: write on the deploy job.