Skip to content

Compliance reports

Your agent can produce two reports for an auditor. Both are read-only: they change nothing, and neither is a certification. They report the technical controls. The rest of a compliance programme stays with your organisation, and the reports list it so the picture is complete.

Run both from the agent’s folder. They open the agent’s sealed records, so only the owner can run them. On macOS the binary is hexaeight-agent-osx-arm64.

Terminal window
cd ~/heia-agent
./hexaeight-agent-linux-x64 hexaeight-agent.json --compliance-info all

Instead of all, name one framework: soc2, hipaa, eu-ai-act or dpdpa (India’s DPDP Act 2023). Add --json for a machine-readable copy.

Real output from a running agent. The host name and the email addresses are blurred; nothing else is changed.

Terminal: the report header with the agent name, the time it was generated, the running build with its version and binary hash, and a heartbeat from each of the three processes. The host name is blurred. Terminal: Controls in force, as recorded by the running agent at its start: approved builds, reach, identity, licence, workspace sign-in, engine isolation, engines, routing, audit trail, SIEM sink, OAuth link, data at rest, idle sign-out, privacy notice; then control files changed since the start, and three consent records with the email addresses blurred.

It reports what is in force, not what a file says. The figures come from the audit trail, from what the running agent recorded about itself:

  • The running build: its version and the SHA-256 of the binary, so you can match it to a published release
  • Heartbeats: when each of the agent’s processes was last seen
  • Controls in force: sign-in, policy, approved builds, engine isolation, the SIEM sink, the idle sign-out, the privacy notice and more, as recorded at the agent’s last start
  • Changes since then: every settings or policy file that changed, with its old and new hash
  • The last 30 days: turns, approvals, commands, refusals, consents and withdrawals, idle sign-outs and security events
  • Consent records: who accepted which terms and when, with a hash of the exact words

Then comes a checklist for each framework. Every line gives its evidence and one of these statuses:

StatusMeaning
In placethe control is on, and the evidence shows it
Partialpart of it is covered; the evidence says which part is not
Gapthis agent does not cover it today
Organisationyour own obligation, such as a risk analysis, training, a contract or a procedure
N/Ait does not arise for this agent, for example consent withdrawal on a personal licence that only its owner uses

Two of the checklists from the same report:

Terminal: the HIPAA Security Rule checklist, each line with its status (In place, Partial or Organisation), the section of the rule and the evidence. Terminal: the EU AI Act checklist, from AI literacy and risk classification to logs, human oversight, robustness, transparency and the inventory of models in use.

Start the agent at least once with the current release before running the report. Until then, the report says there is no record of controls yet.

Terminal window
./hexaeight-agent-linux-x64 hexaeight-agent.json --access-review

It lists who and what can reach this agent:

  • who may sign in to the workspace
  • every policy rule
  • the approved builds, and whether only those may connect
  • every signed-in session, newest activity first, and how many distinct people they belong to. Each session is shown by a short hash: never a code, a login token or a key.
  • consent records, including withdrawals
  • command approvals, and every standing (“always”) approval
  • the machines this agent can reach
  • whether other software can call it, and which agents may reach it or be called by it

Add --json for a machine-readable copy.

From a running agent, with email addresses, other agents’ names, machines and their addresses blurred:

Terminal: the access review header, workspace sign-in by one named owner, and the twelve policy rules. Email addresses and other agents' names are blurred. Terminal: 32 signed-in sessions, newest activity first, each shown by a short hash, and the number of distinct people. The email addresses are blurred. Terminal: the four machines this agent can reach, with every name and address blurred except the local one, whether other software can call it, and the agents it may reach or be reached by, with other agents' names blurred.

To remove someone’s access, remove each of their policy rules with --remove-rule, written exactly as it was added, and run the review again to confirm:

Terminal window
./hexaeight-agent-linux-x64 hexaeight-agent.json --remove-rule '[email protected],*,inbound,allow'

See Policy.

The router has its own report, run from the router’s folder:

Terminal window
cd ~/heia-router
./hexaeight-router-linux-x64 --compliance-info all

It shows the same kind of record for the router: its build, heartbeat, controls, changes, model calls and tokens over the last 30 days. It also lists every model provider in its configuration with the provider and region inferred from the address, so you can answer where data is sent. Confirm each one against the provider’s terms. The report shows how each provider is reached, never its key.

From a running router, with the host name and private provider resource names blurred:

Terminal: the router's report header, running build, heartbeat, trail, model calls and tokens over the last 30 days, security events, the controls in force at its start, and the one control file that changed. Terminal: the router's eleven upstreams, each with the provider and region inferred from its address and whether its key is sealed. Two private Azure resource names are blurred. Terminal: the router's SOC 2 checklist: who may use which model, upstream credentials, data in transit, monitoring of model use, change management, confidential content kept out of logs and vendor management.