Connecting GitHub
Codality integrates with GitHub via a GitHub App. The app enables PR creation, check runs, webhooks, and the CI feedback loop.
Setup process
Go to Admin → GitHub tab and click Connect GitHub App.
Codality uses the GitHub App manifest flow:
- Codality generates a manifest describing the app's permissions and webhooks
- You are redirected to GitHub to approve creating the app
- GitHub creates the app under your account and redirects back
- Codality saves the app credentials automatically to your environment variables
This takes about 30 seconds.
Installing the app
After the app is created, you need to install it:
- The GitHub tab shows an Install on GitHub button
- Click it to go to GitHub's installation page
- Choose which repositories the app can access (all or select)
- Confirm the installation
- You are redirected back to Codality
The GitHub tab shows connection status:
- App ID and Client ID — Identify your GitHub App
- Private Key — ✓ Configured or ✗ Missing
- Webhook Secret — ✓ Configured or ✗ Missing
- Installation — ✓ Installed (with ID) or ⚠ Not installed
Permissions
The GitHub App requests these permissions:
| Permission | Access | Purpose |
|---|---|---|
| Contents | Read & write | Push branches, read files |
| Pull requests | Read & write | Create and update PRs |
| Checks | Read & write | Create check runs for agent and review status |
| Issues | Read | Read issue comments on PRs |
| Webhooks | — | Receive events for PRs, checks, comments |
GitHub Enterprise
For GitHub Enterprise Server, set the GITHUB_API_BASE_URL environment variable to your GHE API endpoint (e.g., https://github.yourcompany.com/api/v3).
Troubleshooting
App created but not installed: Click the install link in the GitHub tab. The app needs to be installed on your account or organization.
Webhooks not arriving: Check that your server is accessible from the internet. GitHub sends webhooks to your APP_URL. Verify the webhook secret matches. Check Project Settings → Webhooks for recent events.
Private key missing: This usually means the manifest callback failed to save credentials. You can manually set GITHUB_PRIVATE_KEY in the environment variables.