Overview
Forge integrates deeply with GitHub for repository management, authentication, and collaboration. GitHub OAuth enables secure, seamless access to your repositories.Good News: Forge includes default OAuth credentials for development. Custom configuration is optional!
Quick Start (Default Credentials)
For most users, no configuration is needed:Custom GitHub OAuth App
Want to use your own OAuth app? Here’s how to set it up.Why Use Custom OAuth?
- Production deployments on custom domains
- Enterprise environments with specific security requirements
- Team collaboration with your organization’s branding
- Higher rate limits specific to your app
Creating Your OAuth App
Go to GitHub Settings
Navigate to GitHub Developer Settings→ OAuth Apps → New OAuth App
Configuration
Environment Variables
Set your custom credentials via environment variables:.env file:
.env
Start Forge
Multiple Environments
Development
.env.development
Staging
.env.staging
Production
.env.production
Permissions & Scopes
Required Scopes
Forge requests these GitHub OAuth scopes:| Scope | Purpose | Required |
|---|---|---|
repo | Read/write repository access | ✅ Yes |
user:email | Access user email | ✅ Yes |
read:user | Read user profile | ✅ Yes |
workflow | Manage GitHub Actions | ⚠️ Optional |
Why Each Scope?
repo - Repository Access
repo - Repository Access
What it does: Full control of private repositoriesWhy needed:
- Clone repositories for tasks
- Create and manage git worktrees
- Commit changes from AI agents
- Push branches and create PRs
This is the core permission Forge needs to function
user:email - Email Access
user:email - Email Access
What it does: Access user email addressesWhy needed:
- Associate commits with correct author
- Send notifications (if enabled)
- User identification in audit logs
read:user - Profile Access
read:user - Profile Access
What it does: Read user profile informationWhy needed:
- Display username and avatar in UI
- Team collaboration features
- Activity tracking
workflow - GitHub Actions (Optional)
workflow - GitHub Actions (Optional)
What it does: Access GitHub Actions workflowsWhy needed:
- Trigger CI/CD on task completion
- Monitor workflow status
- Auto-deployment features
Testing Your OAuth Setup
Verify Configuration
Test Authentication Flow
Open Forge UI
Navigate to http://localhost:3000
Troubleshooting
Callback URL mismatch
Callback URL mismatch
Error: “The redirect_uri MUST match the registered callback URL for this application”Solution:
- Check your OAuth app settings on GitHub
- Ensure callback URL exactly matches (including protocol and port)
- For local dev:
http://localhost:3000/auth/github/callback - Update OAuth app if needed
Invalid client
Invalid client
Error: “Invalid OAuth client_id”Solution:
- Verify
GITHUB_CLIENT_IDis correct - Check for extra spaces or quotes
- Ensure OAuth app isn’t deleted
- Try regenerating client secret
Authorization failed
Authorization failed
Rate limit errors
Rate limit errors
Error: “API rate limit exceeded”Solution:
- Create authenticated OAuth app (higher limits)
- Use personal access token for development
- Implement caching for repository data
- Contact GitHub for higher limits
Localhost not working
Localhost not working
Error: OAuth redirect fails in browserSolution:
Use Some browsers treat these differently!
127.0.0.1 instead of localhost:Security Best Practices
Rotate Secrets Regularly
Generate new client secrets every 90 days
Use Minimal Scopes
Only request permissions you actually needRemove
workflow scope if not using ActionsMonitor Access Logs
Review GitHub OAuth authorizations periodicallygithub.com/settings/applications
Secure Production Secrets
Never commit secrets to version control
.gitignore
Advanced: Organization OAuth Apps
For team deployments, use GitHub Organization OAuth apps:Organization Benefits
- Centralized management: Admins control OAuth apps
- Fine-grained permissions: Restrict repository access
- Audit logs: Track all OAuth usage
- Team collaboration: Share Forge instance across team
Production Deployment Checklist
Create Production OAuth App
- Use your production domain
- Set HTTPS callback URL
- Document client ID/secret securely
Test Production Flow
- Test OAuth from production domain
- Verify callback redirects correctly
- Check user can access repositories
Rate Limits
GitHub API Limits
| Authentication | Requests/Hour | Notes |
|---|---|---|
| Unauthenticated | 60 | Very limited |
| OAuth App | 5,000 | Standard limit |
| GitHub App | 15,000+ | Higher limit |
| Enterprise | Custom | Contact GitHub |
Optimizing Rate Limit Usage
- Caching
- Batch Requests
- Webhooks

