Users

Users are the most common type of principal and the primary way people access the system. They authenticate through email and password and can own datasets, be granted permissions on others, and belong to at most one tenant.
Default user behavior — When no user is specified, Cognee uses a default user with email “default_user@example.com” for development and testing.

User Authentication

Users authenticate through email and password. When no user is specified, Cognee uses a default user with email “default_user@example.com” for development and testing. A user without a tenant can still use the system but operates in isolation.

User Management

Users can:

User Permissions

Users can receive permissions in three ways:
  1. Direct permissions — Explicitly granted to the user
  2. Tenant permissions — Inherited through tenant membership
  3. Role permissions — Inherited through role memberships
The system calculates effective permissions by combining all three sources, giving users the union of their direct permissions, tenant-level permissions, and role-level permissions.

User Isolation

When ENABLE_BACKEND_ACCESS_CONTROL=true, each user’s data is completely isolated:
  • Database routing is automatic — Kùzu (graph) and LanceDB (vector) are configured per request via context variables
  • Filesystem isolation — Each user gets their own database directory
  • No cross-user access — Users can only access datasets they have explicit permissions for

Superuser Privileges

Users with is_superuser=True have additional privileges:
  • Can manage other users, tenants, and roles
  • Can access all datasets regardless of permissions
  • Can perform administrative operations
Production Security — Superuser privileges should be carefully managed in production environments.