← Agents

Criterio CISO

Information security

Evidence before the decision

Every control, every vulnerability and every incident, next to its evidence and its deadline

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

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

Where the family is tested, and what comes next

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

Round 1ColombiaBanking, Control entityRound 125 of 25 signals · 16 of 16 fields
Round 1PeruHealthcareRound 125 of 25 signals · 8 of 8 fields
Round 1ChileTechnologyRound 125 of 25 signals · 8 of 8 fields
Round 1MexicoRetail, Control entityRound 125 of 25 signals · 16 of 16 fields

The progress map

4 countries tested

Map of Latin America. Tested: Colombia, Peru, Chile, Mexico. Next: . The other countries are not in yet.

Borders: Natural Earth, public domain.

Mexicotested since round 1

What was tested here

Identification

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.

See the 16 situations seeded in its entities

Alexis · 6

  • An applicable control in the statement is marked as implemented and has no evidence that it operated
  • The latest evidence of a periodic control is older than its frequency
  • An applicable control has no owner
  • A system's access review is past its date, or there is none
  • A critical third party's security assessment is past its date, or there is none
  • A risk acceptance is past its review date

Guillermo · 5

  • A vulnerability is still open past its severity's deadline in the policy, with no current exception
  • A vulnerability in the KEV catalog is still open past its remediation date
  • A vulnerability is marked closed and no later scan shows it fixed
  • A remediation exception is past its expiry and the vulnerability is still open
  • An inventory asset does not appear in any scan within the configured window

Amparo · 5

  • An incident was contained after its severity's deadline in the policy, or is still not contained past it
  • A notification the matrix requires —to the supervisor, the data authority, the customers— was made late or not at all
  • A closed incident has no post-incident review within the deadline
  • The continuity or recovery plan test is past its date, or there is none
  • A critical backup's restore test is past its date, or there is none

Latest round: 1

  • Retail25 of 25 signals · 8 of 8 data items

    60 documents · 25 defects seeded on purpose

  • Control entityno signal at all, as it should be · 8 of 8 data items

    49 documents and no defects: any signal would be a failure

Evolution

  1. Round 1 · first time · Retail, Control entity · 25 of 25 signalsno defects
See the evidence, round by round →

The entities and their defects are written in the repository, in tests/criterio-ciso/generar.py.

Criterio · CISO family

Three agents for information security

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 · CISOREADY
ALEXIS
The controls
GUILLERMO
Vulnerabilities
AMPARO
Response
ROSTRUM
The portal
THE ENTITY’S RECORDSThe only contract. Alexis, Guillermo and Amparo never talk to each other: they share the folder and the reference, and each writes only its own record.
PRINTER · CRITERIOSHEET 1

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

Alexis
· from the Greek Aléxios, “the one who defends”: every control against the evidence that it operated
Guillermo
· from the Germanic Wilhelm, “resolute protector”: every vulnerability against the deadline to fix it
Amparo
· from the Latin ante parare, “to prepare ahead, to protect”: every incident against the deadlines that were committed
Rostrum
· from the Latin rostrum, the speakers’ platform of the Roman forum: it holds up what is already written, where others can read it

The three, one at a time

What each one does, what it never does and what its work looks like

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

  • Which applicable control is marked as implemented and has no evidence that it operated
  • Which control’s latest evidence has lapsed for its frequency
  • Which applicable control has no owner
  • Which system’s access review is overdue, or has none
  • Which critical third party’s security assessment is overdue, or has none
  • Which risk acceptance is past its review date

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.

Extends
Whoever answers for information security and prepares the committee or the audit
Instances
One per entity
Setup
15 min, in the conversation
Cadence
When new evidence arrives, when a review or an assessment falls due, and once a week; if nothing is due, it stays quiet
Needs from you
A statement of applicability with an owner per control, and each control leaving its evidence
Set up with/criterio-security:security-setup

Its commands, by group

Start and rhythm3 commands+
security-setupsecurity-wakeshare-findings
The controls3 commands+
security-scansoa-statuscontrol-evidence
Access, third parties and risks3 commands+
access-reviewsthird-partiesrisk-register

9 commands · 3 skills

In Rostrum

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

  1. Alexis runs /criterio-security:security-setup, leaves its configuration in .criterio/seguridad/<entity>/ and marks its root folder with _CRITERIO_SEGURIDAD.txt.
  2. Guillermo runs /criterio-vulnerability:vuln-setup, leaves its configuration in .criterio/vulnerabilidades/<entity>/ and marks its root folder with _CRITERIO_SEGURIDAD.txt.
  3. Amparo runs /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

Home
The Criterio CISO card, with its agents and their open signals; Guillermo’s only if his configuration says so.
The family
The latest from its engine, its signals in words and its reports as they left them.
What is due
The control evidence, access reviews and continuity tests falling due in the next 30 days, next to the other families’ deadlines.
Where it works
The full path of the security folder with its mark, of the state and of the configuration.
Ask
A written question for Alexis, Guillermo or Amparo, who takes it on their next run.
Rostrum: install, configure and use it with every family →

What it costs you today

The work Alexis, Guillermo and Amparo prepare, priced with your own numbers

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.

I work in

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

Whoever answers for the controls
Loaded monthly cost per personFully loaded: salary, benefits and overhead.
USD

Hours per week on each task

Finding the evidence that each applicable control operated within its frequency/control-evidence
h
Chasing each system’s access review/access-reviews
h
Following each critical third party’s assessment/third-parties
h
Reviewing risk acceptances against their date/risk-register
h

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

Annual cost of the work Alexis, Guillermo and Amparo prepare—
Hours a year2,254 h
Annual cost of the people included—
Share of that cost—

Write the monthly cost of each group to see what it costs.

Rostrum, the server, adds no hours here. If the configuration says so, Rostrum puts their reports where the security committee sees them; Guillermo’s do not appear there unless his configuration says so, because a report of open vulnerabilities is a map for an attacker. Its effect is fewer “where is the evidence for this control?” questions before the audit; we do not measure that yet.

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

This is what is already measured, with what sample and what margin.

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.

Alexis, Guillermo and Amparo process the entity’s documentation

Round 1 · 6 entities

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.

healthcare · Perubanking · Colombiaretail · Mexicotechnology · Chilecontrol entity · Colombiacontrol entity · Mexico

Round 11

  1. 1 · Round 1: Alexis, Guillermo and Amparo on banking · Colombia, control entity · Colombia, control entity · Mexico, retail · Mexico, healthcare · Peru and technology · Chile.

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.

CountryEntitiesRoundRecord dataSignals foundCorrect signalsControls without false alarms
Colombia2116 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
Peru118 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%—
Chile118 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%—
Mexico2116 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.

  • 4 Fixed and verified
  • 0 Fixed, to verify
  • 0 Open

Where they came from

  • the code2
  • the test harness1
  • the agent’s instructions1

For auditing

The full detail of every run. Each block opens on its own.

Every run in the round6 runs

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 materialAgent · commandsSignalsRecord dataTokens
bankingRound 1 · ColombiaAlexis, Amparo, Guillermo · 625 / 258 / 85.3 M
control entityRound 1 · ColombiaAlexis, Amparo, Guillermo · 60 / 08 / 85.3 M
control entityRound 1 · MexicoAlexis, Amparo, Guillermo · 60 / 08 / 85.2 M
retailRound 1 · MexicoAlexis, Amparo, Guillermo · 625 / 258 / 85.1 M
healthcareRound 1 · PeruAlexis, Amparo, Guillermo · 625 / 258 / 86 M
technologyRound 1 · ChileAlexis, Amparo, Guillermo · 625 / 258 / 85 M
The defects, one by one4 defects
  • 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

How the engine was tested6 entities

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

  • Round 2 with the agent, on all the material again.
  • The first use on a specific organisation’s documentation.
  • How many hours the agents give back is not measured yet. Until it is, we do not publish it.

A results page that only says what passed is advertising. What makes it auditable is what it says is not known yet.

Roadmap

The family grows in increments, each with its full test

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.

  1. 0.1.0

    Released

    Released on 2026-10-30

    Alexis, Guillermo and Amparo, built, with the engine tested

    • The commands, their seven skills and the engine, with the sixteen signals: Alexis's controls, access, third parties and risks; Guillermo's vulnerabilities, KEV catalog and coverage; Amparo's incidents, notifications and tests
    • Any scanner export in CSV or Excel with its column mapping, severity from CVSS v4.0 and CISA's KEV catalog
    • What is never opened: credentials, keys and backups, excluded by default
    • Banking, retail, healthcare and technology material, with two control entities

    Test

    The engine against the key of all the material: six entities from four industries, with their controls

  2. Latest released

    0.2.0

    Released

    Released on 2026-10-30

    Carries everything before it, with its fixes

    The round of the three agents

    • The round with Alexis, Guillermo and Amparo on all the material, with the key they never see
    • The defects it finds, with their fix and their verification

    Test

    The full round, with the 95% confidence floor on signals and data (decision 0020)

  3. 0.3.0

    In progress

    The scanners, each from its source

    • The export format of Tenable, Qualys, Rapid7 and Microsoft Defender, each from its verified source, as Dynamics and Zoho entered the CCO

    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.

  1. 01

    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 extracts
  2. 02

    The 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 extracts
  3. 03

    The 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 extracts
  4. 04

    The 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 calculates
  5. 05

    Signals

    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 calculates

No 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

01

The agents never talk to each other

They share the entity’s folder and reference, and each writes only its own record.

02

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.

03

Documents, never systems

No agent runs a scan, or connects to a console or to the internet.

04

What is never opened stays closed

Credentials, keys and backups stay out by default, and every report says which ones it excluded.

05

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.

06

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.

07

No agent decides

Accepting a risk, approving an exception, notifying and declaring a control met belong to a person.

The detail

For whoever wants to review all of it

The commands with their input, process and report; the signals the code calculates; the folder structure; the sources, and the links to the repository.

Alexis’s commands9 commands

In order of importance. The first one sets up the configuration the others need.

  1. 0security-setup

    The configuration, the inventory and what was excluded

    Input
    The root folder. Questions: entity and its tax ID, country, the period, where the statement of applicability in 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/
    Process (calculated by the code)
    Inventory of what is there; lists what it excludes as a credential, key or backup; recognises each table's columns; compares the folder with the recommended structure; creates, moves or renames nothing
    Report
    Configuration saved; inventory by folder; what was excluded and why; the missing columns; the period's first record
  2. 1security-scan

    The period record up to date, with the new evidence and the new signals

    Input
    The whole 10-controles/, 20-accesos/ and 30-terceros/
    Process (calculated by the code)
    The agent takes to the period record each piece of evidence in 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 it
    Report
    What went into the record; the documents not yet in it; the new signals; what could not be processed and why
  3. 2soa-status

    Each applicable control with its owner

    Input
    The statement of applicability in 00-referencia/
    Process (calculated by the code)
    Each control in the statement with whether it applies, its status, its owner and its frequency; the engine does not rate maturity or declare a control met
    Report
    The applicable controls without an owner, with their row; the full statement
  4. 3control-evidence

    Each control against the evidence that it operated

    Input
    The statement of applicability and the period record
    Process (calculated by the code)
    Each applicable control marked as implemented against the evidence in the record: whether it has any, and whether the latest falls within its frequency
    Report
    The controls without evidence and those whose evidence has lapsed, each with its citation and its owner
  5. 4access-reviews

    Each system with its access review current or overdue

    Input
    The systems table in 00-referencia/ and the period record
    Process (calculated by the code)
    Each system against how often its access must be reviewed: the latest review in the record and when the next one was due
    Report
    The systems with an overdue review or none at all, with their citation
  6. 5third-parties

    Each critical third party with its assessment current or overdue

    Input
    The third-party register in 00-referencia/ and the period record
    Process (calculated by the code)
    Each critical third party against how often its security must be assessed: the latest assessment in the record, its result and when the next one was due
    Report
    The critical third parties with an overdue assessment or none at all, with their citation
  7. 6risk-register

    Each risk acceptance against its review date

    Input
    The risk register in 40-riesgos/
    Process (calculated by the code)
    Each risk with its decision; the accepted ones against their review date. The agent never accepts or closes a risk
    Report
    The acceptances past their review date, with who accepted them and their row
  8. 7security-wake

    What was due today, run

    Input
    The state and the new documents
    Process (calculated by the code)
    If there are new documents or a week has passed, the full review; if there are open signals, their group's report; a question somebody left in Rostrum
    Report
    What ran and why, or that nothing was due
  9. 8share-findings

    A summary with no data to share, only if you say yes

    Input
    The local trail of this agent's runs, in .criterio/corridas/
    Process (calculated by the code)
    The code builds a summary with no data —the plugin and its version, each command with how many times it ran and its median duration, each signal by its code with how many times it came up— and always asks whether you want to share it; nothing is sent (decision 0025)
    Report
    The summary as is and, with a yes, the link to the repository's finding template, which the person opens
Guillermo’s commands7 commands

In order of importance. The first one sets up the configuration the others need.

  1. 0vuln-setup

    The configuration, with the policy's deadlines, and the format of each export

    Input
    The root folder. Questions: entity and its tax ID, country, the period, the remediation deadline for each severity in the vulnerability management policy in 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 Rostrum
    Process (calculated by the code)
    Inventory of what is there; lists what it excludes; recognises the columns of each scanner export and of the KEV catalog (F-06); the agent extracts each severity's deadline from the policy, with its citation; creates, moves or renames nothing
    Report
    Configuration saved, with the deadlines and their citation; inventory by folder; each export with its date, its assets and its findings; the missing columns
  2. 1vuln-scan

    What is open, up to date, with the new signals

    Input
    The whole 50-escaneos/ and 60-remediacion/
    Process (calculated by the code)
    The code processes each export with its date: what is open is what each asset's latest scan found, with the date it was first detected; the severity is the scanner's or, if it only gives the score, the CVSS scale's (F-05); it crosses the KEV catalog (F-06), the tracker and the exceptions
    Report
    The scans with their assets and findings; what is open; the KEV catalog used; the new signals; what could not be processed and why
  3. 2vuln-sla

    Each open vulnerability against the policy's deadline

    Input
    The exports in 50-escaneos/, the exceptions in 60-remediacion/ and the deadlines in the configuration
    Process (calculated by the code)
    Each open vulnerability against its severity's deadline, counted from its first detection; a current exception suspends it; an expired exception on something still open is a signal
    Report
    The vulnerabilities past their deadline and the expired exceptions, each with its asset, its severity, its days and its citation
  4. 3kev-check

    Each exploited vulnerability still open

    Input
    The exports in 50-escaneos/ and CISA's KEV catalog (F-06)
    Process (calculated by the code)
    Each open vulnerability whose CVE is in the catalog, against the remediation date the catalog gives; says whether its use in ransomware is known
    Report
    The catalog's vulnerabilities still open past their date, with their asset and their citation
  5. 4scan-coverage

    Each asset with its scan, and each closure with the scan that proves it

    Input
    The asset inventory in 00-referencia/, the exports in 50-escaneos/ and the tracker in 60-remediacion/
    Process (calculated by the code)
    Each in-scope inventory asset against the latest scan that includes it and the configured window; each vulnerability closed in the tracker against the scans after its closure
    Report
    The assets with no scan in the window; the closures no later scan proves or that the scan still finds; what was scanned outside the inventory
  6. 5vuln-wake

    What was due today, run

    Input
    The state and the new documents
    Process (calculated by the code)
    If a new export, catalog or tracker arrived, or a week has passed, the full review; if there are open signals, their group's report; a question somebody left in Rostrum
    Report
    What ran and why, or that nothing was due
  7. 6share-findings

    A summary with no data to share, only if you say yes

    Input
    The local trail of this agent's runs, in .criterio/corridas/
    Process (calculated by the code)
    The code builds a summary with no data —the plugin and its version, each command with how many times it ran and its median duration, each signal by its code with how many times it came up— and always asks whether you want to share it; nothing is sent (decision 0025)
    Report
    The summary as is and, with a yes, the link to the repository's finding template, which the person opens
Amparo’s commands7 commands

In order of importance. The first one sets up the configuration the others need.

  1. 0resilience-setup

    The configuration, with the policy's deadlines

    Input
    The root folder. Questions: entity and its tax ID, country, the period, the containment deadline for each severity and the days for the post-incident review in the incident response policy in 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 frequency
    Process (calculated by the code)
    Inventory of what is there; lists what it excludes; the agent extracts each severity's deadline and the post-incident review's from the policy, with their citation; recognises the matrix's and the calendar's columns; creates, moves or renames nothing
    Report
    Configuration saved, with the deadlines and their citation; inventory by folder; the missing columns; the period's first record
  2. 1resilience-scan

    The period record up to date, with the new incidents, reviews and tests

    Input
    The whole 70-incidentes/, 80-revisiones/ and 90-continuidad/
    Process (calculated by the code)
    The agent takes to the period record each incident in 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 record
    Report
    What went into the record; the documents not yet in it; the new signals; what could not be processed and why
  3. 2incident-timeline

    Each incident against its severity's deadline and its review

    Input
    The period record and the deadlines in the configuration
    Process (calculated by the code)
    Each incident: the hours from detection to containment against its severity's deadline, and its post-incident review against the policy's days from closure
    Report
    The incidents contained late or not contained, and the closed ones without a review or reviewed late, with their citation
  4. 3notifications

    Each notification the matrix requires, on time, late or not made

    Input
    The notification matrix in 00-referencia/ and the period record
    Process (calculated by the code)
    Each incident against every row of the matrix that applies to it —by its severity, personal data or affected customers—: the recorded notification and its time against the deadline from detection. The agent notifies no one
    Report
    The late notifications and the ones never made, with their recipient, their rule and their citation
  5. 4continuity-tests

    Each test against its calendar

    Input
    The continuity calendar in 00-referencia/ and the period record
    Process (calculated by the code)
    Each test in the calendar —the continuity plan, the recovery plan, each critical backup's restore— against its frequency: the latest in the record, its result and when the next one was due
    Report
    The tests that are overdue or never done, with restores apart, with their citation
  6. 5resilience-wake

    What was due today, run

    Input
    The state and the new documents
    Process (calculated by the code)
    If a new incident, review or test arrived, or a week has passed, the full review; if there are open signals, their group's report; a question somebody left in Rostrum
    Report
    What ran and why, or that nothing was due
  7. 6share-findings

    A summary with no data to share, only if you say yes

    Input
    The local trail of this agent's runs, in .criterio/corridas/
    Process (calculated by the code)
    The code builds a summary with no data —the plugin and its version, each command with how many times it ran and its median duration, each signal by its code with how many times it came up— and always asks whether you want to share it; nothing is sent (decision 0025)
    Report
    The summary as is and, with a yes, the link to the repository's finding template, which the person opens
What the code calculates16 signals

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_evidence

    An applicable control in the statement is marked as implemented and has no evidence that it operated

  • control_evidence_stale

    The latest evidence of a periodic control is older than its frequency

  • soa_control_unassigned

    An applicable control has no owner

  • access_review_overdue

    A system's access review is past its date, or there is none

  • third_party_assessment_overdue

    A critical third party's security assessment is past its date, or there is none

  • risk_acceptance_expired

    A risk acceptance is past its review date

Guillermo · 5

  • vuln_past_sla

    A vulnerability is still open past its severity's deadline in the policy, with no current exception

  • kev_past_due

    A vulnerability in the KEV catalog is still open past its remediation date

  • vuln_closed_without_rescan

    A vulnerability is marked closed and no later scan shows it fixed

  • vuln_exception_expired

    A remediation exception is past its expiry and the vulnerability is still open

  • asset_not_scanned

    An inventory asset does not appear in any scan within the configured window

Amparo · 5

  • incident_response_late

    An incident was contained after its severity's deadline in the policy, or is still not contained past it

  • incident_notification_late

    A notification the matrix requires —to the supervisor, the data authority, the customers— was made late or not at all

  • incident_without_review

    A closed incident has no post-incident review within the deadline

  • continuity_test_overdue

    The continuity or recovery plan test is past its date, or there is none

  • restore_test_overdue

    A critical backup's restore test is past its date, or there is none

The folder structureseguridad/

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

FolderWhat goes thereAgent
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 calendarAlexis, 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 operatedAlexis
20-accesos/Each system's access reviews, with the system and the date in the nameAlexis
30-terceros/Each third party's security assessments: the questionnaire, report or attestation it delivered, with its dateAlexis
40-riesgos/The risk register, with the decision on each risk, who accepted it and until when, and each acceptance's documentAlexis
50-escaneos/The vulnerability scanner's exports, in CSV or Excel, with the scan date in the name, and CISA's KEV catalog as downloadedGuillermo
60-remediacion/The remediation tracker —each vulnerability with its status and closing date— and the exceptions register with its approval and expiryGuillermo
70-incidentes/Each incident's report, with its timeline —detection, containment and closure— and every notification made, with its recordAmparo
80-revisiones/Each incident's post-incident review: the lessons learned and the actions that come out of themAmparo
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 resultAmparo

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 sources5 of 7 verified

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.

  • F-01

    O*NET · 15-1212.00 Information Security Analysts

    Datos de 2026 (O*NET OnLine) · onetonline.org ↗

    Verified
  • F-02

    NIST · The NIST Cybersecurity Framework (CSF) 2.0 · NIST CSWP 29

    Publicado el 26 de febrero de 2024 · nist.gov ↗ · nvlpubs.nist.gov ↗

    Verified
  • F-03

    ISO/IEC 27001:2022 · Anexo A

    La edición de 2022, con sus 93 controles en cuatro grupos (5 a 8) · iso.org ↗

    To be verified
  • F-04

    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 ↗

    Verified
  • F-05

    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 ↗

    Verified
  • F-06

    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 ↗

    Verified
  • F-07

    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 ↗

    To be verified
In the repository9 links

Installation, setup and terms

It installs in minutes. Before the first analysis, you accept the 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.

Step 1

Install

  1. 01Customize → Browse plugins → Personal.
  2. 02Press + → Add marketplace from GitHub.
  3. 03Enter josenanez/criterio.
  4. 04Install the agent for your role: Alexis (Governance and controls), Guillermo (Vulnerabilities) or Amparo (Response and recovery).

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

  • A folder with the documentation, as it is. A messy folder is the normal case.
  • A paid Claude plan, and the desktop app if the documents live on your machine.
  • Fifteen minutes for each one.
Step 2

Set up

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

  1. 1Which of the folders it finds is the entity’s security folder
  2. 2The entity, its tax ID, its country and the period
  3. 3Where the statement of applicability is and which column carries the control, whether it applies, its status, its owner and its frequency
  4. 4The systems table, with how often their access is reviewed
  5. 5The third-party register, with the critical ones and how often they are assessed
  6. 6The terms

How it asks

  • One question at a time. Never a form.
  • Every question comes with a suggested answer, and “I don’t know” is a valid answer.
  • It does not ask what it can find out by looking at the folder.
  • It does not ask you to type a path: it searches for the folder, offers it with the reason and, if you say yes, marks it with a visible file so you recognise it at a glance.
  • Nobody edits the configuration by hand: if you want to change something, you say so in the conversation.

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.

/criterio-vulnerability:vuln-setupWhat Guillermo’s setup looks like
GuillermoI am Guillermo, Criterio’s vulnerabilities. I put every vulnerability next to its deadline; I do not run scans or connect to any console. I found a folder that looks like an entity’s security folder: seguridad/901555123-banco-cordillera-sintetico, with three scanner exports, from 20 August, 20 September and 10 October, and the KEV catalog. Is that the one?
An illustrative walk-through on the family’s test material, as Guillermo’s setup did it in its first round: a test bank in Colombia, with three scanner exports, the KEV catalog and its vulnerability management policy. Nothing leaves your browser.
Step 3

The terms

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.

  1. 1

    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.

  2. 2

    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.

  3. 3

    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.

  4. 4

    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

  • You get working drafts ready for review, and every version arrives tested: its evidence is public.
  • Every data point carries its citation: whoever decides checks it in the original document in seconds.
  • It works with what is written; what was agreed outside the documents comes from your team.
  • Your documents are processed on the AI platform where you run it; your organisation decides which folders go in.
  • Warranty and liability: those of the Apache 2.0 licence.
  • Every version is accepted again and leaves a receipt in Markdown and PDF. If anyone modifies it, its SHA-256 fingerprint stops matching and it is void.

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

  • It produces working drafts, not decisions.
  • It knows what was written, not what was said outside the documents.
  • All three were tested with the engine and with the agents on 6 entities in Colombia, Mexico, Peru and Chile; the latest round is round 1. Their first use on a specific organisation’s documentation is the next step.
See the repository ↗

Frequently asked questions

What people usually ask when they reach the family

What it is

What do Alexis, Guillermo and Amparo do?

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.

Do they replace the security lead?

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.

Do they certify my organisation against ISO/IEC 27001?

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.

What do they never do?

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

Do they connect to my scanner or my SIEM?

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.

Which scanner works?

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.

Where do the deadlines come from?

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.

What is the KEV catalog?

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.

How does it know a notification was late?

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.

How long until the first result?

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.

Which countries does it work in?

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

Do they open my credentials or my backups?

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.

Are vulnerabilities published in Rostrum?

No, unless Guillermo's configuration says so. A report of open vulnerabilities is a map for an attacker.

Where are my documents processed?

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

Is it ready to use?

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.

Is it stable?

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

If Criterio created value for you, help keep it moving.

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 an amount

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

Approach
Documents and exports, never systems, on international standards and not on each country’s law.
Commitment
Generating, sharing and preserving knowledge is a professional obligation.
What it is not
It does not replace the head of security or their team, and does not decide for them: it does not accept risks, declare a control met, approve exceptions, notify anyone, rate maturity or certify against any standard.
Licence
Apache 2.0.
What comes next
The full round with all three agents, in 0.2.0. What follows is in its roadmap.
Legal notice and version register →

José Ñáñez