import { Tabs, Callout, Steps } from "nextra/components"; # GitHub The GitHub auth provider enables tools and agents to call [GitHub APIs](https://docs.github.com/en/rest/overview/resources-in-the-rest-api) on behalf of a user. Want to quickly get started with GitHub in your agent or AI app? The pre-built [Arcade GitHub MCP Server](/resources/integrations/development/github) is what you want! ## What's documented here This page describes how to use and configure GitHub auth with Arcade. This auth provider is used by: - The [Arcade GitHub MCP Server](/resources/integrations/development/github), which provides pre-built tools for interacting with GitHub - Your [app code](#using-github-auth-in-app-code) that needs to call the GitHub API - Or, your [custom tools](#using-github-auth-in-custom-tools) that need to call the GitHub API --- ## Why Arcade Uses GitHub Apps (Not OAuth Apps) ### Arcade's Decision Arcade's security team selected **GitHub Apps** over OAuth Apps for the GitHub toolkit based on three critical factors: 1. **🎯 GitHub's Recommendation**: OAuth Apps are soft-deprecated. GitHub actively recommends Apps for new integrations and invests in their development. 2. **🔐 Fine-Grained Security**: GitHub Apps support granular permissions (e.g., "Read pull requests"), while OAuth Apps only offer coarse scopes (e.g., `repo` = full repository access). 3. **🏢 Enterprise Control**: Admins can approve exact permissions and see all app installations. OAuth Apps bypass organizational oversight. **Important**: When creating your GitHub integration with Arcade, you must use a **GitHub App** (not an OAuth App). GitHub Apps provide the security and permission model required for production use. ### Quick Comparison | Aspect | 🏆 GitHub Apps (Required) | OAuth Apps (Not Supported) | | ---------------- | ------------------------------------ | ----------------------------------------- | | **Permissions** | Fine-grained (e.g., "Read contents") | Broad scopes (e.g., `repo` = full access) | | **Installation** | Per repository/org (admin approval) | Per user (no approval) | | **Access** | Only installed repositories | All user repositories | | **Tokens** | Scoped, short-lived | Broad, long-lived | | **Identity** | Acts as app | Acts as user | | **Security** | ⭐⭐⭐⭐⭐ Highest | ⭐⭐⭐ Good | | **Best For** | Production, CI/CD, Enterprise | Personal, Prototypes | **GitHub Enterprise Server (GHES) Limitation** GitHub Apps created on github.com **cannot** be installed on GitHub Enterprise Server instances, and vice versa. Each GHES instance requires its own separate GitHub App registration. - ✅ Apps on github.com work for all github.com users - ❌ Apps on github.com **DO NOT** work for GHES instances - ✅ Each GHES instance must register its own GitHub App - ✅ You can use the same manifest/configuration for multiple instances [Learn more about GHES GitHub Apps](https://docs.github.com/en/apps/sharing-github-apps/making-your-github-app-available-for-github-enterprise-server) ### Why Enterprises Choose GitHub Apps
🔐 Permission Model Least-privilege access. Grant only exact permissions needed (e.g., "Read contents" vs full repo access). Minimizes blast radius and supports compliance (SOC 2, ISO 27001).
🏢 Installation Centralized control. IT/security teams see all app installations, enforce policies, prevent shadow IT. Admin approval ensures integrations are vetted and documented.
🎯 Access Scope Reduced attack surface. Apps only access explicitly installed repositories. Critical for organizations with repositories at different sensitivity levels.
🔑 Token Type Better security posture. Tokens are scoped and revocable instantly. Long-lived OAuth tokens remain valid for months if compromised.
👤 Identity Clear accountability. Actions attributed to app, not users. Essential for compliance audits and security investigations.
📊 Audit Trail Clear audit logs. Easy to identify automated vs human actions. Essential for SOC 2, HIPAA compliance.
--- ## Creating a GitHub App