31%
of breaches began with the exploitation of a vulnerability: it is the leading way in, ahead of credential abuse (13%)
31 of every 100 breaches
Criterio CISO
Information security
Evidence before the decision
Alexis sets every control next to the evidence that it operated. Guillermo sets every vulnerability next to its policy deadline and the KEV catalog. Amparo sets every incident next to the deadlines that were committed, and every continuity test next to its calendar. They process exports and documents, never systems. They do not accept risks, declare a control met or rate maturity.
What it costs, measured by third parties
31%
of breaches began with the exploitation of a vulnerability: it is the leading way in, ahead of credential abuse (13%)
31 of every 100 breaches
26%
of the vulnerabilities in CISA's KEV catalog were fully remediated in 2025, down from 38% the year before; the median time to fix them rose to 43 days
26 of every 100 exploited vulnerabilities
48%
of breaches involved a third party, 60% more than in the previous report
48 of every 100 breaches
Third-party figures, each with its source, year and sample, verified against the publisher’s own text. The agents’ own figures are further down, in the test evidence.
Criterio is open source. If it creates value for you, help fund testing, documentation and the next capabilities.
Alexis, Guillermo and Amparo are Criterio’s CISO family, an open platform of agent families. Laboratory: built, with its first round with the agents. See the families
Industries
The engine and the agents are tested on all 6 entities of the material, in 4 countries: 4 industry entities —4 industries— and 2 control entities. The engine, also, on every change to the repository. On the map, each country with its evolution.
4 countries tested, in the order they came in · signals and fields from each entity’s latest run
| Since | Country | Material entities | Its rounds | Signals · fields |
|---|---|---|---|---|
| Round 1 | Colombia | Banking, Control entity | Round 1 | 25 of 25 signals · 16 of 16 fields |
| Round 1 | Peru | Healthcare | Round 1 | 25 of 25 signals · 8 of 8 fields |
| Round 1 | Chile | Technology | Round 1 | 25 of 25 signals · 8 of 8 fields |
| Round 1 | Mexico | Retail, Control entity | Round 1 | 25 of 25 signals · 16 of 16 fields |
The progress map
4 countries tested
Borders: Natural Earth, public domain.
What was tested here
The entity’s RFC: the only thing the country sets
The family rests on international standards —NIST CSF 2.0, NIST SP 800-61 Rev. 3, CVSS v4.0 and CISA’s KEV catalog—, not on the country’s law. The remediation, containment and notification deadlines are set by each test entity’s policy, different in each one.
Alexis · 6
Guillermo · 5
Amparo · 5
Latest round: 1
60 documents · 25 defects seeded on purpose
49 documents and no defects: any signal would be a failure
Evolution
The entities and their defects are written in the repository, in tests/criterio-ciso/generar.py.
Criterio · CISO family
They process the statement of applicability, the scanner exports and the incident and test reports, and tell you which control has no evidence, which vulnerability is past its deadline and which notification was not made on time.
CRITERIO · CISO FAMILY
Where the family stands: under construction, in its version 0.1.0. The engine, with its deterministic test on synthetic banking, retail, healthcare and technology material, with two control entities; the round with the three agents is the next step.
Where each name comes from
The three, one at a time
Each tab stands on its own: you can install one agent without the other two. This family has no Rostrum screenshots yet; what each agent left in its first round, with its grade, is in the repository.
criterio-security
From the Greek Aléxios, “the one who defends”: every control against the evidence that it operated.
Processes the statement of applicability, each control’s evidence, the access reviews, the third-party assessments and the risk register: every control against the evidence that it operated. You accept the risk and answer to the audit.
What only he does
Checks every applicable control, not a sample, against the evidence that it operated within its frequency, before the audit asks. It takes each control from the organisation’s own statement, with the number and name the organisation gives it.
What he answers
Never
Accepts a risk, declares a control met, rates the organisation’s maturity, certifies it against ISO/IEC 27001 or opens credentials, keys or backups.
Its commands, by group
security-setupsecurity-wakeshare-findingssecurity-scansoa-statuscontrol-evidenceaccess-reviewsthird-partiesrisk-register9 commands · 3 skills
Rostrum publishes what Alexis and Amparo already wrote, with the date they wrote it. Guillermo’s reports and signals do not appear there unless his configuration says so (vulnerability.publish): a report of open vulnerabilities is a map for an attacker.
How it enters the portal
/criterio-security:security-setup, leaves its configuration in .criterio/seguridad/<entity>/ and marks its root folder with _CRITERIO_SEGURIDAD.txt./criterio-vulnerability:vuln-setup, leaves its configuration in .criterio/vulnerabilidades/<entity>/ and marks its root folder with _CRITERIO_SEGURIDAD.txt./criterio-resilience:resilience-setup, leaves its configuration in .criterio/resiliencia/<entity>/ and marks its root folder with _CRITERIO_SEGURIDAD.txt.Rostrum adds it to the map and raises the portal; Guillermo’s work stays out unless his configuration says it is published:
/plugin install criterio-server@criterio /criterio-server:server-setup /criterio-server:server-start
What it has in Rostrum
What it costs you today
Alexis extends whoever answers for the controls; Guillermo, whoever answers for vulnerabilities; Amparo, whoever answers for incidents and continuity. Enter how many people do each job, what they cost and how many hours a week each task takes them. Nothing you type leaves your browser.
Write the costs in the currency you choose. There is no conversion: changing the currency clears the costs, because an exchange rate written into a page is wrong within weeks.
The people
Hours per week on each task
Hours are per person, per week. The starting people and hours are examples: replace them with yours. The cost is yours to write: we do not print one we cannot source.
Your numbers · per year
Alexis
Whoever answers for the controls · 11 h a week each (28% of the week)
1,012 ha year
—a year
Guillermo
Whoever answers for vulnerabilities · 10 h a week each (25% of the week)
920 ha year
—a year
Amparo
Whoever answers for incidents and continuity · 7 h a week each (18% of the week)
322 ha year
—a year
Write the monthly cost of each group to see what it costs.
What this number is and what it is not
It is the cost of the hours the security team spends today on tasks Alexis, Guillermo and Amparo prepare: finding each control’s evidence, chasing access reviews and third-party assessments, matching each scan against the policy’s deadlines and the KEV catalog, and rebuilding each incident’s timeline. It is not a saving. The person still reviews and decides: accepting a risk, approving an exception and notifying are theirs.
How many of those hours come back we will publish in the evidence section, with each round’s tests. Until that figure is measured, we do not put it here.
Test evidence · updated with every round
Every figure comes from a real run of the repository, with its count and its 95% confidence margin. The engine is tested on every change to the repository; the agents, in rounds on one entity’s material.
How it is tested
4 industries and 2 controls
The engine, on all of them. The agents, so far on all 6 entities of the material, in 4 countries. The control entities carry no defects at all: any signal is a failure.
6 commands per entity
Alexis, Guillermo and Amparo run each agent’s setup and processing —the commands that process the documents and write the records—, with a token cap set before starting. The rest calculate on those records with the engine, which is tested on every change to the repository.
338 documents
What the material of the measured entities holds, in PDF, Word, CSV, text, Excel, pem and zip. The key is not counted: the agents do not have it.
31.9 million tokens
The work of the language model (LLM) in round 1, with its verifications. No command was repeated.
A key they never see
What is expected is written in each entity’s key before the run: every seeded signal and every data point the written documents carry.
95% margin
Every figure comes with its confidence margin: it says how much the sample supports, which a percentage alone does not.
What they wrote is graded against the key they never saw: every signal by its name and its key, and every data point in the records against what the written documents carry. Each entity counts with its latest run, whatever round it came from; if a defect was fixed, the one that verified it. The first runs, with what they missed, are in the chart and in the detail.
Record data
92.5% or higher
Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.
48 of 48 data points extracted from the written documents match the key.
Measured
95% confidence margin (Wilson): 92.5–100%
Signals found
96.3% or higher
Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.
100 of 100 signals the key expected.
Measured
95% confidence margin (Wilson): 96.3–100%
Correct signals
96.3% or higher
Measured: 100%. The headline is the floor of the 95% confidence margin: what the test supports.
100 of 100 signals raised were correct.
Measured
95% confidence margin (Wilson): 96.3–100%
Controls without false alarms
2 of 2
2 of 2 control entities without a single extra signal.
Measured
With a defect on a control in this round: CISO-3. Its row is in the defects.
36 commands run on 6 entities, each with its output, its cost and its grade published.
How the family moves from one round to the next
Each dot is one entity in its first run of the round; the line is its 95% confidence margin. Verifications are shown apart: they repeat what was fixed. The axis starts at the lowest value published.
Round 11
Results by country · each country’s latest run
Each country with its entities in their latest run with the agent. The margin is the 95% Wilson interval.
| Country | Entities | Round | Record data | Signals found | Correct signals | Controls without false alarms |
|---|---|---|---|---|---|---|
| Colombia | 2 | 1 | 16 of 16 · 100%95% CI 80.6–100% | 25 of 25 · 100%95% CI 86.6–100% | 25 of 25 · 100%95% CI 86.6–100% | 1 of 1 |
| Peru | 1 | 1 | 8 of 8 · 100%95% CI 67.5–100% | 25 of 25 · 100%95% CI 86.6–100% | 25 of 25 · 100%95% CI 86.6–100% | — |
| Chile | 1 | 1 | 8 of 8 · 100%95% CI 67.5–100% | 25 of 25 · 100%95% CI 86.6–100% | 25 of 25 · 100%95% CI 86.6–100% | — |
| Mexico | 2 | 1 | 16 of 16 · 100%95% CI 80.6–100% | 25 of 25 · 100%95% CI 86.6–100% | 25 of 25 · 100%95% CI 86.6–100% | 1 of 1 |
Defects the rounds found · 4
Every error is logged with its origin and the commit that fixes it. It counts as verified only when a run after the fix gives the expected result.
Where they came from
For auditing
The full detail of every run. Each block opens on its own.
Alexis, Guillermo and Amparo run their setup and their full review on each entity’s material, with a token cap set before starting. What they write is graded against the key they never see: every signal by its name, and every data point in the records against what the control evidence, the incident reports and their records carry.
| Test material | Agent · commands | Signals | Record data | Tokens |
|---|---|---|---|---|
| bankingRound 1 · Colombia | Alexis, Amparo, Guillermo · 6 | 25 / 25 | 8 / 8 | 5.3 M |
| control entityRound 1 · Colombia | Alexis, Amparo, Guillermo · 6 | 0 / 0 | 8 / 8 | 5.3 M |
| control entityRound 1 · Mexico | Alexis, Amparo, Guillermo · 6 | 0 / 0 | 8 / 8 | 5.2 M |
| retailRound 1 · Mexico | Alexis, Amparo, Guillermo · 6 | 25 / 25 | 8 / 8 | 5.1 M |
| healthcareRound 1 · Peru | Alexis, Amparo, Guillermo · 6 | 25 / 25 | 8 / 8 | 6 M |
| technologyRound 1 · Chile | Alexis, Amparo, Guillermo · 6 | 25 / 25 | 8 / 8 | 5 M |
CISO-1Fixed and verified
The key expected Amparo's record to carry an empty list of what was reviewed, and Amparo did not write the field because she reviewed nothing to set aside. The harness graded it as wrong, although both forms say the same.
The harness accepts a list the key expects empty when the record leaves it out. The Colombian bank run was regraded, with no commands repeated: 8 of 8 fields.
the test harness · banking · Colombia · 2777ad04
CISO-2Fixed and verified
Alexis's, Guillermo's and Amparo's runs left no page or entry in `.criterio/corridas/`: the hook fired, but the trail did not know the area of the CISO plugins, nor of the CCO ones. No signal or field changed; Rostrum had nothing to show for those runs.
The trail knows the area and name of the five plugins, with its test, and synchronization fails if a plugin with the hook is missing from the trail. The Colombian control entity, set up after the fix, left its runs.
the code · banking · Colombia · 2777ad04
CISO-3Fixed and verified
In both control entities, Alexis listed among what was reviewed the credentials, the key and the backup that the engine excludes. She did not open them —her reason says «not opened»—, but the list stopped being what was looked at and set aside, and the field was graded as wrong.
The skill for Alexis's record, and the one for Amparo's, say that what the engine excludes does not go on that list: `seguridad.py excluidos` already lists it, and that is what the report cites. Alexis's setup and scan were repeated on both controls: 8 of 8 fields on each.
the agent’s instructions · control entity · Colombia · 3bd3af0e
CISO-4Fixed and verified
Guillermo reported it during his setup: `convertir` left in the cache a text copy of a credentials file the engine had already excluded. The agent did not open it, but the exclusion of credentials, keys and backups has to hold for conversion as well.
`convertir` receives the CISO engine's list of excluded files and neither opens nor copies any: they go to the manifest as not converted, with their reason. The engine's test requires it. Verified with the engine installed after the fix, on the Colombian control: the credential stayed in the manifest as excluded and was not copied.
the code · banking · Colombia · 21363181
Synthetic material from banking (Colombia), retail (Mexico), healthcare (Peru), technology (Chile), plus 2 control entities with no defects: 6 entities with their statement of applicability and the evidence of their controls, three scanner exports and the KEV catalog, their incidents with their notifications and their continuity calendar, and a key the engine never sees.
100
signals planted on purpose, each with its key
16 of 16
family signals planted at least once
2
control entities, where any signal is a failure
The engine raises every expected signal and none extra, and the gate that checks it runs on every change to the repository. The material also tests the rules of real operation: four scanner export shapes —a CSV with English headers, an Excel file with Spanish headers, a CSV whose headers need mapping and one with the CVSS score and no severity—, and that in every entity a private key, a credentials file and a backup stay out without any result keeping their content. The CVEs in the material carry the year 2099: none is a real vulnerability.
What comes next
A results page that only says what passed is advertising. What makes it auditable is what it says is not known yet.
Roadmap
Each increment is a version with its full test and its statistical analysis published, with the same metrics, so the evolution can be compared. Versions add up: the latest released one carries everything before it and the fixes for what its tests found.
LaboratoryIts evidence says so, not its number: it is tested on synthetic material and can be used, but it does not yet reach the 95% floor for signals or for data, or a control raised a signal. Every later version carries everything before it. Each whole number has ten versions, from x.0 to x.9; then comes x+1.0.
0.1.0
ReleasedReleased on 2026-10-30
Alexis, Guillermo and Amparo, built, with the engine tested
Test
The engine against the key of all the material: six entities from four industries, with their controls
Latest released
0.2.0
ReleasedReleased on 2026-10-30
Carries everything before it, with its fixes
The round of the three agents
Test
The full round, with the 95% confidence floor on signals and data (decision 0020)
0.3.0
In progressThe scanners, each from its source
Test
Their material and their round, with the same metrics
The same roadmap lives in the repository, in families/criterio-ciso/hoja-de-ruta.json.
How they work
Five steps and one boundary. The language model (LLM) extracts what only a written document carries; the code calculates everything else. It is generative AI plus a deterministic engine, applied to information security.
Your documents and exports
The statement of applicability, each control’s evidence, the access reviews, the third-party assessments, the risk register, the scanner exports with the KEV catalog, the incident reports with their records and the report of every continuity test. As they are, where they are.
It runs no scan and connects to no system.
The model extractsThe inventory
The engine walks the folder and leaves out credentials, keys and backups by default. It processes each table and each scanner export from its format, in CSV or Excel. What it cannot process it declares, with the reason.
A column it does not recognise is asked about, not guessed.
The model extractsThe record
One per entity and period for each agent: each control’s evidence with the date it covers, each access review and each third-party assessment; each incident with its timeline and its notifications, each post-incident review and each test, every data point with its citation.
“Not found” is a valid answer.
The model extractsThe engine
Each control against its evidence and its frequency, each review and assessment against its frequency, each vulnerability against its severity’s deadline and the KEV catalog’s date, each closure against the scan that proves it, each incident against its containment, notification and review deadlines, and each test against its calendar.
Deterministic and tested.
The code calculatesSignals
Only what crossed a threshold: the control without evidence, the vulnerability past its deadline, the late notification, the overdue test. If nothing crossed one, it says nothing.
Silence is the feature.
The code calculatesNo deadline, day, hour or count in a report comes from an estimate. And what is said nowhere is declared, not filled in.
Why this boundary matters →Seven invariants that hold them up
The agents never talk to each other
They share the entity’s folder and reference, and each writes only its own record.
Rostrum does not write
It serves what the engine already wrote, with its date, and recalculates nothing. Guillermo’s work does not appear there unless the configuration says so.
Documents, never systems
No agent runs a scan, or connects to a console or to the internet.
What is never opened stays closed
Credentials, keys and backups stay out by default, and every report says which ones it excluded.
The model extracts, the code calculates
Every deadline, day, hour or count in a report comes from the engine. If the engine does not give it, it is not written.
The deadlines belong to the organisation
They come from its policy, its matrix and its registers, with their citation. The only external inputs are the remediation date the KEV catalog carries and the CVSS scale when the scanner gives the score and not the severity.
No agent decides
Accepting a risk, approving an exception, notifying and declaring a control met belong to a person.
The detail
The commands with their input, process and report; the signals the code calculates; the folder structure; the sources, and the links to the repository.
In order of importance. The first one sets up the configuration the others need.
security-setupThe configuration, the inventory and what was excluded
00-referencia/ is and which column carries the control, whether it applies, its status, its owner and its frequency, the systems table with how often their access is reviewed, the third-party register with the critical ones and how often they are assessed, and the risk register in 40-riesgos/security-scanThe period record up to date, with the new evidence and the new signals
10-controles/, 20-accesos/ and 30-terceros/10-controles/ with its control and the date it covers, each review in 20-accesos/ with its system, its date and who reviewed it, and each assessment in 30-terceros/ with its third party, its date and its result, every data point with its citation; the engine validates the record and says which document is not in itsoa-statusEach applicable control with its owner
00-referencia/control-evidenceEach control against the evidence that it operated
access-reviewsEach system with its access review current or overdue
00-referencia/ and the period recordthird-partiesEach critical third party with its assessment current or overdue
00-referencia/ and the period recordrisk-registerEach risk acceptance against its review date
40-riesgos/security-wakeWhat was due today, run
share-findingsA summary with no data to share, only if you say yes
.criterio/corridas/In order of importance. The first one sets up the configuration the others need.
vuln-setupThe configuration, with the policy's deadlines, and the format of each export
00-referencia/, which scanner produces the exports in 50-escaneos/ and, if their columns are not recognised, which column carries the asset, the vulnerability, the severity or the CVSS score and the first detection, how many days without a scan leave an asset uncovered, and whether its reports are published in Rostrumvuln-scanWhat is open, up to date, with the new signals
50-escaneos/ and 60-remediacion/vuln-slaEach open vulnerability against the policy's deadline
50-escaneos/, the exceptions in 60-remediacion/ and the deadlines in the configurationkev-checkEach exploited vulnerability still open
50-escaneos/ and CISA's KEV catalog (F-06)scan-coverageEach asset with its scan, and each closure with the scan that proves it
00-referencia/, the exports in 50-escaneos/ and the tracker in 60-remediacion/vuln-wakeWhat was due today, run
share-findingsA summary with no data to share, only if you say yes
.criterio/corridas/In order of importance. The first one sets up the configuration the others need.
resilience-setupThe configuration, with the policy's deadlines
00-referencia/, the notification matrix with each recipient, when it applies and its deadline, and the continuity calendar with each test, its type and its frequencyresilience-scanThe period record up to date, with the new incidents, reviews and tests
70-incidentes/, 80-revisiones/ and 90-continuidad/70-incidentes/ with its severity, the detection, containment and closure with their time, whether personal data or customers were affected, and each notification with its recipient, its time and its record; each review in 80-revisiones/ and each test in 90-continuidad/ with its date and result; every data point with its citation (F-04); the engine validates the recordincident-timelineEach incident against its severity's deadline and its review
notificationsEach notification the matrix requires, on time, late or not made
00-referencia/ and the period recordcontinuity-testsEach test against its calendar
00-referencia/ and the period recordresilience-wakeWhat was due today, run
share-findingsA summary with no data to share, only if you say yes
.criterio/corridas/16 signals. Each is raised with the control, system, third party, vulnerability, asset, incident or test that causes it, and the citation of the document; the deadlines come from each entity’s policy, matrix and registers, with their citation.
Alexis · 6
control_without_evidenceAn applicable control in the statement is marked as implemented and has no evidence that it operated
control_evidence_staleThe latest evidence of a periodic control is older than its frequency
soa_control_unassignedAn applicable control has no owner
access_review_overdueA system's access review is past its date, or there is none
third_party_assessment_overdueA critical third party's security assessment is past its date, or there is none
risk_acceptance_expiredA risk acceptance is past its review date
Guillermo · 5
vuln_past_slaA vulnerability is still open past its severity's deadline in the policy, with no current exception
kev_past_dueA vulnerability in the KEV catalog is still open past its remediation date
vuln_closed_without_rescanA vulnerability is marked closed and no later scan shows it fixed
vuln_exception_expiredA remediation exception is past its expiry and the vulnerability is still open
asset_not_scannedAn inventory asset does not appear in any scan within the configured window
Amparo · 5
incident_response_lateAn incident was contained after its severity's deadline in the policy, or is still not contained past it
incident_notification_lateA notification the matrix requires —to the supervisor, the data authority, the customers— was made late or not at all
incident_without_reviewA closed incident has no post-incident review within the deadline
continuity_test_overdueThe continuity or recovery plan test is past its date, or there is none
restore_test_overdueA critical backup's restore test is past its date, or there is none
Recommended, not mandatory: the agents process the folder as it is. Setup says which file is out of place and where it would go, without creating, moving or renaming anything. It looks for the entity’s security folder, proposes it with its reason and, if you say yes, marks it with a visible file, _CRITERIO_SEGURIDAD.txt. Credentials, keys and backups are excluded by default and never opened; every report says which ones it excluded. They write nothing else among your documents: what they find goes in their state, apart.
One folder per entity, with its tax id at the start of the name. Inside it, the policies and reference registers, each control's evidence, the access reviews, the third-party assessments, the risk register, the scanner exports, the remediation, the incidents, their reviews and the continuity tests. Never credentials, keys or backups: the engine excludes them.
seguridad/
└── <entidad>/
├── 00-referencia/
├── 10-controles/
├── 20-accesos/
├── 30-terceros/
├── 40-riesgos/
├── 50-escaneos/
├── 60-remediacion/
├── 70-incidentes/
├── 80-revisiones/
└── 90-continuidad/
estado-seguridad/<entidad>/ · What the organisation keeps for all of its information security
| Folder | What goes there | Agent |
|---|---|---|
00-referencia/ | The policies —security, vulnerability management and incident response—, the statement of applicability, the systems table, the third-party register, the asset inventory, the notification matrix and the continuity calendar | Alexis, Guillermo, Amparo |
10-controles/ | Each control's evidence, with the control number at the start of the name and the period it covers: the report, log, screenshot or minutes that show the control operated | Alexis |
20-accesos/ | Each system's access reviews, with the system and the date in the name | Alexis |
30-terceros/ | Each third party's security assessments: the questionnaire, report or attestation it delivered, with its date | Alexis |
40-riesgos/ | The risk register, with the decision on each risk, who accepted it and until when, and each acceptance's document | Alexis |
50-escaneos/ | The vulnerability scanner's exports, in CSV or Excel, with the scan date in the name, and CISA's KEV catalog as downloaded | Guillermo |
60-remediacion/ | The remediation tracker —each vulnerability with its status and closing date— and the exceptions register with its approval and expiry | Guillermo |
70-incidentes/ | Each incident's report, with its timeline —detection, containment and closure— and every notification made, with its record | Amparo |
80-revisiones/ | Each incident's post-incident review: the lessons learned and the actions that come out of them | Amparo |
90-continuidad/ | The report of each test of the continuity plan, of the recovery plan and of each backup restore, with its date and its result | Amparo |
estado-seguridad/ · What Alexis, Guillermo and Amparo write: the configuration, each period's record, the reports and the indexes. No person edits it, and no agent writes anywhere else.
The role, from O*NET; the family’s order, from NIST CSF 2.0; incident response, from NIST SP 800-61 Rev. 3; severity, from the CVSS v4.0 scale, and the KEV catalog, from the file CISA publishes, field by field. No country’s law enters the calculation. ISO/IEC 27001 and BOD 26-04 are still to be verified, and the engine rests on neither.
O*NET · 15-1212.00 Information Security Analysts
Datos de 2026 (O*NET OnLine) · onetonline.org ↗
NIST · The NIST Cybersecurity Framework (CSF) 2.0 · NIST CSWP 29
Publicado el 26 de febrero de 2024 · nist.gov ↗ · nvlpubs.nist.gov ↗
ISO/IEC 27001:2022 · Anexo A
La edición de 2022, con sus 93 controles en cuatro grupos (5 a 8) · iso.org ↗
NIST · SP 800-61 Rev. 3 · Incident Response Recommendations and Considerations for Cybersecurity Risk Management: A CSF 2.0 Community Profile
Publicada el 3 de abril de 2025; reemplaza la Rev. 2 · nist.gov ↗ · nvlpubs.nist.gov ↗
FIRST · Common Vulnerability Scoring System v4.0 · Specification Document
CVSS 4.0, publicado el 1 de noviembre de 2023; documento versión 1.2 · first.org ↗
CISA · Known Exploited Vulnerabilities Catalog · el archivo CSV
El archivo publicado al 28 de octubre de 2026, con doce columnas · github.com/cisagov/kev-data ↗
CISA · Binding Operational Directive 26-04 · Prioritizing Security Updates Based on Risk
Emitida el 10 de junio de 2026; revoca y reemplaza la BOD 22-01 · fedramp.gov ↗
Installation, setup and terms
Three steps, and none of them asks you to edit a file. Install only the agent for the role you have: Alexis, Guillermo and Amparo each work without the others. If you install all three, they find each other through the entity’s state and share the reference in 00-referencia/: there is nothing to connect.
To receive every new version, turn on auto-update once: in /plugin, Marketplaces → criterio → Enable auto-update. Without it, the installed version does not change on its own.
What it needs from you
Each agent comes with its own setup command. It looks at your folders, asks a few questions and shows you a first result on your own documents.
/criterio-security:security-setup
How it asks
None of them schedules itself. Each comes with the command a clock calls (security-wake, vuln-wake, resilience-wake), and someone sets it once as a scheduled task. If your organisation does not want unattended runs, they are run by hand.
Nobody reads a disclaimer in a repository. So the warning reaches the person who runs the agent and the person who later receives the document, in four layers that every agent implements.
One acceptance per version
Every version of the family is accepted again and leaves on your machine a receipt in Markdown and PDF, with the SHA-256 fingerprint of the terms and of the receipt itself. Until the one for the installed version is recorded, the agent answers questions but produces no full analysis. It never assumes it or infers it from you continuing to talk.
On every report
Every report carries a footer saying it is a draft, based on which documents, how many fields had no data and how many contradictions remain open. The document travels by email and reaches a committee: the warning travels with it.
At the start of every run
Before the first finding it says which records it loaded, when they were refreshed, and whether any is stale or missing.
In the legal notice
The full terms, the legal notice and the version register —what changed in each version, which terms govern it and their fingerprint— are published on this site, and every receipt points to them.
What you agree to, in plain words
Terms version 1.3, of 2026-10-28, for version 0.2.0 of the family. Every new version of the family asks for acceptance again.
Legal notice and version register →Apache 2.0
The method, the record schema, the code that computes and the acceptance criteria, in full and with no conditions. Use it inside your organisation without asking, adapt it, and build the capability you are missing: the agent for a function should be written by someone who knows the work.
What it does not do
Frequently asked questions
What it is
Alexis puts every control in the statement of applicability next to the evidence that it operated, and says which access review, critical third-party assessment and risk acceptance lapsed. Guillermo puts every scanner vulnerability next to its severity's deadline, the KEV catalog of what is exploited and the scan that proves its closure. Amparo puts every incident next to its severity's containment deadline and every notification the matrix requires, and every continuity test next to its calendar.
No. They process and contrast. Accepting a risk, approving an exception, notifying a supervisor and declaring a control met are always decided by a person.
No. They do not rate maturity or certify against any standard. They take the controls from the organisation's statement of applicability, with the number and name it gives them, and say which one has no evidence that it operated.
They do not run a scan, connect to a system, a console or the internet, accept a risk, approve an exception, notify anyone, run a test or a restore, or open credentials, keys or backups.
How it is used
No. They process what the organisation exports and leaves in the folder: the scanner exports in CSV or Excel, the KEV catalog as downloaded, the reports and the registers. A direct connection would be another decision, with its own security review.
Any that exports CSV or Excel. Guillermo recognises the common headers —host, CVE, severity, CVSS— and, if it does not, asks which column carries each field and keeps it in the configuration. The native formats of Tenable, Qualys, Rapid7 and Microsoft Defender come in a later increment, each from its source.
From the organisation's policy. In the setup, the agent reads it and proposes each severity's remediation days or containment hours, with the page they come from, and the person confirms. If the policy does not state them, they are asked. No deadline is set by the agent.
CISA's list of the vulnerabilities being exploited, with their remediation date. Guillermo crosses it with what is open. The date is set by a directive for United States federal agencies: for the organisation it is a reference, and its deadline is still its policy's.
By the time of its record —the filing, the email sent, the acknowledgement— against the deadline in the organisation's matrix, counted from the detection time stated in the incident report.
Each setup command takes about fifteen minutes: it looks at the folder, says what it will not open, asks the questions no document answers and shows the first report.
The family is defined on international standards, not on each country's law: it works the same in any country in the registry. Each country's regulation —the supervisor's circular, the data protection law— goes into the organisation's notification matrix.
The data
No. A key file, a password vault, a database dump, a compressed archive or a file whose name says it is a secret is excluded by default. The report says which it excluded, so the person can take them out of the folder.
No, unless Guillermo's configuration says so. A report of open vulnerabilities is a map for an attacker.
On the infrastructure of the AI platform the agent runs on, not only on your machine. Confirm that is acceptable under your policies before pointing it at confidential material.
Status
It can be installed, and it is a laboratory one, in its version 0.1.0: the engine is tested on synthetic banking, retail, healthcare and technology material, with a key it never sees and two control entities. The round with the three agents is the next step.
Not yet. A family is declared stable when its round with the agents passes the 95% confidence floor on signals and data.
The same answers live in the repository, in families/criterio-ciso/PREGUNTAS.md.
Support the work
Criterio remains open source. A voluntary contribution helps fund testing, documentation and the next capabilities without changing access to the software.
This is a voluntary contribution. It does not unlock features, purchase consulting services or create an advisory relationship.
Support Criterio
Choose an amount and how you want to contribute.
Choose your country to see the payment methods available to you.
dLocal Go currently covers Latin America, Indonesia, Malaysia, Kenya and Nigeria. Global coverage will be added separately.
The idea
What the security policy commits to —reviewing, fixing, notifying, testing— was always written down. Nobody had set it next to the documents that show it was done.
Three agents that process the evidence, the scans and the incidents do not hand you a control you never built, and they certify nothing. They show you which control has no evidence, which vulnerability is past its deadline and which notification was not made on time, and they leave the decision where it was: with a person.
Principles
José Ñáñez