Skip to content

Troubleshooting ​

Errors carry stable codes. Match on the code. Full definitions are in spec 16.

The server will not start ​

MessageCauseFix
CONFIG_UNREADABLEThe configuration file is missing or not JSON.Check DIP_CONFIG and the file's syntax.
INVALID_CONFIGA field is missing or has the wrong type.Compare with config.example.json.
INVALID_KEYA private key file is missing, unreadable, or not Ed25519.Regenerate with keygen, and check the path.
WEAK_API_KEYAn API key is shorter than 32 characters.Generate a longer key.
LEDGER_INVALID_ON_OPENThe stored evidence chain does not verify.Do not force a start. Investigate the database, and restore a verified backup if needed. See the operations notes.

Authorization is DENY ​

Read reasonCodes in the response. Common causes:

Reason codeMeaning
AUTHORITY_NOT_FOUNDNo such authority or version. Check authorityRef.
AUTHORITY_EXPIRED, AUTHORITY_NOT_YET_VALIDThe request time is outside the authority's window.
AUTHORITY_REVOKED, AUTHORITY_SUPERSEDEDA newer version exists, or this version was revoked. Use the current version.
ACTION_NOT_PERMITTEDThe operation is not in permittedActions.
RESOURCE_OUT_OF_SCOPEThe resource is not in resourceScope.
AMOUNT_EXCEEDS_LIMITThe amount is above maxAmountMinor. Approval cannot override this.
CURRENCY_NOT_PERMITTEDThe currency is not in currencies.
ACTOR_NOT_AUTHORIZEDThe actor is neither the principal nor the agent.
APPROVAL_REQUIREDApproval is needed. Request one.
APPROVAL_PENDING, APPROVAL_REJECTED, APPROVAL_EXPIRED, APPROVAL_REVOKEDThe approval is not in the APPROVED state.
APPROVAL_BINDING_MISMATCHThe approval was made for a different request. Request a new approval for the current content.
POLICY_VERSION_MISMATCHThe request names a policy version the authority does not use.

Execution is refused ​

Attempt reasonMeaning
DECISION_NOT_ALLOWThe decision is DENY. Authorize first.
REQUEST_DIGEST_MISMATCHThe request changed after authorization. Normalize and authorize again.
DECISION_STALEThe decision is older than maxDecisionAgeSeconds. Authorize again.
DECISION_IN_FUTUREThe decision time is ahead of the server clock. Check the clock.
DECISION_REPLAYEDThe decision already ran. Do not reuse it; authorize again.
IDEMPOTENCY_CONFLICTThe same key was used with different content. Use a new key.
EXECUTION_IN_PROGRESSThe same key is running. Wait, then check the result.
CONNECTOR_NOT_FOUNDNo connector is wired for this operation.
DECISION_SIGNATURE_INVALID, DECISION_KEY_UNKNOWN, DECISION_KEY_REVOKEDThe decision is not from a trusted engine key.

Execution failed or timed out ​

  • FAILED with a connector reason: check that reason and the external system.
  • TIMED_OUT: the outcome is unknown. Do not retry blindly. Check the external system with the idempotency key, then decide.
  • FAILED with CONNECTOR_ERROR: the connector threw. Check its logs and configuration.

Verification fails ​

Use the per-check detail from dip verify --json. See VERIFICATION.md for what each verdict means.

CheckLikely cause
SIGNATURE with UNVERIFIABLEThe signing key is not in your trust roots.
SIGNATURE with FAILThe record was changed, or the wrong public key is in the trust roots.
CANONICALThe entries were re-formatted (for example, pretty-printed). Use the exported lines unchanged.
CHAIN or SEQUENCEEntries are missing, reordered, or changed.
HEADThe head differs from the one you recorded.

Backups ​

MessageFix
DESTINATION_NOT_EMPTY, TARGET_NOT_EMPTYChoose an empty or new directory.
DIGEST_MISMATCHThe backup files changed after creation. Restore from another copy.
ANCHOR_MISMATCHThe manifest head differs from the head you recorded. Investigate before use.
LEDGER_INVALIDThe source database's chain does not verify. Do not back it up as good.

Database ​

  • Locked data directory: only one process may open a file-backed database. Stop the other process.
  • relation ... does not exist: the schema has not been migrated. The server migrates at startup; run migrate if you use the storage package directly.
  • Append-only errors (DIP records are append-only): the application tried to change evidence. This is intended. Do not disable the triggers to make it pass.

Still stuck ​

Open an issue with the code, the reason, the command you ran, and the version (CHANGELOG.md). Do not include private keys, API keys, or personal data. For security problems, follow SECURITY.md.

Released under the Apache License 2.0.