How-to
Connect GitHub
Updated
On this page
Use Connect GitHub to link your account and choose the repositories Zof checks. This one flow handles the Zof GitHub App installation when needed. Setup takes about 5 minutes, plus any wait for approval. A company admin in Zof starts the connection. A GitHub organization owner may need to approve repository access before it can finish.
The console uses an OAuth App to sign you in and confirm your GitHub role. The Zof GitHub App is a separate GitHub App installed on your organization or personal account; it posts the Zof / Control check on the repositories you choose. Installing the Zof GitHub App does not approve the console's OAuth App for your organization.
Fix pull requests use another App, Zof Fix App. Once GitHub is connected, Fix pull requests on the Connection tab shows its recorded installation and write permissions separately. A run's fix drawer shows one line only when something is missing. A GitHub organization owner installs it or accepts Contents: write and Pull requests: write once for the installation, and includes the repositories that need fixes. Permitted members can then open fix pull requests using their own linked GitHub account and repository write access. After setup, come back to Zof and the status updates by itself, or choose Refresh Fix App status on the Connection tab. Refreshing does not open a pull request. See Fix a failure with Codex.
Create your Zof company
You can sign up with a verified personal or work email. If you do not have a company yet, name it and choose Create company. You become its admin. After you start a free trial or choose a plan, the next step, Connect GitHub, connects it straight away; choose Skip for now to do it later from Home or Integrations. The company starts empty, without demo data. If a company has already invited your verified email, Zof offers Join with that company's name first. See Get started.
Demo is read-only and offered only to eligible Zof staff accounts. Choose Leave demo to return to company setup or your existing company. Sign-ups are paused applies only to new company creation; it does not disable existing companies.
Before you start
- You're a company admin in Zof. Anyone can link their GitHub account, but only a company admin can connect GitHub to the company. See Who can do what.
- You're an admin of the GitHub organization the Zof GitHub App goes on, or the owner of the personal account. The Zof GitHub App connects to an organization or a user account, not to an enterprise account.
- Your primary email on GitHub is verified. Zof doesn't link a GitHub account whose email GitHub reports as unverified.
- You're on your company's main Zof address. If the card says "GitHub connections start on your company's main Zof address", ask your admin for it. If it shows a link to Integrations on another address, follow it.
Connect your GitHub account
- On Home, click Connect GitHub: it's the first step for a new company, and the panel in place of the release tiles for a company that already has test runs. That panel's Connect GitHub, like the ones on New run, Admin › Users and Admin › Overview, opens the connect dialog in Integrations straight away. You can also start from the GitHub card in Integrations. While a step isn't done, the dialog says why Continue is off, for example "Link your GitHub account above to continue." Once your organization is connected, the dialog is a short summary instead (Organization connected, the repositories and where to manage them, and Done), with your own GitHub account as a separate optional block. Your GitHub link also shows as one line, with Disconnect, in Integrations and Settings › Profile, whether or not the company has GitHub connected.
- If your GitHub account is already linked, pick the account to connect under GitHub account and choose Continue. Otherwise continue to GitHub.
- On GitHub, approve the request. Zof asks for organization access (
read:org) and your email addresses (user:email). It reads only your organizations, your role and your verified email. Zof needs the verified email before an admin can accept a system map draft, or stop or adopt a stored copy. Dismissing a draft doesn't need it.
When you click Link my GitHub account, GitHub asks which of your GitHub accounts to link; it asks the same when you sign in with GitHub. GitHub sends you back to the page where you started, including Home and the tab of the GitHub page you clicked from, to choose the organization or personal account to connect. Connection errors appear there too. If your GitHub account is already linked, Zof reuses that link. If the card says your GitHub link doesn't include organization access, click Reconnect GitHub and approve again.
If you linked GitHub before Zof asked for user:email, the System map screen says so the first time you accept a draft or stop or adopt a stored copy. Click Reconnect GitHub there and approve again. GitHub sends you back to the System map screen. If the link fails, you land on Integrations with the message.
Disconnect your personal GitHub account
Under Your GitHub account, the Connection tab shows Linked and "Linked as @username". Click Disconnect, read the confirmation, then choose Disconnect GitHub. Cancel or press Escape to keep the link.
This signs Zof out of your personal GitHub account. The Zof GitHub App stays installed for the company, and its company connection and repository checks stay in place. After success, the tab offers Link my GitHub account again.
You need a verified email with email sign-in available, so disconnecting cannot remove your only way back into Zof. While you are signed in, one confirmation is enough; you do not need a fresh sign-in. Disconnect is unavailable in demo mode.
If GitHub cannot confirm revocation, Zof keeps the link and asks you to retry. If GitHub access was revoked but the local link could not be removed, the message says so: retry Disconnect to finish. If the login cannot be read, the card says it is unavailable; it never guesses a username.
Connect an existing installation
Click Connect GitHub, then select the GitHub organization or personal account by name. Zof checks for its existing Zof GitHub App installation and connects it to your company. You do not need an installation ID or a repository-settings change.
The person finishing the connection must be a company admin in Zof and an admin of the selected GitHub organization, or the owner of the personal account. An installation already connected to another Zof company cannot be claimed.
Approve repository access
If the selected account has no Zof GitHub App installation, the same connection journey takes you to GitHub. Select the same account, choose all repositories or only the ones Zof should access, and confirm on GitHub.
If GitHub requires an organization owner's approval, send the request there. Zof saves the selected account so you can close the page and return after approval. A person who administers both the Zof company and that GitHub organization can then finish the connection from Home or Integrations. GitHub approval is still required; linking your personal account does not grant repository access.
The redirect from GitHub expires after 10 minutes, but your saved account selection lasts 30 days. Return to Home, choose Connect GitHub, and use Check again to resume after a delayed approval. You can also resume from Integrations. If the saved selection expires, choose the account again.
After connecting, Zof says your account "is connected. Discovering its selected repositories…" until it has read them. It checks progress every 10 seconds for up to 5 minutes. After that, use Check again. A completed connection does not by itself confirm that verification is configured or running.
Recover an unavailable connection
A company admin may see App removed in Integrations, and a notice on Home in place of the release tiles, when GitHub confirms that the installation is gone. Needs review means GitHub still lists the installation but Zof cannot confirm the account's installation. In either case, Fix now on the GitHub card opens the Health tab, and the GitHub page says what to do. The repository list may be out of date until then.
- For a missing installation, choose Replace unavailable connection on Home or in Integrations. This releases the unavailable company connection after another check with GitHub. Then use Connect GitHub to choose the account and complete its installation or connection. Until the connection is replaced, Home's Connect GitHub step asks you to replace it first instead of offering to continue with the old account. Replacing needs your own GitHub account linked: if it isn't yet, the box on Home and the Health tab offer Link my GitHub account first, which may ask you to sign in again, and then Replace unavailable connection. If the page links to Integrations on the setup site, follow that link to replace the connection there.
- For Needs review, click Contact support, which emails support@zofai.com, and quote the support reference on the Connection tab. A company admin cannot override this state.
To move to another GitHub account, uninstall the Zof App from the old account and replace the connection before you delete that account. Deleting it first can leave the connection waiting for a Zof review.
If replacement fails, check the current message before retrying. A replacement is not complete merely because you clicked the button. Disconnecting your personal GitHub login does not repair the company's installation.
Disconnect the company's GitHub
Disconnecting is uninstalling the Zof GitHub App on GitHub. On the GitHub integration page (Connection tab), choose Uninstall on GitHub to open the installation's settings, then uninstall it there. After you uninstall on GitHub, Zof shows Not connected. There is no Sync button: the repository list updates automatically from GitHub.
Change which repositories Zof checks
- In Integrations, click Manage on the GitHub card. If it shows Fix now, do that first.
- Under Repository access, click Choose repositories on GitHub.
- On GitHub, add or remove repositories and save.
- Back in Zof, reload the Configuration tab.
A repository you removed leaves the list.
What the status word means
The GitHub card and page read one word, from the connection, merge blocking on default branches, deliveries and recent merges.
| Word | What it means |
|---|---|
| Connected in green | Every read answered and nothing is wrong. |
| Connected in grey | Installed, but your role can't see every read. The sentence says what's closed, and Link my account opens it when linking can. |
| Setup incomplete | No active repositories, or a default branch doesn't block merges. |
| Needs attention | A delivery you can act on failed or was refused in the last 7 days, or a merge skipped Zof's approval in the last 14. |
| Can't confirm | A check didn't answer, or GitHub didn't say whether a repository blocks merges. The sentence says which, and the button goes to what helps. |
Check that it worked
- Open Integrations. The GitHub card reads Connected, or Setup incomplete until your repositories block merges. See What the status word means.
- Open the card. The GitHub page says "Installed on" your organization.
- Configuration lists the repositories you chose.
- Open a pull request in one of them. A
Zof / Controlcheck appears on it.
If the badge reads "Waiting for GitHub", GitHub hasn't confirmed the install yet. If it reads "Suspended", the Zof GitHub App is installed but suspended on GitHub, and the check isn't running. A GitHub organization owner resumes it in the organization's GitHub settings. If the card shows Connect GitHub, the company has no connection even if your personal GitHub login is Linked.
If another company's free trial already used this GitHub account, GitHub still connects, but your company's trial ends and its credits are removed. The card then says "This GitHub account already had a free trial." See Free trial.
GitHub organization access
If GitHub refuses to show Zof your organization role, nothing is connected. An org owner checks access for the console's OAuth App, separately from the Zof GitHub App installation.
The same access decides which organizations Connect GitHub lists. A new organization doesn't appear until it allows the console's sign-in app. Grant or request access as below, then choose Check again under the list.
- Open the organization on GitHub and choose Settings → Third-party access → OAuth app policy.
- If OAuth App access restrictions are enabled, review the console sign-in app and approve its access. If it is not listed, the person connecting can open their own Settings → Applications → Authorized OAuth Apps, select the console app, and request organization access for the owner to approve.
- Return to Integrations and use Check again, or Connect GitHub to choose the account again.
An inaccessible-membership message does not prove an OAuth App restriction or that you are not an admin. Check that Zof is linked to the intended GitHub account and ask an owner to check your membership and organization access. A confirmed non-admin gets the separate "Only an admin" message and needs an admin of both the GitHub account and Zof company to connect it.
If the install didn't finish
When GitHub sends you back, the card shows a message. Nothing was connected unless the message says so. Find the message below.
| The card says | What to do |
|---|---|
| "Your request went to a GitHub org admin." | You aren't an org admin, so GitHub asked one to approve the install. Once they approve it on GitHub, someone who is both an admin of that GitHub organization and a company admin in Zof connects the existing installation. You can't connect it yourself. |
| "Connect your GitHub account (with organization access) first, then install again." | Connect your GitHub account, then continue the saved connection. |
| "The install request expired (they last 10 minutes)." | Return to Integrations to resume the saved selection. |
| "GitHub won't show Zof your role in your organization." | An org owner approves the console's OAuth App. Follow GitHub organization access, then try again. |
| "GitHub refused access to your organization membership." | Check the linked account and ask an owner to check your organization access. |
| "Zof was installed on a different GitHub account from the one you chose." | Choose the account you installed it on. On Home, Zof opens the account list for you. |
| "Only an admin of the GitHub account where the Zof GitHub App is installed can connect it." | Ask an admin of that GitHub account who is also a company admin in Zof to connect it. |
| "Only a company admin can connect GitHub to this company." | Ask a company admin to do it. |
| "This GitHub organization is already connected to another Zof company." | One installation connects to one company. Ask that company's admin, or choose another organization. If you're in the right company, email support@zofai.com. |
| "This company is already connected to a different GitHub account." | A company connects to one GitHub account. Email support@zofai.com. |
| "GitHub came back without Zof's install request, so nothing was connected." | If the app is installed, connect the existing installation. |
| "That install request was already used." | If the card doesn't show the Zof GitHub App as connected, start again. |
| "That install was started by someone else." | Start it again yourself. |
| "That install was started for a different company." | Start it again from this company. |
| "The install request couldn't be verified." | Start the install again. |
| "GitHub didn't send a valid installation ID." | Start the install again. |
| "GitHub has no Zof GitHub App installation with that ID." | Choose the GitHub account again so Zof can check its current installation. |
| "The Zof GitHub App connects to a GitHub organization or user account, not an enterprise account." | Install it on an organization or a user account instead. |
| "GitHub didn't accept your account link." or "Your GitHub link was revoked." | Click Reconnect GitHub, then try again. |
| "Too many attempts." | Wait a minute, then try again. |
| "GitHub didn't answer, so nothing was connected." or "Zof didn't answer, so nothing was connected." | Try again in a minute. |
| "Another connection finished at the same moment." | Reload the page to see the result. |
| "GitHub connections aren't available for this company yet, so nothing was connected." | Zof is still setting this up. Email support@zofai.com if it doesn't change. |
| "Zof couldn't finish this on our side, so nothing was connected." or "Zof didn't accept this company's ID." | The problem is on Zof's side. Nothing was connected. Email support@zofai.com. |
Other messages say what to do in their own words. A message that starts "GitHub setup didn't finish" ends with a code in brackets. If a message keeps coming back, email support@zofai.com with the message.
If linking your account fails
| The card says | What to do |
|---|---|
| "This GitHub account doesn't have the email of this Zof account, so it wasn't linked." | Add and verify that email in your GitHub email settings(opens in a new tab), or use the GitHub account that has it, then try again. |
| "That GitHub account is already linked to another Zof account." | Sign in to that account and disconnect GitHub there (Integrations › GitHub › Connection › Disconnect), then link it here. Right after you try, the message names that Zof account with its email masked, for example gi***@example.com; only you see it, once. |
| "GitHub didn't link. Make sure its primary email is verified on GitHub, then connect again." | Verify your primary email in your GitHub settings, then click Connect GitHub again. |
| "For your security, sign in again to link GitHub." | Zof links an account only within a few minutes of signing in. Click Sign in again beside the message. You come back to the same page; then click Link my GitHub account. |