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

Anyone whose effective role on the project is owner or admin can delete it, from Settings → Danger zone on the project page; the server refuses any other member (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. Email hello@spectrace.io for help.

Steps

  1. Request deletion

    In Settings → Account, request deletion. Spectrace creates a request in the pending_verification state 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.

  2. Verify by email

    Clicking the link moves the request to scheduled and sets the purge date to 30 days from that moment.

  3. 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.

  4. 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:

  1. 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.
  2. 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.
  3. Memberships in workspaces that survive.
  4. 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.
  5. Hard deletes: your API keys, sign-up verification requests, import runs, beta-access requests, the delivery records of your beta access emails, newsletter subscription and profile.
  6. 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.

You can cancel with Cancel subscription in Settings → Billing, which first shows the date the plan ends and the features that stop taking new work. You can also cancel in the Stripe billing portal that Manage payment method opens. The portal covers the payment method, past invoices and cancellation only; a change of plan or billing cycle happens in Settings → Billing. A cancellation made in the portal is scheduled for the same date, and shows at the top of Settings → Billing, where Keep my plan resumes it.

After a downgrade

Nothing is deleted, and nothing is made read-only. Every project, requirement, cycle review and audit record the workspace already holds stays readable and stays exportable on the plan it moves to, including the records it created while it was on Teams.

What changes is that the paid features stop taking new work. Cycles are the case with a carve-out: a workspace whose plan no longer includes cycles cannot create or start one, and cannot add items to one, but it can still close an active cycle and remove items from it, so no cycle is left stranded half open. The Export review button on a completed cycle stays on every plan.

A Jira, Linear or Slack connection made on a plan that no longer includes it keeps working until a cut-off date, announced at least 30 days beforehand. The same applies to a project that has linked more repositories than its plan verifies: all of them keep verifying until that date. After the date, a connection stops taking new work, the Slack bot answers with one sentence naming the plan it needs, and the daily digest and pull request escalations skip the workspace.

Records with a lifetime

RecordLifetime
Sign-up verification link24 hours
Account-deletion verification link24 hours; then a 30-day cooling period
Workspace and project invites7 days
VS Code authorisation codes120 seconds; the sweep that removes expired rows exists but is not scheduled
API keysexpiry chosen at creation (30, 90, 180 days, 1 year, or never); revocable at any time
Review (share) linksoptional 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, AI usage records (one row per AI call, holding the workspace, the project, the feature that made the call, the model and the token counts, and never the prompt or the response), code chunks, PR verifications, import runs, and beta-gate access logs (which include IP address, user agent and coarse geolocation). Email delivery records for beta access emails (recipient address, provider message id, delivery status and the provider's bounce reason) are kept until an account with that email address is deleted; there is no time-based sweep for them yet. Error events sent to Sentry and job logs on Trigger.dev follow those vendors' retention, which this page does not state.

Feedback sent from the dashboard is saved. When you send it signed in, it is also emailed to the support inbox at hello@spectrace.io, with your name, account email, the page you were on and your browser. Deleting your account removes your account and email address from the saved feedback, but not from those emails or the email provider's logs; email hello@spectrace.io to have them removed.

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.

A project's audit log exports from the Audit lens on the project History page, as a CSV or a PDF. You pick a date range and a set of event types, and the server builds the file after checking the plan.

The CSV covers the whole range, however many events it holds. The PDF is drawn in one piece, so it carries up to 50,000 events; past that, take the CSV. Each file states a SHA-256 checksum of its rows, which is a self-check rather than a signature: it shows the file matches the checksum Spectrace displayed when the file was built, and it does not show who produced the file.

Owners and admins of a workspace on Teams can export the audit log. A workspace that has left Teams keeps the records it wrote while it was there, and its export stops on the day the Teams period ended.

Not available today: 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.

Privacy requests

The Privacy Policy sets how long Spectrace keeps each kind of personal data and explains how to ask for a copy of your data, a correction or a deletion that the product cannot do itself. Send those requests to hello@spectrace.io. For the personal data in a workspace's content, the Data Processing Addendum describes how Spectrace handles it for the workspace's organization.