Security and privacy

Tenant isolation, permissions, audit, secrets and what is shared with AI services.

Tenant isolation

Completed

Each organisation's data is separated inside the database itself using row-level security. The server never trusts an organisation, project, role or approval claim sent by your browser; every operation is re-checked against the database.

Least privilege

Completed

Viewers read, team members edit, project managers manage and delete, and administrators administer. Membership changes can only be made through checked functions, so the last-administrator rule cannot be bypassed.

Secrets

Completed

API keys and tokens live only in server-side secrets. They are never sent to the browser, written to logs, stored in the database, or included in errors. The readiness check only says configured or not configured.

Conversations never mix projects

Completed

Every conversation belongs to one organisation, one person and at most one project, and its key is unique to that combination. Switching project always starts a different conversation; a conversation can never be moved. Before anything is sent to an AI service the server checks who you are, your organisation, the project, and that the conversation is yours and in the same organisation. Registers with no records are marked as missing, not guessed at.

Destructive actions

Completed

Permanent deletion, export and ownership transfer are limited to the organisation owner, need a recent password confirmation, and are rate limited. Clients cannot edit archive or ownership fields directly; they change only through checked database functions.

Abuse protection

Completed

Steward chat, supervision runs, status polling and action execution are rate limited per person. Inputs are validated and size limited.

What AI services receive

Beta

Chat sends your message, a bounded window of the earlier messages from the same conversation, and a prioritised summary of the project's records (limited to what you can see) to the OpenAI Platform API with storage disabled. For questions about current rules, a separate web-search request is sent containing your question. Supervision runs send only the project name and the request you type to the ChatGPT Workspace Agent, unless an organisation administrator has allowed record summaries and you tick "Include a summary" for that run: then record titles, statuses, due dates and scores (never descriptions, evidence, people or documents) are added, and you see the exact text first. Do not type personal or confidential information into a supervision request, or into record titles, unless your organisation permits it.

Audit

Completed

Consequential changes are recorded in an append-only log that cannot be edited or deleted. Audit entries record field names and identifiers, not content.