CI overview

Shipmoor Team
June 11, 2026
3 min read

Shipmoor in CI is the same binary doing the same scan it does on your laptop — installed onto your runner, scoped to the change, exiting with a stable code. No source is uploaded anywhere: the scan happens on your infrastructure, and the only thing handed to GitHub is the SARIF evidence you choose to upload.

Three decisions make a good Shipmoor CI gate, regardless of CI provider:

  1. Scope to the change. Scan the merge-base diff (--diff origin/main...HEAD with fetch-depth: 0), so PRs are gated on what they introduce, never on legacy findings. See Gating & policy.
  2. Pick the threshold deliberately. --fail-on high is the sensible default: hallucinated dependencies block, debug output doesn’t.
  3. Emit evidence either way. Write SARIF (and a markdown summary) on every run, and upload it even when the gate fails the job — that’s what populates code scanning.
shipmoor scan --diff origin/main...HEAD \
  --sarif --output shipmoor.sarif \
  --markdown-summary "$GITHUB_STEP_SUMMARY" \
  --fail-on high

Installation on a runner is the same one-liner as anywhere else (curl -fsSL https://dl.shipmoor.dev/install.sh | bash); the free Community scan needs no account or secret in CI.

Handling the exit codes

The contract is four stable codes — and the most common CI mistake is treating 1 as a tooling failure:

CodeMeaningCI handling
0CleanPass
1The gate firedThe gate working. Fail the check; the SARIF/JSON is still complete — upload it.
2Usage/config errorFix the invocation
3Scan failedReport as a tooling error

See Output formats & exit codes for the full contract.

GitHub Actions

Two ready-made options — a copy-paste workflow and a composite action (shipmoor/shipmoor-cli@v0) — are covered in GitHub Actions. Any other CI (GitLab, Buildkite, Jenkins, a bare cron) follows the same pattern: install, scan the diff, act on the exit code, keep the report as an artifact.

Claim Check in CI

On an IC plan, the same CI scan can carry the claim check: pass the task’s intent (--intent, or a .shipmoor/intent.txt your workflow writes) and, if you’ve opted into the gate, a --verdict-policy. Roll it out with --would-block first — see Turning on the gate.

Coming soon — Team. Managed CI gates, PR comments, shared baselines, and team policy are the upcoming Team tier, built on this same local-first core. Everything on this page works today on any plan, including free.

Next

Last updated on June 11, 2026

Was this article helpful?

Your response is saved on this device.