Skip to content
Agentic Control Plane

Connect ChatGPT to GitHub

Your developers want to manage repos, issues, and PRs from ChatGPT. “Create an issue for the login bug.” “Show me open PRs on the api repo.” “List my assigned issues.”

Without governance, ChatGPT uses a shared GitHub token — every developer has the same access, every action is attributed to “the bot,” and there’s no audit trail of who did what.

ACP sits between ChatGPT and GitHub, verifying each developer’s identity on every tool call. Each person authenticates with their own GitHub account through OAuth. Permissions are scoped per user. Every action is logged.


Setup

1. Create an ACP workspace

Sign in to ACP Cloud and create a workspace. Your MCP endpoint:

https://api.makeagents.run/{your-slug}

2. Connect your identity provider

Go to Settings → Identity Providers. Configure your IdP (Auth0, Okta, Google, etc.) with your issuer URL and audience. ACP auto-discovers the JWKS endpoint.

3. Enable the GitHub connector

Go to Connectors → GitHub and click Connect. ACP walks you through creating a GitHub OAuth App (or uses the platform’s shared app). Each developer authorizes their own GitHub account — tokens are stored encrypted per-user.

Available tools after connecting:

Tool Description
github.listRepos List repositories the user has access to
github.getRepo Get repository details
github.listIssues List issues for a repository
github.createIssue Create a new issue
github.listPullRequests List pull requests
github.createPullRequest Create a pull request
github.getFileContents Read file contents from a repo

4. Scope permissions

Configure which scopes are required for write operations:

{
  "github.createIssue": ["github:write"],
  "github.createPullRequest": ["github:write"],
  "github.listRepos": ["github:read"],
  "github.listIssues": ["github:read"]
}

Developers with github:read can browse repos and issues. Only those with github:write can create issues or PRs.

5. Configure ChatGPT

ChatGPT supports MCP servers through its settings. Add your ACP endpoint URL. When ChatGPT needs to use GitHub tools, it initiates the OAuth flow — your developers sign in with their company SSO, and ACP handles the token exchange.

ACP serves standard OAuth discovery endpoints that ChatGPT expects:

GET /.well-known/oauth-protected-resource
GET /.well-known/oauth-authorization-server

ChatGPT reads these to discover the authorization and token endpoints, then handles the PKCE flow automatically.


What happens on every tool call

When a developer asks ChatGPT to “create an issue for the memory leak in the auth service”:

  1. ChatGPT calls github.createIssue on your ACP endpoint
  2. ACP verifies the developer’s JWT (RS256, JWKS-cached)
  3. ACP checks scopes: does this user have github:write?
  4. ACP scans the input for PII (detects and redacts if configured)
  5. Immutable platform rules check for SSRF and sensitive data patterns
  6. ACP creates the issue using the developer’s own GitHub OAuth token
  7. ACP logs: who created it, which repo, latency, success/failure
  8. Result flows back to ChatGPT

The developer’s GitHub token is used — not a shared bot token. The issue shows up as created by them, not by a generic service account.


What you get

  • Per-developer identity — every GitHub action attributed to the person, not a bot
  • Scoped access — read-only devs can’t create issues or PRs
  • Audit trail — every action logged with full identity, exportable to your SIEM
  • PII protection — sensitive data detected before reaching GitHub
  • Rate limits — prevent any single developer from making excessive API calls

Back to guides · Set up Auth0 → · SOC 2 audit trails →