Data retention and deletion
How to delete your account, what that removes, which records have a lifetime, and what you can export — limited to what the code enforces today.
This page tells you how to delete your data from Spectrace, what happens when you do, and how long other records are kept.
The short version
Spectrace keeps workspace data (a workspace is what the settings screens call an organization) for as long as the workspace exists. There is no scheduled purge, no retention window, and no time-based deletion of audit logs, job runs, verifications or code chunks. Data leaves the system in two ways: you delete a project, or you delete your account. Time-limited records (invites, verification links, API keys with an expiry, VS Code codes) stop working when they lapse but the rows are not removed.
Delete a project
Any member of the project's organization can delete a project, from the project settings drawer or from the Delete item in the project's card menu on the projects list; the action is not role-gated (see Roles and permissions). Deletion is a hard delete: the project row is removed and foreign-key cascades remove its requirements, acceptance criteria, test cases, comments, verifications, code chunks, embeddings and audit entries. There is no soft delete, grace period or undo.
Delete your account
Account deletion is a two-step, verified flow with a 30-day cooling period, started from Settings → Account.
Prerequisites
- You are signed in with the account you want to delete.
- You are not the sole owner of a workspace that still has other members. If you are, the request is blocked with the list of blocking workspaces, and there is no ownership-transfer action in the product today — ask for help through the Send feedback widget.
Steps
- Request deletion
In Settings → Account, request deletion. Spectrace creates a request in the
pending_verificationstate and emails you a verification link. Nothing is scheduled until you click it. The link expires after 24 hours; an hourly job cancels unverified requests past that window and emails you. - Verify by email
Clicking the link moves the request to
scheduledand sets the purge date to 30 days from that moment. - Cancel if you change your mind
You can cancel while the request is pending, scheduled or failed. Once the purge is processing it cannot be cancelled.
- Purge
A daily job at 03:30 UTC runs due purges and retries failed ones until the request has been attempted 10 times (in-task retries count). If you have become the sole owner of a shared workspace during the cooling period, the purge fails and is retried daily until you transfer ownership or remove the other members. Each step is checkpointed, so a retry resumes where it stopped.
What the purge removes
In order:
- Third-party connections. Spectrace attempts to revoke your GitHub OAuth grant remotely, then deletes your GitHub, Jira, Linear and Slack user links and any other identity links locally.
- Workspaces where you are the only member. Any Stripe subscription is cancelled, then the organization is deleted; cascades remove its projects, requirements, connections and billing rows. This is the only way a workspace is deleted — there is no "delete workspace" action.
- Memberships in workspaces that survive.
- Anonymisation in surviving workspaces: assignee, reviewer, approver and creator references are cleared where the schema allows; audit rows keep the event but show the actor as "Deleted user" with no email. Creator columns that cannot be null keep an identifier that no longer maps to a person once the profile is gone.
- Hard deletes: your API keys, sign-up verification requests, import runs, beta-access requests, newsletter subscription and profile.
- The Supabase auth user is deleted.
The account_deletion_requests row itself is retained after completion, with your email and user id, as proof that erasure happened.
Cancelling a subscription
Cancelling a paid plan schedules the cancellation for the end of the current billing period; you can resume it until then. When the period ends, Spectrace downgrades the workspace to the free plan and marks the subscription cancelled. Nothing is made read-only and nothing is deleted.
Records with a lifetime
| Record | Lifetime |
|---|---|
| Sign-up verification link | 24 hours |
| Account-deletion verification link | 24 hours; then a 30-day cooling period |
| Workspace and project invites | 7 days |
| VS Code authorisation codes | 120 seconds; the sweep that removes expired rows exists but is not scheduled |
| API keys | expiry chosen at creation (30, 90, 180 days, 1 year, or never); revocable at any time |
| Review (share) links | optional expiry, otherwise never; revocable |
What is kept indefinitely
While the workspace exists: project and review audit logs, background-job and agent-run records, embedding-usage records, code chunks, PR verifications, import runs, and beta-gate access logs (which include IP address, user agent and coarse geolocation). Error events sent to Sentry and job logs on Trigger.dev follow those vendors' retention, which this page does not state.
Export
You can export a project's requirements from the requirements list export dialog (from the project page, not from Settings). Formats: CSV, Markdown, JSON, PDF, Word, Jira CSV, Linear CSV, Azure DevOps CSV, Confluence HTML and GitHub JSON, with options to include acceptance criteria, test cases, Playwright code, estimates, status, priority and type.
Not available today: audit-log export, whole-workspace export, whole-account export.
Done
A project is gone when it no longer appears on the dashboard. An account is gone when the sign-in fails and the deletion confirmation email has arrived; if the request was blocked by sole ownership, the Account settings page shows the blocking workspaces and nothing has been scheduled.