# GitHub Pages "Get Pages site failed" (Pages not enabled)

> Fix the github-pages error "Get Pages site failed" - Pages is not enabled or not set to GitHub Actions as the build source.

Source: https://latchkey.dev/learn/github-actions/github-actions-pages-get-pages-site-failed-not-enabled  
Updated: 2026-06-26

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.

## 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.

```.github/workflows/ci.yml
- 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 }}
```

> If `fork PR` prints `true`, stop looking at `permissions:`. A fork pull request gets a read-only token by design, and no workflow-level grant can raise it.

## Grant 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.

```.github/workflows/ci.yml
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 runs
```

> Set `permissions` at the job level rather than the workflow level where you can. A workflow-level grant applies to every job, including ones that only run tests.

## FAQ

### What causes GitHub Pages "Get Pages site failed" (Pages not enabled)?

There are 2 common causes: pages disabled for the repository and source not set to github actions. No Pages site exists yet, so the API returns 404 when the action looks it up.

### How do I fix GitHub Pages "Get Pages site failed" (Pages not enabled)?

Enable Pages with the Actions source. In Settings > Pages, set Build and deployment Source to GitHub Actions.

### What does GitHub Pages "Get Pages site failed" (Pages not enabled) actually mean?

The actions/configure-pages step fails reporting it could not get the Pages site, often with a 404 from the Pages API.

### How do I stop GitHub Pages "Get Pages site failed" (Pages not enabled) happening again?

Set the Pages source to GitHub Actions before running the deploy workflow. The prevention section lists 2 changes that keep it from recurring.

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
