Skip to content

Allow public_repo scope for public repository contribution tools #3137

Description

@paulcakeface

Describe the feature or problem you’d like to solve

Several public-repository write tools currently declare repo as their minimum OAuth scope. That prevents a token intentionally limited to public_repo from using those tools, even though GitHub's OAuth scope documentation defines public_repo as read/write access to public repositories.

A practical example is a public-only open-source contribution workflow. A token restricted to public_repo should be able to:

  • fork a public repository
  • create a branch in a public fork
  • push files to that branch
  • open a pull request
  • create/update public issues
  • comment on public issues or pull requests

The GitHub API already permits these public-repository operations with public_repo; requiring repo at the MCP metadata/filter layer asks for private-repository access unnecessarily.

Proposed solution

Use scopes.PublicRepo as the minimum declared scope for the existing public-capable contribution tools:

  • fork_repository
  • create_branch
  • push_files
  • create_pull_request
  • issue_write
  • add_issue_comment

NewTool already expands PublicRepo so repo remains an accepted parent scope. Existing private-repository workflows using repo therefore remain compatible, while public-only OAuth deployments can keep the narrower grant.

This would only change scope metadata/filtering; the GitHub API remains the authorization boundary and continues to reject operations the token or user cannot perform.

Example prompts or workflows (for tools/toolsets only)

  • "Fork this public repository, make the documentation fix on a branch, and open a pull request."
  • "Open an issue on this public repository with the reproduction steps."
  • "Add this clarification as a comment on the public issue."

Additional context

I have a focused patch with regression coverage ready and can submit it against current main.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions