> 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/circleci.md).

# Integrating with CircleCI

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

## Before you start

* A [token](/getting-started/tokens.md) stored as a CircleCI environment variable (project-level or context-level) 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:
  docker:
    - image: cimg/base:stable
  environment:
    SEAL_PROJECT: my-project-id
  steps:
    - checkout
    - run:
        command: |
          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.

`SEAL_TOKEN` is read by the CLI automatically from the environment. Custom images need `curl` and `unzip` available.

## 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).
