Connecting GitHub
A GitHub connection is one personal access token plus a base URL, shared across every repo you add from it. Each repo then decides — independently — whether it feeds issues to a board, code intelligence, or both.
The GitHub repo picker inside the Add-source wizard.
What it does, and where the data comes from
One connection stores a base URL (https://api.github.com by default — set your GitHub Enterprise URL to point elsewhere) and one PAT. Adding repos runs the live picker against that token, then bulk-binds the repos you select; each repo gets its own hot/warm/cold sync tier based on recent push activity, so quiet repos are polled less often than busy ones.
| Field | Value |
|---|---|
| API base URL | Defaults to https://api.github.com; override for GitHub Enterprise |
| Personal access token | Classic or fine-grained, with the scopes below |
| Repository | Selected from the live picker, or bulk-added by pattern |
How to connect GitHub
- Create a token with the scopes
repo,read:org, andread:user. Userepofor private repositories, orpublic_repoif you only need public ones. - If the repos live in an SSO-enforced organization, authorize the token for that org from GitHub's token settings — an unauthorized token can read your own repos but is silently refused on the org's.
- Add source → GitHub — paste the token and click Create & test; the wizard then lists the repos your token can see.
- Select repos and, per repo, choose Feed issues to board and/or Use for code intelligence.
What syncs
Per repo: pull requests, reviews, commits, issues, and milestones. Board issue-feed and code intelligence are independent toggles — a repo can do either, both, or (if you leave both off) neither, in which case it sits in the connection unused.
Under the hood
GitHub enforces SSO authorization per token, per organization — it isn't something Deckgauge configures. A token that works fine against your personal repos will fail (usually with a 403, sometimes a silent empty result) against an SSO-protected org's repos until you explicitly authorize it for that org from GitHub's own token settings page.
Repos sync on a shared rate-limit budget (roughly 4,000 requests/hour) split across hot/warm/cold tiers, with a self-healing backfill on boot — a big org doesn't need manual rate-limit tuning to stay inside GitHub's limits.
If it looks wrong
| Symptom | Cause | Fix |
|---|---|---|
| Org repos don't appear in the picker, personal repos do | Token isn't SSO-authorized for that organization | Authorize the token for the org from GitHub's token settings, then retry |
| "Use for code intelligence" is disabled | No PR/commit sync available on this connection yet | Wait for the repo's first sync, or re-check the connection's token |
| Reconnect banner says the token is invalid | PAT expired or was revoked | Paste a fresh token via Update token & retry on the source card |
Related
- Mapping source statuses — GitHub labels plus the synthetic
open/closedvalues, matched case-insensitively. - When your data refreshes — sync tiers, watermarks, and manual sync.
- When a connection breaks — the health badge and reconnect flow.
- Engineering intelligence — what code-intelligence data powers.
Last updated