> For the complete documentation index, see [llms.txt](https://docs.sealsecurity.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.sealsecurity.io/discovering/connecting-source-control.md).

# Connecting source control

Connecting source control is how a Seal Project gets into [source code mode](/discovering/package-discovery-mode/source-code.md), the most accurate of the four package discovery modes. Seal supports three source-control systems:

* [Connecting GitHub](/discovering/connecting-source-control/github.md): the most complete integration. Adds discovery, automatic pull requests for Sealing Rules, and findings sync.
* [Connecting GitLab](/discovering/connecting-source-control/gitlab.md): discovery only.
* [Connecting Azure DevOps](/discovering/connecting-source-control/azure-devops.md): discovery only.

GitHub uses the Seal GitHub App and an OAuth-style install flow. GitLab and Azure DevOps use a personal access token (PAT) plus the platform URL.

After a system is connected, additional repositories can be imported through the same flow without reconnecting. Existing connections are managed at [Settings > Integrations](/discovering/connecting-source-control/managing-connections.md).

<figure><img src="/files/hMwNnDsNv16Tv9TRs42e" alt="The Projects page Import projects dropdown showing GitHub, GitLab, Azure DevOps, Snyk, and Import from file"><figcaption><p>The Import projects dropdown</p></figcaption></figure>

## Permissions

Inside Seal, you need the **Admin** or **Sealer** [role](/getting-started/users-and-sso/user-roles.md) to connect or disconnect a source-control system, and to import projects.

On the source-control side, the permission you need depends on the system:

* **GitHub:** authority to install GitHub Apps on the organization (typically an org owner or a user with the appropriate org-level permission).
* **GitLab:** a personal access token from a user with **Developer, Maintainer, or Owner** role on the GitLab projects you want to scan, with the `api` scope.
* **Azure DevOps:** a personal access token with **full access**, or at least **Code (Read & Write)**.

## Related

* [Source code mode](/discovering/package-discovery-mode/source-code.md): the discovery mode an SCM connection puts a Seal Project into.
* [Managing source control connections](/discovering/connecting-source-control/managing-connections.md): viewing, re-authenticating, and disconnecting existing connections.
* [The onboarding wizard](/getting-started/onboarding-wizard.md): the wizard's source-control step is a wrapper around the GitHub flow described here.
