Skip to main content
You decide what “compliant” means for each agent, and you answer the examiner. In Sengol, that decision lives in one file: the ControlBook.
1

Get the right role

cro writes ControlBooks and generates reports.
2

Pick regulations

29 ship in the catalog. Add your own internal policies.
3

Write the ControlBook

Map each obligation to evaluators and a threshold.
4

Activate it

One active ControlBook per install drives gates and reports.
5

Generate a report

Per agent, per period, signed by the appliance.
6

Hand evidence to the examiner

A report plus a verifiable evidence pack.

1. Get the right role

The cro role can write ControlBooks, generate reports, propose erasures, place legal holds, and approve agent intakes. It cannot write evidence or decide review items. An approver can be the second pair of eyes for erasures and intakes. Most of this journey works in the Console. Each step also shows the command-line equivalent. Commands use your sk_ token in SENGOL_API_TOKEN; REST calls exchange it for a session token first:

2. Pick regulations

In the Console, open Evidence → Library:
Library page listing evaluators and regulations

Library: the evaluator registry and the regulation catalog.

From the CLI:
See what a regulation asks for, and which evaluators Sengol suggests:
All 29 policy ids are listed in the ControlBook concept page. To add an internal policy, see custom policies.

3. Write the ControlBook

Each obligation names the regulation it serves, the evaluators that test it, and the pass rate it needs:
controlbook.yaml
Validate it locally. This needs no appliance:
The validator warns when a CRITICAL obligation lacks critical_veto or coverage_required. Every field is explained in ControlBook.

4. Activate it

In the Console, open Settings → General. In the ControlBook card, choose the YAML file, then Validate & apply. The card shows the active id and version. Through the API:
What activation changes:
  • Reports use the active ControlBook.
  • A developer’s gate that names a ControlBook is refused unless it is the active one: ControlBook acme-advisory-agents 2026.1 is not the active ControlBook.
  • To change a ControlBook, bump version. Re-uploading the same id and version with different content is refused with 409.
Tell your developers the file path so they can set suite.controlbook in their sengol.yaml (CI gate).

5. Generate a report

A report checks one agent’s records over a period against every obligation. In the Console, open Evidence → Reports and choose Generate. Through the API:
Read the result:
The demo agent misses its disclosure obligation: 88% of answers carried the disclosure against a required 95%. The Console’s Govern → Governance page shows the same coverage live. Enter the agent id and choose Load:
Governance coverage table: two obligations met, disclosure below threshold

Governance → Coverage for gic-advisor under the active ControlBook.

Generated reports are listed under Evidence → Reports, with a download link for each:
Reports page with the generate form and report history

Reports: generate, then download the signed report.

How to read failure modes:
Generate reports of record in the Console or through the API. Those are HMAC-signed by the appliance. sengol report generate runs locally and produces a report with an empty signature.
format: "pdf" adds a PDF beside the JSON when the appliance has the reports extra installed.

6. Hand evidence to the examiner

Give the examiner:
  1. the signed report,
  2. the evidence pack for the same agent (sengol export --agent gic-advisor --out pack.json),
  3. the appliance’s public key, through a separate channel.
The auditor journey shows what they will do with them.

Approve an agent intake

A developer proposes each new agent as an intake. cro, approver and admin can approve it, and approving needs an interactive sign-in: SSO, a password, or sengol login --device. An sk_ token or the bootstrap-secret token cannot approve. Open Govern → Intakes and select the intake. The page shows the developer’s answers, the Approvals on this revision panel and an Actions card.
  • Approve registers the agent. It issues no credential. Approval signs the decision and the agent’s first risk tier.
  • Revise saves your edits as a new revision. Earlier approvals stop counting.
  • Reject needs a reason. The agent id stays reserved.
  • Withdraw is for the person who submitted it.
Intake detail page for gic-chat-advisor with the review progress card, approvals panel and Approve, Revise, Reject and Withdraw buttons

An intake routed by a review policy: its answers, Review progress, Approvals on this revision and Actions.

The panel reads “Approved: N required, counting the person performing the step.” N is the approver count for the intake’s risk tier. It is 1 until an operator raises it, and then you cannot approve alone. Other approvers use Cast approval on the same page first. The Override reason box matters only if your organization set the same-person rule to reason. See Set who approves intakes. If a token submitted the intake, the requester must confirm it first. Until then approving answers requester_unconfirmed. If a review policy routed the intake, its mandatory reviews must be cleared before you can approve.

Erasure requests

A data-subject erasure needs two people:
  1. A cro proposes it: POST /v1/audit/erasure/requests with the trace ids, a subject reference and a reason. Nothing is purged yet.
  2. A different person with erasure:approve (an approver or admin) approves it at POST /v1/audit/erasure/requests/{id}/approve.
Approval purges the raw trace content and stored reason text, and writes a signed tombstone naming both people. The signed evaluation records stay and still verify. The Console’s Settings → Erasure tab shows the ledger.