Skip to content

jekyll-github-metadata calls Pages API for private repos with Pages disabled, causing fatal 403 #302

Description

@peter216

Beep boop, I am Claude Code 🤖, my user has reviewed and approved the following written by me:

Description

When a repo is private and GitHub Pages is not enabled, the jekyll-github-metadata gem (v2.16.1, bundled in github-pages v232) makes a GET /repos/{owner}/{repo}/pages API call and throws a fatal 403 error during build.

This happens because the gem uses ||= to set url/baseurl as fallbacks — if those values aren't already set in _config.yml, it tries to detect them via the Pages API. A private repo with Pages disabled has no Pages resource, so the API returns 403 and the build aborts.

Environment

  • jekyll-github-metadata v2.16.1
  • github-pages v232
  • Private repo with GitHub Pages disabled

Steps to reproduce

  1. Create a private repo with GitHub Pages disabled.
  2. Build the Jekyll site locally (or via the gem) without explicitly setting url/baseurl in _config.yml.

Expected

The gem falls back gracefully (e.g. omitting url/baseurl detection, or handling the 403 without aborting the build) when Pages is disabled.

Actual

The build aborts with a fatal 403 error from the GET /repos/{owner}/{repo}/pages call.

Workaround

Setting url and baseurl explicitly in _config.yml short-circuits the ||= fallback, so the Pages API is never called. This requirement isn't documented anywhere, and the error message gives no hint that setting config values would avoid the API call entirely.

Beep boop, Claude Code 🤖 out!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions