> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qodo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Manage Git installations

> View and manage every Git installation connected to Qodo, add new installations, and resolve connection errors.

The **Installations** tab lists all Git integrations connected to Qodo. A Git installation is the fundamental connection unit, representing a single connection that grants Qodo access to a defined set of repositories. Once an installation is complete, Qodo automatically tests the connection to verify both API access and webhook delivery.

<Frame>
  <img src="https://mintcdn.com/qodo/PQOul-4HCn01HCup/images/administration/repositories-installations-tab.png?fit=max&auto=format&n=PQOul-4HCn01HCup&q=85&s=2875eb389c1df07d70719c30823ddea3" alt="Installations tab showing installation name, provider, repository count, last connection test time, and last connection state, including a Suspended example" width="1763" height="892" data-path="images/administration/repositories-installations-tab.png" />
</Frame>

Use the search bar to find a specific installation by name. To view the repositories under a specific installation, click the installation row to open the [Repositories tab](/governance/repositories/manage-repositories) filtered to that installation. To manage the repositories an installation covers, see [Manage the repositories in an installation](#manage-the-repositories-in-an-installation).

| Field                     | Description                                                        |
| ------------------------- | ------------------------------------------------------------------ |
| **Installation**          | The installation name.                                             |
| **Provider**              | The Git provider.                                                  |
| **Repositories**          | Number of repositories Qodo has access to under this installation. |
| **Last connection test**  | When Qodo last tested the connection to this installation.         |
| **Last connection state** | Current connection status.                                         |

Connection tests run automatically on a regular schedule. The last test result is shown for each installation.

| Status        | Description                                                                                                                                                                                                                                                                                                                                                                                       |
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connected** | Qodo can reach the installation and everything is working as expected.                                                                                                                                                                                                                                                                                                                            |
| **Pending**   | Qodo is still setting up this installation.                                                                                                                                                                                                                                                                                                                                                       |
| **Error**     | Qodo could not connect to this installation. See [Error types](#error-types) for details.                                                                                                                                                                                                                                                                                                         |
| **Suspended** | *(GitHub only)* The GitHub App installation has been suspended and cannot access any resources. Only the party that suspended it can reverse this: the account owner via the GitHub website, or the app manager via the GitHub REST API. See [Suspending a GitHub App installation](https://docs.github.com/en/apps/maintaining-github-apps/suspending-a-github-app-installation) in GitHub Docs. |

### Error types

When an installation shows an error, the error type indicates what went wrong and who can resolve it.

| Error type               | Description                                                 | Action                                              |
| ------------------------ | ----------------------------------------------------------- | --------------------------------------------------- |
| **Authentication**       | Your credentials are no longer valid.                       | Reconnect or reauthorize the app to resume syncing. |
| **Transient**            | The Git provider is temporarily unavailable.                | Retry the connection later.                         |
| **Permanent**            | The Git provider returned a client error.                   | Check your installation settings and try again.     |
| **Invalid installation** | There is a configuration issue with your Qodo installation. | Contact your Qodo Account Manager.                  |
| **Internal**             | An internal error occurred.                                 | Contact your Qodo Account Manager.                  |

### Add a new installation

Click **New Installation** to connect an additional Git account or organization. This takes you to the [Integrations page](https://app.qodo.ai/integrations) where you can set up a new installation using the guided wizard.

### Manage the repositories in an installation

* Select **Manage repos** from the three-dot menu to manage the repositories under an installation. For GitHub, Bitbucket, and Azure DevOps installations, this opens the [Repositories tab](/governance/repositories/manage-repositories) filtered to that installation, where you can review the repositories Qodo can access and toggle code review per repository. GitLab differs, see below.

<Accordion title="GitLab: managing repositories requires a personal access token">
  For GitLab installations, **Manage repos** opens the **Manage repositories** dialog rather than the Repositories tab, where you can edit which repositories Qodo can access. Since Qodo does not store your GitLab personal access token, you re-enter it here to load the installation's groups and repositories.

  <Steps>
    <Step title="Enter an access token">
      <Frame>
        <img src="https://mintcdn.com/qodo/rnnlQnSbpQSmCoXK/images/code-review/gitlab/gl-manage-repos-step-1-token.png?fit=max&auto=format&n=rnnlQnSbpQSmCoXK&q=85&s=e93b07e402597c22b38e23c92ebefd9c" alt="Update your connected repositories step showing the personal access token field" width="603" height="428" data-path="images/code-review/gitlab/gl-manage-repos-step-1-token.png" />
      </Frame>

      <Steps>
        <Step>
          Reuse the token created during installation, if it hasn't expired, or generate a new one:

          * Click **Create a token in GitLab**.
          * For a GitLab Server installation on GitLab 16.6 or earlier, click **Create a token in GitLab 16.6 or earlier** instead.

          Required scope: `api`, preselected.

          <Note>
            Used once, never stored. Short expiry recommended, e.g., 1 day.
          </Note>
        </Step>

        <Step>
          Paste the token and click **Next** to load the installation's groups and repositories.
        </Step>
      </Steps>
    </Step>

    <Step title="Choose what to connect or disconnect">
      <Frame>
        <img src="https://mintcdn.com/qodo/rnnlQnSbpQSmCoXK/images/code-review/gitlab/gl-manage-repos-step-2-select.png?fit=max&auto=format&n=rnnlQnSbpQSmCoXK&q=85&s=d41d93b7faa16d4e9db5246c9041c3b8" alt="Repository selection step showing the group tree with Connected labels on already-connected repositories" width="602" height="670" data-path="images/code-review/gitlab/gl-manage-repos-step-2-select.png" />
      </Frame>

      <Steps>
        <Step>
          Use the search bar to find a repository by name, or browse the group tree. Already-connected repositories are marked **Connected**.
        </Step>

        <Step>
          Select or clear a repository or group to add it to or remove it from the installation.
        </Step>

        <Step>
          Click **Save** to apply your changes, or **Cancel** to discard them.
        </Step>
      </Steps>
    </Step>

    <Step title="Review the updated scope">
      <Frame>
        <img src="https://mintcdn.com/qodo/rnnlQnSbpQSmCoXK/images/code-review/gitlab/gl-manage-repos-step-3-confirmation.png?fit=max&auto=format&n=rnnlQnSbpQSmCoXK&q=85&s=33f6c252cb953f3683d846b512f619b6" alt="Confirmation step showing &#x22;Scope updated&#x22; with the count of repositories added and removed" width="599" height="265" data-path="images/code-review/gitlab/gl-manage-repos-step-3-confirmation.png" />
      </Frame>

      Qodo confirms the change with a count of items added and removed, and lists the status of each. Click **Done**.
    </Step>
  </Steps>
</Accordion>

### Delete an installation

From the three-dot menu, select **Delete installation** to permanently remove it. Qodo displays a confirmation dialog before deleting.

<Warning>
  Deleting an installation cannot be undone. All repositories connected under that installation will be disconnected from Qodo.
</Warning>

<Accordion title="GitLab: personal access token required">
  For GitLab installations, deleting also removes Qodo's webhooks and bot from the connected GitLab repositories and groups. The confirmation dialog asks for a personal access token to do this.

  <Frame>
    <img src="https://mintcdn.com/qodo/rnnlQnSbpQSmCoXK/images/code-review/gitlab/gl-delete-installation.png?fit=max&auto=format&n=rnnlQnSbpQSmCoXK&q=85&s=8e3c71641178a8fbcf85e6dbb6d4efc4" alt="Delete installation dialog showing the personal access token field" width="603" height="366" data-path="images/code-review/gitlab/gl-delete-installation.png" />
  </Frame>

  Generate a token to authorize the removal:

  * Click **Create a token in GitLab**.
  * For a GitLab Server installation on GitLab 16.6 or earlier, click **Create a token in GitLab 16.6 or earlier** instead.

  Paste the token and click **Delete** to confirm. Required scope: `api`.

  <Note>
    Used once to remove the webhooks and Qodo bot, then discarded. Short expiry recommended, e.g., 1 day.
  </Note>
</Accordion>

<Accordion title="Azure DevOps: additional step required">
  If you are deleting your last Qodo installation from an Azure DevOps organization, deleting it in Qodo is not enough to fully remove Qodo from your organization. You must also manually remove the Qodo service principal user. Go to `https://dev.azure.com/{org_id}/_settings/users` and remove the user from there.

  <Frame>
    <img src="https://mintcdn.com/qodo/R3zkqly__0xpYQnY/images/administration/repositories-delete-ado-remove-user.png?fit=max&auto=format&n=R3zkqly__0xpYQnY&q=85&s=ddb428f818bd150073253fdb2bd9e334" alt="Azure DevOps organization settings Users page showing where to remove the Qodo service principal user" width="2896" height="1822" data-path="images/administration/repositories-delete-ado-remove-user.png" />
  </Frame>
</Accordion>

## Next steps

* [Manage repositories](/governance/repositories/manage-repositories): View and manage individual repositories, connection health, and PR history indexing.
* [Audit cross-repository relationships](/governance/repositories/relationships): Audit cross-repository relationships across your organization.
