Regixo docs
🔧 For the engineer·Reference·see the whole journey ↗
Reference

Errors & fixes

Every Regixo error carries a stable code a script or regixo doctor can act on, a human message, and — where there is one — a fix. The codes are a contract: they are never renamed, only added.

Machine output puts the code and remedy under error.code and error.fix; regixo help --json lists the whole registry. The tables below carry the exact message and fix strings for each code, grouped by where you meet them.

Agent rails These codes exist so an autonomous agent (or your CI) reads a fact instead of guessing. regixo doctor resolves and probes your setup, then prints the matching fix.

Setup & config

CodeWhat it meansFix
NODE_VERSION_UNSUPPORTED This Node version is older than the 22.18 floor Regixo needs. nvm install 22 (or upgrade Node with your installer), then run the command again.
CONFIG_NOT_FOUND No regixo.yml configuration was found. Copy regixo.yml.example to regixo.yml in this folder (it is read before .regixo/regixo.yml) and edit it, or set REGIXO_CONFIG to its path.
CONFIG_INVALID regixo.yml could not be parsed. Check the YAML syntax against regixo.yml.example; run regixo doctor.
CONFIG_INPUT_INVALID The regixo config input was invalid. Usage: regixo config to view settings, or regixo config catalog-only <on|off> to change one.
PORT_IN_USE The server port is already in use. Stop the other process, or pass --port (or set REGIXO_HTTP_PORT for open / REGIXO_CLAIM_PORT for serve-claim) to a free port.
SCHEMA_MIGRATION_REQUIRED The local store schema is out of date. Run the store migration, or delete the local .regixo store to re-scan from scratch.
DATA_KEY_INVALID REGIXO_DATA_KEY is set but is not a 32-byte key. Generate one with node -e "console.log(require('node:crypto').randomBytes(32).toString('base64'))" and set REGIXO_DATA_KEY to it (base64 or 64-char hex).
CONFIRM_REQUIRED This permanently deletes something, so it was not done. If you really want this, run the same command again with --yes on the end. It cannot be undone.

Sources

CodeWhat it meansFix
NO_SOURCES No sources are configured in regixo.yml. Add at least one source (id, kind, driver, connectionRef) — see regixo.yml.example.
NO_SOURCE_DETECTED No data source was found to scan (no source is connected yet). Set DATABASE_URL=postgres://… and re-run regixo start, or run regixo add postgres.
ADD_INPUT_INVALID The regixo add input was invalid. Usage: regixo add postgres --ref DATABASE_URL --label "App DB" [--region eu-central-1] [--role controller] [--yes].
CONNECTOR_INPUT_INVALID The regixo connectors input was invalid. Usage: regixo connectors list, regixo connectors new <name>, or regixo connectors --skill (the agent playbook). A name may only use letters, digits, - and _, and can’t be a built-in kind.
CONNECTOR_EXISTS A connector file with that name already exists. Pick another name, edit the existing file in regixo-connectors/, or pass --force to overwrite it.
SOURCE_NOT_FOUND No configured source with that id. List ids with regixo sources, then regixo sources remove <id>.
SOURCE_UNREACHABLE A configured source could not be reached. Check the host/port and that the source is running, then regixo test <id>.
SECRET_UNRESOLVED A required secret could not be resolved. Set the source’s connection env var (or REGIXO_SECRET_<ref>) — never in regixo.yml.
SECRET_PLACEHOLDER_UNREPLACED The connection variable still holds the placeholder Regixo wrote, so there is no real credential to connect with yet. Open .env, replace <PASTE-YOUR-TOKEN-HERE> with your own password, token or API key, then re-run. regixo doctor names the variable.
DRIVER_MISSING No connector driver is registered for this source kind. Enable/install the connector for this source kind.
MAP_NOT_FOUND No local map (index.db) was found to open. Run regixo start first to scan your sources into the local catalog.
STALE_CATALOG The catalog is stale — regixo invite would ship the LAST scan, not your database as it is now. Re-run regixo start to refresh the catalog (it does NOT read the DB live), then regixo invite. To ship the current catalog anyway, pass --yes.

Compliance & catalog

CodeWhat it meansFix
ROPA_INPUT_INVALID The RoPA annotation could not be applied. Use regixo annotate list to see the activity keys + fields, then regixo annotate set <activityKey> <field> <value> [--confirm].
SIGNER_REQUIRED Confirming a legal field records WHO confirmed it, and no signer identity is set (REGIXO_SIGNER_EMAIL). Set REGIXO_SIGNER_EMAIL to the person on your compliance team making this call (e.g. REGIXO_SIGNER_EMAIL=dpo@yourco.eu), then re-run with --confirm. Without --confirm the answer saves as a draft fill — no signer needed.
SIGNER_NAME_REQUIRED A signature needs a person’s name — an email address on its own isn’t enough. Set REGIXO_SIGNER_NAME to the name of the person signing (and REGIXO_SIGNER_ROLE to their role, e.g. "Data Protection Officer"). A regulator reading this record has to see who took responsibility for it, not an inbox.
CONTROLLER_REQUIRED Your company’s name or a reachable contact is missing, so the official version can’t be created yet (the GDPR record must say which company is responsible and how to reach it). Easiest: fill it in on the claim page before you unlock. (Or your engineer can add it to regixo.yml under "controller: name / contact" and re-run regixo start.)
ROPA_NONE_UNCONFIRMED Not saved — “None” closes this field as “does not apply”, a legal confirmation. Re-run with --confirm to record it (REGIXO_SIGNER_EMAIL names who makes the call), or give the actual values instead.
OPEN_LEGAL_CALLS This record still has open legal calls, and sealing over them was not acknowledged. Answer them (regixo annotate set … --confirm, or the claim page) — the stronger record. To seal with them flagged as open, re-run with --seal-with-open-calls; the seal records the acknowledgment.
ROPA_CONFIRM_UNATTRIBUTED A confirmed legal answer in this file names no one who confirmed it, so the whole import was refused — confirmation is a named human act. Re-export the catalog from the machine where the field was confirmed (regixo catalog export always carries who confirmed it), or add that row’s by in the file, then re-run the import.
DORA_INPUT_INVALID The DORA input could not be applied. Use regixo dora import <tableCode> <file.csv> (header row + data rows) or regixo dora set <tableCode> <rowKey> <field> <value>.
DORA_NOT_SUBMITTABLE The DORA register did not pass validation against the regulation's table structure and datapoint formats, so no xBRL-CSV was produced. Fix the malformed datapoint(s) named above (e.g. an LEI is 18 alphanumeric characters followed by 2 numeric check digits, uppercase), then re-run regixo dora export.
TERMS_NOT_ACCEPTED Sealing an official record requires accepting the customer agreement, and it was not accepted. Tick "I accept the agreement" on the seal page (or pass the acceptance in the API). The agreement version is set by the vendor (REGIXO_TOS_VERSION); when unset, no acceptance is required.
CLASSIFY_INPUT_INVALID To correct a column, name the column and say what it is — one of: personal, special, criminal, or not. "personal" = personal data · "special" = sensitive data (health, religion… Art. 9) · "criminal" = offence data (Art. 10) · "not" = not personal. Find a column id with regixo describe list, then regixo classify set <columnId> personal. Undo with regixo classify clear <columnId>.
DESCRIBE_ENTITY_UNKNOWN No dataset or column with that id. Run regixo describe list (or regixo status) to see the ids, then regixo describe draft <id>.
LINEAGE_ENDPOINT_UNKNOWN A lineage edge needs two datasets that exist in the map. Check both ids with regixo describe list, then regixo lineage add <fromDatasetId> <toDatasetId>.
LINEAGE_EDGE_NOT_REMOVABLE Only human-asserted edges can be removed; dbt/automatic edges are regenerated by scans. Run regixo lineage list --origin user to see removable edges, then regixo lineage remove <edgeId>.
GLOSSARY_TERM_UNKNOWN That glossary action needs a term (and a definition, to set one). Use regixo glossary set <term> <definition> [--datasets id,id], or regixo glossary list.
CATALOG_FILE_INVALID That file is not a Regixo team catalog, so nothing was imported. Point the import at a file written by regixo catalog export — JSON with "format": "regixo-catalog" and an integer "version". If the file was hand-edited, the detail above names the first broken part.
CATALOG_VERSION_UNSUPPORTED This team catalog was exported by a newer Regixo than the one running here, so nothing was imported. Upgrade Regixo on this machine (for example npx regixo@latest start), then re-run the import. The file itself is fine.
EVIDENCE_HASH_MISMATCH The evidence bundle failed verification — an artifact’s content no longer matches its manifest fingerprint. The file was changed after it was generated (the ✗ lines above name which parts). Fetch the original bundle, or regenerate a fresh one with regixo evidence.

Portal & sync

CodeWhat it meansFix
INVITE_NOT_FOUND No invite snapshot was found to serve. Run regixo invite --no-upload first — it drafts the record and writes the snapshot without sending anything. Then run regixo serve-claim to read it, and regixo invite when it reads right.
UPLOAD_NOT_CONFIRMED The upload to the portal needs explicit confirmation, and there is no terminal to ask on. Re-run regixo invite --yes to confirm the metadata-only upload (the preview is printed first), or regixo invite --no-upload to stay fully local.
INVITE_RECIPIENT_REQUIRED This invite would upload with no recipient — an unbound claim link lets anyone holding it become the record’s admin. Pass --email <their-address> to lock the claim link to your compliance contact (recommended), or --unbound to send it unbound on purpose.
PORTAL_UNREACHABLE Could not reach the portal to upload the draft snapshot. Re-run — the portal or your connection may be briefly down. If you set REGIXO_PORTAL_URL (a tunnel or self-host address), check that host is up.
PORTAL_NOT_INSTALLED Not an error — this is the FREE build. Official export + attestation are the PAID step, so they are not included here. When you want them, unlock at https://app.regixo.com (forward your regixo invite link). Free stays free forever.
PORTAL_NOT_READY This hosted portal cannot sign a record, so it refused to start. A public portal must be able to sign a record before it takes anyone’s money. Generate the signing key, publish its public half, and set the variable named in the message. Then start it again.
INGEST_UNAUTHORIZED The portal refused the upload — it requires an ingest token. Set REGIXO_INGEST_TOKEN to the token the portal operator configured, then re-run regixo invite.
INGEST_RATE_LIMITED The portal rate-limited this upload (too many uploads from this address). Wait an hour, then re-run regixo invite and forward the FRESH PDF.
SNAPSHOT_TOO_LARGE The portal refused the snapshot — it exceeds the 5 MB upload cap. A metadata-only snapshot this large is unusual — check the map size (regixo status); if your estate is genuinely that big, contact the vendor.
SYNC_FAILED Metadata sync to the portal failed. Check REGIXO_PORTAL_URL (is the host/tunnel up?) and REGIXO_SYNC_TOKEN; a revoked pairing needs a fresh token — an admin generates one under "Connect a machine" on your claim page. (A superseded claim fails as CLAIM_NOT_SYNCABLE instead.)
SYNC_MISCONFIGURED A portal address is set but the machine token is missing — the push was skipped. Set REGIXO_SYNC_TOKEN (an admin generates it under "Connect a machine" on your claim page); the address defaults to app.regixo.com, so the token is all most setups need. Or unset REGIXO_PORTAL_URL for a purely local setup. It starts rgx_sync_ — never the licence key (rgx_live_).
SYNC_UNAUTHORIZED The portal rejected the machine token — it is revoked, mistyped, or belongs to a different record. An admin generates a fresh token under "Connect a machine" on your claim page; set it as REGIXO_SYNC_TOKEN on this machine. regixo doctor checks the pairing end to end.
CLAIM_NOT_SYNCABLE The claim this machine pushes to was superseded or removed — the push has nowhere to land. Re-run regixo invite for a fresh claim link, then pair this machine again with a token generated on the NEW claim ("Connect a machine").
WEBHOOK_FAILED The change-summary webhook could not be delivered (the local re-scan completed and stands). Check the --webhook URL is reachable from this machine, then re-run regixo watch --webhook <url> to retry the delivery.
DORA_PULL_FAILED Could not pull the claim-side fills from the portal. Check the claim token is correct and the portal is reachable — the pull uses the address on your recorded claim link automatically; REGIXO_PORTAL_URL overrides it. The same link you forwarded with regixo invite carries the token.
SEAL_PULL_FAILED Could not pull the sealed artifacts from the portal. Check the claim token is correct and the portal is reachable — the pull uses the address on your recorded claim link automatically; REGIXO_PORTAL_URL overrides it. regixo status shows whether the record is sealed at all.
LICENCE_MISSING No unlock key was given, so there’s nothing to unlock with. Easiest: unlock in the portal. (Or, for the command line, your engineer can set REGIXO_LICENCE_KEY to the key from your unlock email.)
LICENCE_INVALID That unlock key doesn’t look right, so we couldn’t unlock. Easiest: unlock in the portal instead. If you’re using the key, re-copy it exactly from your unlock email (it’s easy to miss a character).
LICENCE_EXPIRED Your unlock has expired, so the record is back to a draft for now. Renew to bring back the official, signed version. The portal shows your renewal options.
LICENCE_REVOKED This unlock key has been turned off, so it can’t be used. Contact Regixo for a replacement key. Anything already signed stays valid — nothing is deleted.
LICENCE_TENANT_MISMATCH This unlock key belongs to a different record, so it won’t unlock this one. Use the key that came with THIS record’s unlock email, or unlock from this record’s claim link in the portal.
CLAIM_NOT_FOUND No live claim was found for that token (unknown, or replaced with no recorded successor). List claims with regixo admin tenants; for a replaced claim, resend the successor token shown there.
MAIL_NOT_CONFIGURED This portal has no email delivery configured, so the message cannot be sent. Set REGIXO_SENDGRID_API_KEY + REGIXO_MAIL_FROM (or REGIXO_SENDMAIL_CMD), or run with REGIXO_DEV_MODE=1 to log instead of sending.
ADMIN_INPUT_INVALID The admin subcommand is missing or has invalid inputs. Run regixo admin help (or regixo help admin) for the full command list and the flags each needs.
ADMIN_NOT_CONFIRMED This is a destructive admin action and was not confirmed. Re-run with --yes to confirm (agent/headless), or answer the prompt at an interactive terminal.
ADMIN_ENV_INCOMPLETE This admin command needs the portal’s own settings, and they are not loaded. Run it through the regixo command on the portal machine — that loads them for you. If you are calling the CLI directly, load them first: set -a; . <your portal env file>; set +a

app.regixo.com — the address regixo invite uploads to, and the one the unlock fixes name — is not switched on yet: public hosting is a launch gate, wired and offline-tested. Regixo has not launched. The fixes above name the destination it will answer on; until then, set REGIXO_PORTAL_URL to a portal you can reach, or stay local with regixo invite --no-upload.

Agents & API

CodeWhat it meansFix
INVALID_PARAM A required parameter is missing or not valid. The detail names the usage — check regixo help <command> (e.g. regixo search <words…> needs the words to search for).
DATASET_NOT_FOUND No dataset with id "…". — the id does not exist in this catalog. List the ids the API serves at GET /api/v1/datasets, or call the search_datasets tool. An id reads source/schema/table, for example app-db/public/users.
ENDPOINT_NOT_FOUND No GET endpoint at /api/v1/… on this API. — a path (or method) the read API does not serve. The 404 body lists every endpoint this API serves; GET /api/v1 returns the same list.

INVALID_PARAM is shared with the read API: /api/v1 answers a malformed query parameter with a 400 carrying this same code and a param field naming the culprit, so the CLI and the API speak one vocabulary. CLAIM_NOT_FOUND is likewise returned by the read API for an unknown or superseded claim. DATASET_NOT_FOUND and ENDPOINT_NOT_FOUND belong to the agent surface only — the read API and the regixo mcp tools return them, in one agreed shape across both. They are not in the CLI error registry, so regixo help --json does not list them and no regixo command exits with either.

REGIXO — documentation · codes are a stable contract — never renamed, only added · Command reference