> 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/setup-apps-os/cli-in-cicd/gitlab-ci.md).

# Integrating with GitLab CI

GitLab CI integration is a shell pattern: install the CLI, run `seal fix`.

## Before you start

* A [token](/getting-started/tokens.md) saved as a masked CI/CD variable named `SEAL_TOKEN`.
* A [Project ID](/getting-started/creating-a-seal-project.md#project-id-and-project-name) for the activity.

## The job

```yaml
seal_fix:
  variables:
    SEAL_PROJECT: my-project-id
  script:
    - curl -fsSL https://github.com/seal-community/cli/releases/download/latest/seal-linux-amd64-latest.zip -o seal.zip
    - unzip seal.zip && chmod +x seal
    - ./seal fix --mode all
```

Replace `--mode all` with `--mode remote` or `--mode local` per your [deployment method](/setup-apps-os/choosing-deployment-method.md). The job should run after dependencies are installed and before they are packaged — see [What the CLI does in CI](/setup-apps-os/cli-in-cicd.md#when-in-the-pipeline-the-cli-runs).

`SEAL_TOKEN` is read by the CLI automatically from the environment; no explicit passing is needed.

## Related

* [Installing the Seal CLI](/setup-apps-os/cli-in-cicd/installing-the-cli.md).
* [The CLI fix mode](/setup-apps-os/cli-in-cicd/cli-fix-mode.md).
