Passwordless auth
Sign-in uses first-party email one-time codes. Login codes are hashed before storage and expire quickly.
Security
Edith protects drafts, feedback, assets, review links, share links, and AI access with product controls that keep collaboration simple.
Control plane
People get clean web workflows. Agents get scoped MCP access. Links stay bearer-style but random, hashed, revocable, and bounded by document context.
Passwordless
One-time email codes, no reusable password database.
Hashed tokens
Session, login, review, share, and MCP secrets are hashed at rest.
Scoped agents
MCP tokens carry explicit scopes and can be revoked.
Sanitised Markdown
Raw HTML is dropped before rendered document output.
Sign-in uses first-party email one-time codes. Login codes are hashed before storage and expire quickly.
Session tokens are stored as hashes and sent through secure, HTTP-only, same-site cookies in deployed environments.
Browser form posts use CSRF protection. Login-code requests, OAuth token flows, and anonymous review writes are rate limited.
Review and share URLs use random tokens; Edith stores token hashes and supports revocation from document sharing controls.
AI clients connect through scoped MCP access tokens or OAuth flows. Tokens can be scoped to read/write areas and revoked from settings.
Markdown raw HTML is removed before rendering. Comments and suggestions are escaped. Workspace assets require workspace access; public review/share asset routes only serve referenced files for the matching link.
Edge and origin
Edith runs with Cloudflare in front of the origin for DNS proxying, strict TLS, HTTPS redirects, managed security rules, and coarse abuse limits. App-side limits stay responsible for workflow-specific protection.
Origin control
Production firewall rules restrict web traffic to Cloudflare IP ranges.
HTTPS first
Cloudflare enforces HTTPS and Full (strict) TLS to the origin.
Abuse filters
Managed rules and coarse rate limits protect common anonymous endpoints.
Agent aware
MCP routes avoid broad browser-only challenges unless abuse evidence justifies blocking.