Skip to main content

Policies

File: config/agents/policies.yaml · Schema: schemas/policies.schema.json

Platform-wide policy: allowed model licenses, retention, PII handling and rate limits.

Fields​

FieldTypeDescription
auditAuditPolicyThe audit log. Default: {"hash_chain":true}.
piiPiiHandling of personal data. Default: {"hash_fields":[],"redact_in_traces":[]}.
rate_limitsRateLimitsRequest rate limits. Declared only: the rate-limit layer is not built yet. Default: {"per_tenant":{"runs_per_minute":0,"uploads_per_minute":0},"per_user":{"runs_per_minute":0}}.
retentionRetentionHow long data is kept. Default: {"audit_log_days":2555,"parsed_markdown_days":90}.

Unknown fields are refused at boot.

Types​

Types referred to by the fields above, from the same schema.

AuditPolicy​

FieldTypeDescription
hash_chainbooleanRequired. Whether entries are hash-chained. Declared only: the chain is always kept.

Unknown fields are refused at boot.

PerTenantLimits​

FieldTypeDescription
runs_per_minuteinteger (uint32)Runs started per minute. Default: 0.
uploads_per_minuteinteger (uint32)Documents uploaded per minute. Default: 0.

Unknown fields are refused at boot.

PerUserLimits​

FieldTypeDescription
runs_per_minuteinteger (uint32)Runs started per minute. Default: 0.

Unknown fields are refused at boot.

Pii​

FieldTypeDescription
hash_fieldslist of stringContext paths (e.g. invoice.vendor_iban) replaced by their SHA-256 as soon as llm.extract produces them. Default: [].
redact_in_traceslist of stringPaths to redact from traces. Declared only: trace redaction is not built yet. Default: [].

Unknown fields are refused at boot.

RateLimits​

FieldTypeDescription
per_tenantPerTenantLimitsLimits shared by everyone in a tenant. Default: {"runs_per_minute":0,"uploads_per_minute":0}.
per_userPerUserLimitsLimits for each user. Default: {"runs_per_minute":0}.

Unknown fields are refused at boot.

Retention​

FieldTypeDescription
audit_log_daysinteger (uint32)Required. How long audit entries are kept. Declared only: nothing purges the audit log yet.
parsed_markdown_daysinteger (uint32)Required. Parsed document text older than this is dropped by task retention_purge.

Unknown fields are refused at boot.

In this repository​

config/agents/policies.yaml

rate_limits:
per_tenant: { runs_per_minute: 60, uploads_per_minute: 30 }
per_user: { runs_per_minute: 20 }
pii:
hash_fields: [invoice.vendor_iban]
redact_in_traces: [document_md, invoice.vendor_tax_id]
retention:
parsed_markdown_days: 90
audit_log_days: 2555
audit:
hash_chain: true

Editor support​

The schemas are generated from the Rust definition structs (task schema_export), and a test fails when they drift. Point a YAML language server at the schema to get completion and validation while editing:

# yaml-language-server: $schema=../../schemas/policies.schema.json