Security, reliability and quality

Built for the questions an examiner asks about software.

This page lists how each product handles identity, access, evidence, application security and operations. Where the two products differ, the table says so: we would rather you know exactly what each one does.

Identity and sessions

Cookie-only sessions, multi-factor sign-in, your own identity provider.

Controlcognita devcognita grc
PasswordsArgon2id; 12 to 128 characters; the last five cannot be reusedbcrypt; at least 8 characters with upper case, lower case and a digit; the minimum is a setting. Directory and single sign-on accounts hold no password here
Corporate sign-inLocal accounts onlyLDAP / Active Directory (the directory checks the password over LDAPS or StartTLS), SAML 2.0 and OpenID Connect with PKCE; assertions and ID tokens checked for signature, issuer, audience, validity and replay; accounts created on first sign-in with roles from directory groups; password sign-in can be limited to administrators
Multi-factorMandatory TOTP for every account; each 30-second code accepted once; 10 hashed recovery codes; secrets encrypted with AES-256-GCM under their own keyTOTP for every local and directory user who enrols; 8 single-use bcrypt-hashed recovery codes; each code accepted once; secrets encrypted at rest. Single sign-on accounts rely on the provider's MFA
SessionshttpOnly, Secure, SameSite=Strict cookies; 15-minute access, rotating refresh (30 minutes idle, 8 hours absolute); at most three sessions per userhttpOnly, SameSite=Lax cookies with silent refresh; 30-minute access and rotating 7-day refresh, both settings; every sign-in is a named session the user or an administrator can end
TokensNever returned in a response body; Authorization headers are ignored, so only the cookie authenticatesNever returned in a response body; the browser app authenticates with the cookie alone
Failed sign-inIdentical response for every failure, padded to a 500 ms floor; lockout after 5 failures in 15 minutes, doubling up to 24 hoursIdentical status, text and timing for unknown users, wrong passwords, locked accounts and accounts that sign in elsewhere; lockout attempts and duration are settings; directory failures count too
Step-upA fresh code for sign-off, role changes, MFA resets and AI allowlist changesThe password again (checked by the directory for directory accounts) to turn two-factor on or off, change a security setting, or add or change a sign-in provider
RevocationLogout, password or MFA change, role change and deactivation take effect on the very next request; replaying a rotated refresh token revokes the whole session familyRole change, deactivation, password reset or MFA reset ends all of the user's sessions immediately; ending one session blocks its tokens within the minute
Authorization

Protected by default, least privilege by design.

In both products every router except sign-in (and, in cognita grc, the single sign-on replies) sits inside a protected router, so a new route cannot ship unauthenticated. A test walks every route the application serves and fails if one answers without a session, and names the public ones exactly.

cognita dev

24 named permissions across five roles

Each endpoint declares the permission it needs from one seeded table, and code never compares role names. Projects outside your scope answer 404. Administrators run the system and see no project content.

cognita grc

Roles per module, mirrored in the interface

A role grants view or edit on each of 33 modules plus platform permissions; four built-in roles ship and administrators add their own. Every route of a module requires view access to it and its writes require edit; the sidebar, the dashboard and Ask AI follow the same grants. The last active administrator can never be removed. File Vault contents answer 404 to anyone but their owner.

Audit and evidence

Every action on the record, and the record protected.

cognita dev: a hash-chained, append-only log

  • Each event stores the previous hash and SHA-256(previous hash + event), written in the same transaction under a lock
  • The table refuses UPDATE, DELETE and TRUNCATE; the application's database role may only insert and read it
  • If the audit write fails, the change it describes rolls back
  • The chain is verified every night, and on demand from the audit screen
  • Evidence packs carry a SHA-256 manifest that a standard-library script verifies offline

cognita grc: broad, non-blocking capture

  • Sign-ins and failures, MFA events, password and admin changes, creates, updates and deletes, imports, exports and AI actions
  • Written in the background with their own database session, so auditing never slows a request
  • Searchable and filterable, with CSV export for reviewers
cognita dev · /audit
Audit log with the chain verified and events for submit, approve and sign-off by different roles
"Chain intact": every event recomputed from the first.
Application security

Hardened in the code, the containers and the network.

Areacognita devcognita grc
Browser protectionsNonce-based content security policy with no unsafe-inline, HSTS, cross-origin isolation headersContent security policy, nosniff, frame denial and a strict referrer policy on API responses; HSTS once on HTTPS
Cross-site requestsState-changing calls need a custom header and a matching origin; no CORSSame-origin deployment and SameSite cookies
Rate limitsSign-in 5 a minute per address and 20 an hour per username; AI 10 a minute and 200 a day; 300 a minute otherwise60 a minute by default, 5 a minute for sign-in, and tighter limits on 50 sensitive endpoints
UploadsTyped by content; archives limited to 1,000 entries, 200 MB and a 100:1 ratio; HTML refused; optional ClamAVLeading-byte checks, size caps, generated names, path-traversal and Zip Slip protection
ExportsEvery text cell escaped against spreadsheet formula injection.
ContainersNon-root, read-only root filesystem, all capabilities dropped, no-new-privileges, images pinned by digestOnly nginx published; API, database and Redis on the internal network
Outbound trafficOnly the worker has a route out, through a proxy that allows the model providers' hosts aloneOnly to the AI provider you enable and to osv.dev for SCA reviews
Secrets and logsDocker secret files; refuses to start without its keys; structured logs through a redaction filterDocker secrets for the signing key and the model key; generic error responses with nothing internal in them
AI controls

The controls your model risk team will ask for.

Neither product lets AI take an action on its own. Both let an administrator switch AI off for everyone, and both keep a record of what the AI was asked to do.

  • Allowlist and classification

    cognita dev allows each model per role and up to a data classification ceiling (Public, Internal, Confidential, Restricted); an empty allowlist means AI is off. cognita grc accepts only named Gemini models and your on-premises vLLM model.

  • Kill switch

    Checked on the server at the one point every AI request passes through, cached briefly and failing closed if the setting cannot be read.

  • Prompt hygiene

    Documents are passed as labelled data. The cognita grc assistant receives counts only, and links it produces to outside sites are stripped before you see them.

  • Budgets and provenance

    cognita dev caps tokens per user and per project and records model, prompt version, input hashes, tokens and cost for every call.

Data protection

Your data stays in your database, on your hosts.

Residency

Self-hosted

No telemetry and no vendor cloud. The only outbound calls are to the AI provider you enable; with an on-premises vLLM model, in either product, prompts stay on your hardware.

Minimisation

Nothing extra in the side channels

cognita dev notifications carry IDs and keys, never document content; Redis never holds a business record. cognita grc strips hostnames from privilege-review prompts.

Retention

Nothing quietly deleted

cognita dev never hard-deletes records and retains them for seven years by default. cognita grc includes the audit trail in every export, because it is evidence.

Reliability

Backups you have actually restored.

cognita dev

RPO 1 hour, RTO 4 hours

Nightly encrypted backups of the database and files (AES-256 with PBKDF2 at 200,000 iterations, a SHA-256 manifest and 14-day retention), write-ahead log archived at least hourly, and a restore drill in CI that restores into a scratch database and checks row counts and the audit chain.

cognita grc

Scheduled snapshots with a manifest

Nightly SQL and custom-format dumps plus the uploads archive, on a schedule and retention set in Settings. Both dumps are read back and checked against live row counts before the manifest is written; exports move data between environments with the schema revision embedded.

Performance

Fast where people wait.

  • cognita dev targets

    p95 under 300 ms for reads and 600 ms for writes at 200 concurrent users; AI jobs start within 2 seconds. A 50-user run on a laptop measured reads at 14–24 ms p95 and writes at 76–77 ms, with no failures.

  • cognita grc at scale

    Server-side paging, filtering and sorting on the large registers, so the asset inventory stays responsive at thousands of rows; four API workers in production.

  • Caching that never stalls

    cognita grc caches lists in Redis, invalidates them on every change and sweeps keys with non-blocking scans.

  • Light pages

    Pages load only when opened, hashed assets are cached as immutable, and long AI calls get their own timeouts.

Accessibility

Usable by keyboard, checked by machine.

cognita dev targets WCAG 2.1 AA. Automated axe checks run on ten key screens and fail the build on any serious or critical issue, and a keyboard navigation test covers the main flows. Both products use MUI components with labelled controls and visible focus.

cognita grc · /account
My Account in cognita grc with two-factor setup, password change and signed-in sessions
My Account in cognita grc: two-factor setup, password change with the rules stated on screen, and the browsers signed in.
Quality gates

Every change passes the same checks before it merges.

cognita dev CI

Security tests are the merge gate

  • 22 acceptance tests from the requirements, never skipped or weakened
  • ruff, mypy, eslint and TypeScript checks; pytest with coverage against PostgreSQL
  • Bandit, Semgrep, pip-audit, npm audit and Trivy on every image
  • Compose smoke test of headers, CSP nonce, egress allowlist and metrics
  • Five Playwright scenarios, including accessibility, and the restore drill
  • Nightly OWASP ZAP baseline; weekly Trivy scan that opens an issue when a fix appears
cognita grc tests

218 tests on what is easiest to break

  • Every router except sign-in requires a session
  • One case per role per guard in the permission matrix
  • Failed sign-ins indistinguishable in status, text and timing
  • Tokens only in cookies; logout ends the session
  • The API still answers when Redis is unreachable
  • Bulk edits write only the fields given; File Vault files unreadable by anyone else

cognita helps you run and evidence your controls. Using it does not by itself make an institution compliant with any law or framework.

Due diligence

Need the detail for a vendor or architecture review?

We can share the control list, the test suites and the deployment guide with your security and risk teams.