TILLSHIELD · COMPLIANCE

Evidence you already have, in the shape an auditor asks for.

Beta

Most of what an auditor asks for, your TillDev products already record: who signs in with a second factor, whether alerts reach someone, how fast vulnerabilities are fixed, whether backups were restored. TillShield reads those records over a period, judges thirty controls from them, maps each control to the criteria of the frameworks you follow, and keeps snapshots that cannot be changed afterwards.

Evidence, not an opinion
This is evidence for an assessment, not an assessment, a certification or legal advice. Whether you meet a framework is your auditor’s opinion; a control passing here means the records show it working, not that a criterion is met.
01Frameworks

Frameworks and how they are named

Every control maps to all three frameworks. Choose the ones you follow under Frameworks you follow on the page, or with tilldev shield compliance frameworks set; that only changes which criteria are listed and exported.

FrameworkEditionPublisherHow it is named
SOC 2Trust Services Criteria (2017, revised points of focus 2022)AICPACriteria are named by identifier only; their text belongs to the AICPA and is not reproduced.
ISO/IEC 270012022, clauses and Annex AISO and IECClauses and controls are named by number only; the standard’s text belongs to ISO and IEC and is not reproduced.
NIST Cybersecurity Framework2.0NISTA work of the US government. Subcategories are named by identifier.

Criteria are given by their identifiers, and the descriptions are TillDev’s own words. Frameworks whose licence does not allow use in a paid product are not included.

02Controls

The controls

Each control states its objective, the facts it was judged on, and where they came from. A criterion takes the worst status among the controls that support it.

StatusMeans
PassThe records show the control working over the period.
AttentionWorking in part, or the evidence is thin: an untriaged backlog, a stale feed, an attested control nobody has attested yet.
FailThe records show it not working: two-factor sign-in not required, a critical vulnerability past its due date, a backup that missed its recovery point.
UnknownThe evidence could not be read just now. Never shown as a pass.
Not in useThe product that would evidence it is not in use, such as TillArk for backups or TillForge for source control.
ExcludedTaken out of scope with a reason. Its facts are still collected and kept.
ControlAreaEvidenceCriteria
Two-factor sign-in
access-mfa
AccessProductsSOC 2: CC6.1 · ISO/IEC 27001: A.5.17, A.8.5 · NIST Cybersecurity Framework: PR.AA-03
Access review
access-review
AccessProductsSOC 2: CC6.2, CC6.3 · ISO/IEC 27001: A.5.15, A.5.18 · NIST Cybersecurity Framework: PR.AA-01, PR.AA-05
Least privilege
access-privileged
AccessProductsSOC 2: CC6.3 · ISO/IEC 27001: A.5.3, A.8.2 · NIST Cybersecurity Framework: PR.AA-05
Audit trail
monitoring-audit-trail
Monitoring and detectionProductsSOC 2: CC7.2 · ISO/IEC 27001: A.8.15 · NIST Cybersecurity Framework: PR.PS-04
Security detection
monitoring-detection
Monitoring and detectionProductsSOC 2: CC7.2 · ISO/IEC 27001: A.8.16 · NIST Cybersecurity Framework: DE.CM-03, DE.CM-09
Detection testing
monitoring-detection-tested
Monitoring and detectionProducts, or attestedSOC 2: CC4.1 · ISO/IEC 27001: A.8.16 · NIST Cybersecurity Framework: ID.IM-02
Finding triage
monitoring-triage
Monitoring and detectionProductsSOC 2: CC7.3 · ISO/IEC 27001: A.5.25 · NIST Cybersecurity Framework: DE.AE-02, RS.MA-02
Threat intelligence
monitoring-threat-intel
Monitoring and detectionProductsSOC 2: CC7.1 · ISO/IEC 27001: A.5.7 · NIST Cybersecurity Framework: ID.RA-02, DE.AE-07
Fix-by dates
vulns-sla
Vulnerability managementProductsSOC 2: CC7.1 · ISO/IEC 27001: A.8.8 · NIST Cybersecurity Framework: ID.RA-01, PR.PS-02
Known-exploited vulnerabilities
vulns-exploited
Vulnerability managementProductsSOC 2: CC7.1 · ISO/IEC 27001: A.8.8 · NIST Cybersecurity Framework: ID.RA-01, ID.RA-05
Configuration posture
vulns-posture
Vulnerability managementProducts, or attestedSOC 2: CC7.1 · ISO/IEC 27001: A.8.9 · NIST Cybersecurity Framework: PR.PS-01, ID.RA-01
Independent testing
vulns-pentest
Vulnerability managementProducts, or attestedSOC 2: CC4.1 · ISO/IEC 27001: A.5.35, A.8.8 · NIST Cybersecurity Framework: ID.IM-02
Vulnerability disclosure
vulns-disclosure
Vulnerability managementProducts, or attestedSOC 2: CC2.3 · ISO/IEC 27001: A.8.8 · NIST Cybersecurity Framework: ID.RA-08
Reviewed changes
change-source
Change managementProducts, or attestedSOC 2: CC8.1 · ISO/IEC 27001: A.8.4, A.8.32 · NIST Cybersecurity Framework: PR.PS-06, ID.RA-07
Approved deploys
change-deploy
Change managementProducts, or attestedSOC 2: CC8.1 · ISO/IEC 27001: A.8.31, A.8.32 · NIST Cybersecurity Framework: PR.PS-06, ID.RA-07
Code and dependency scanning
change-scanning
Change managementProducts, or attestedSOC 2: CC7.1, CC8.1 · ISO/IEC 27001: A.8.25, A.8.28 · NIST Cybersecurity Framework: PR.PS-06, ID.RA-01
Build provenance
change-provenance
Change managementProducts, or attestedSOC 2: CC8.1 · ISO/IEC 27001: A.8.25 · NIST Cybersecurity Framework: PR.PS-06, ID.RA-09
Backups
resilience-backups
Backup and recoveryProducts, or attestedSOC 2: A1.2 · ISO/IEC 27001: A.8.13 · NIST Cybersecurity Framework: PR.DS-11
Restore testing
resilience-restores
Backup and recoveryProducts, or attestedSOC 2: A1.3, CC7.5 · ISO/IEC 27001: A.5.30, A.8.13 · NIST Cybersecurity Framework: PR.DS-11, RC.RP-03
Incident handling
incidents-handling
Incident responseProductsSOC 2: CC7.3, CC7.4 · ISO/IEC 27001: A.5.26 · NIST Cybersecurity Framework: RS.MA-01, RS.MA-03
On-call cover
incidents-oncall
Incident responseProducts, or attestedSOC 2: CC7.4 · ISO/IEC 27001: A.5.24 · NIST Cybersecurity Framework: RS.MA-01, GV.RR-02
Secrets management
data-secrets
Data and devicesProducts, or attestedSOC 2: CC6.1 · ISO/IEC 27001: A.5.17, A.8.24 · NIST Cybersecurity Framework: PR.AA-01, PR.DS-01
Endpoint monitoring
data-endpoints
Data and devicesProducts, or attestedSOC 2: CC6.8 · ISO/IEC 27001: A.8.1, A.8.7 · NIST Cybersecurity Framework: DE.CM-09, ID.AM-01
Security policy
governance-policy
GovernanceAttestedSOC 2: CC5.3 · ISO/IEC 27001: 5.2, A.5.1 · NIST Cybersecurity Framework: GV.PO-01, GV.PO-02
Risk assessment
governance-risk
GovernanceAttestedSOC 2: CC3.1, CC3.2 · ISO/IEC 27001: 6.1.2, 8.2 · NIST Cybersecurity Framework: ID.RA-05
Security awareness
governance-training
GovernanceAttestedSOC 2: CC1.4, CC2.2 · ISO/IEC 27001: A.6.3 · NIST Cybersecurity Framework: PR.AT-01
Personnel screening
governance-screening
GovernanceAttestedSOC 2: CC1.4 · ISO/IEC 27001: A.6.1 · NIST Cybersecurity Framework: GV.RR-04
Supplier review
governance-suppliers
GovernanceAttestedSOC 2: CC9.2 · ISO/IEC 27001: A.5.19, A.5.22 · NIST Cybersecurity Framework: GV.SC-06, GV.SC-07
Business continuity
governance-continuity
GovernanceAttestedSOC 2: A1.3, CC9.1 · ISO/IEC 27001: A.5.29, A.5.30 · NIST Cybersecurity Framework: ID.IM-04, RC.RP-01
Incident response plan
governance-incident-plan
GovernanceAttestedSOC 2: CC7.4 · ISO/IEC 27001: A.5.24 · NIST Cybersecurity Framework: ID.IM-04
03Period

The period

Controls are judged over a period: the last 90 days unless you pick dates, and at most 366 days. The end date is included and is never later than now. Counts such as vulnerabilities fixed on time, restores tested and production deploys approved cover the period; settings such as whether two-factor sign-in is required are read as they are now.

04Attestations

Attestations and exclusions

Some evidence lives outside TillDev: a policy the board approved, a risk assessment, training records, supplier reviews. A member attests to it with a statement, an optional reference to where it is kept, and how long it stays valid (default 365 days, at most 731). Governance controls pass on a valid attestation; a product control can be attested only where the product holds no record either way, and an attestation never turns a failing control into a pass. An attestation lapses at the end of its validity and can be revoked, never edited; revoked ones stay on record.

A control that does not apply to you can be excluded with a reason (10 to 500 characters). It shows as excluded, and its facts and your reason go into every snapshot, so the auditor sees both.

A fresh approval each time
Attesting and excluding change what an auditor will read, so each asks for a fresh approval, like revealing a secret. See Approvals. Both are in the audit log.
05Snapshots

Snapshots an auditor can check

A snapshot freezes every control, its facts, attestation and exclusion over a period. One is taken each month over the default period the first time anyone opens the page that month, and you can take one for any period. Snapshots cannot be changed or deleted from the dashboard, the CLI or the API, and the database lets the application only add them. The digest chain below makes any change detectable regardless.

Each snapshot is numbered, and its digest is the SHA-256 of its canonical JSON: the body without digest, keys sorted, no whitespace. Each records the digest of the one before it, so changing or removing one breaks every link after it. The page and tilldev shield compliance snapshots recompute the whole chain each time. The JSON export says tilldev.compliance.snapshot/1, and anyone can check it without TillDev:

js
// Node 20 or later, no dependencies
import { createHash } from 'node:crypto'
import { readFileSync } from 'node:fs'

const canonical = (v) =>
  v === null || typeof v !== 'object'
    ? JSON.stringify(v ?? null)
    : Array.isArray(v)
      ? `[${v.map(canonical).join(',')}]`
      : `{${Object.keys(v).filter((k) => v[k] !== undefined).sort().map((k) => `${JSON.stringify(k)}:${canonical(v[k])}`).join(',')}}`

const { digest, ...body } = JSON.parse(readFileSync(process.argv[2], 'utf8'))
console.log(createHash('sha256').update(canonical(body)).digest('hex') === digest ? 'digest holds' : 'digest does not match')

The Markdown export is the same snapshot laid out for a reader: the period, a summary, each control with its facts and criteria, and the digest.

06CLI and API

From the CLI and the API

Shield → Compliance shows all of this. Owners and admins only.

sh
tilldev shield compliance                          # every control over the last 90 days
tilldev shield compliance --from 2026-01-01 --to 2026-06-30
tilldev shield compliance show access-mfa          # facts, criteria and attestations for one control
tilldev shield compliance criteria soc2            # each criterion with the worst status of its controls
tilldev shield compliance frameworks set soc2,iso27001

tilldev shield compliance attest governance-policy \
  --statement "Information security policy v4, approved by the board on 2026-03-12" \
  --reference POL-004 --days 365
tilldev shield compliance exclude data-endpoints --reason "No staff devices: managed cloud desktops only"

tilldev shield compliance snapshot --from 2026-01-01 --to 2026-06-30
tilldev shield compliance snapshots                # newest first, and whether the chain holds
tilldev shield compliance export 4 --format md --out q2-evidence.md
tilldev shield compliance export 4 --out q2-evidence.json
tilldev shield compliance verify q2-evidence.json  # recomputes the digest offline

The API is GET /api/v1/shield/compliance with from and to, plus /shield/compliance/attestations, /exclusions, /snapshots and /settings. See the API reference.