sengol gate runs your evaluators over a dataset, signs one evaluation-run
record, and tells CI whether the agent passed. The run record carries a
signed result for each row.
1. Write a golden dataset
One JSON object per line. Each row needsprompt (or input) and at least
one of response or expected. All rows must name the same agent and
version.
golden.jsonl
policies, context_docs (grounding text for LLM judges),
id, and metadata.
2. Configure the suite
A dataset run must not contain asample_input block:
sengol.yaml
- name: <Class> with an args: mapping. Each
name may appear once. To attach LLM judges and thresholds, point suite.controlbook at a
ControlBook.
3. Run it locally
How the verdict is decided
- With a ControlBook, its thresholds decide.
- Without one, the pass rate must be at least 95%.
Exit codes
Useful flags
4. Run it in GitHub Actions
Usesengol-io/sengol-github-action.
It installs sengol with pip, runs the gate, and posts a sticky comment on
the pull request.
.github/workflows/sengol.yml
- The runner must reach your appliance and a package index that serves
sengol. SetPIP_INDEX_URLorPIP_EXTRA_INDEX_URLif you host it privately. fail-on-gate-failuredefaults totruein the action.- Outputs:
passed("true"/"false"),score,report_url,regression. - OIDC: the appliance must set
SENGOL_GITHUB_OIDC_AUDIENCE(for examplesengol). Without it the exchange returns503and the action falls back toSENGOL_API_TOKEN. Every exchange is logged with the repository, ref, commit and run id. - Allowlist (from the 2026-10-07 sengol release): set
SENGOL_CI_OIDC_ALLOWED_REPOSITORIESto the repositories that may exchange, for exampleacme/serviceoracme/*. Unset or empty admits none, and the exchange returns401. Earlier releases ignore the variable. - LLM judges from a ControlBook need
ANTHROPIC_API_KEYin the step env. Without it they are skipped.
Other CI systems
The gate is a CLI command. In any CI:- Install
sengol. - Set
SENGOL_API_URL,SENGOL_TENANT_IDandSENGOL_API_TOKEN. - Run
sengol gate --config sengol.yaml --dataset-path golden.jsonl --fail-on-gate-failure --output junit > eval-results.xml. - Publish
eval-results.xmlas a test report.
SENGOL_CI_OIDC_ISSUERS and the job sets SENGOL_CI_OIDC_TOKEN_URL. The
repository allowlist applies to these issuers too, and an unprefixed entry
covers GitHub Actions only. Add each repository or project as
<issuer>=<repository>, for example https://issuer.example=group/project. An
issuer whose token has no repository claim is matched on the token’s sub,
exactly. Without an entry the exchange returns 401.