Security

Your test evidence, handled with care

KwikQA runs on your machine. Only a redacted, size-limited evidence packet you have previewed ever leaves it, and the hosted service doesn't keep that packet.

The evidence packet

For each AI request, KwikQA builds an evidence packet on your machine from selected Playwright report fields, trace events, and short source excerpts around the failure. Before you see the preview:

  • secrets, credentials, and sensitive fields are removed and counted as redactions;
  • items the policy doesn't allow are withheld and counted;
  • screenshots and videos are described by size and dimensions only, never by their pixels; and
  • the packet is capped in size. Full files, full diffs, and your repository are never included.

The preview shows the destination, model, evidence counts, cost estimate and cap, and a hash of the exact payload. Approving sends exactly that payload. Declining sends nothing and costs nothing. Applying a patch always needs its own approval, even when requests are pre-approved with --yes.

The hosted service

On the Free, Pro, and Team plans, requests go through the KwikQA service. It checks that each request uses the configured model, provider, reasoning effort, and output cap, counts it against your plan, and forwards the payload to OpenRouter byte for byte.

The service stores your account (GitHub numeric id and username), your plan, monthly usage counters, and for each request: its kind, model, status, token counts, cost, and a SHA-256 hash of the payload. It never stores the evidence, your source code, or the model's answer.

On bring-your-own-key plans, requests go from your machine straight to OpenRouter. The CLI reports only each request's kind, model, and provider to the service, so it counts toward your plan.

How long records are kept

RecordKept
Account and planUntil you delete your account
Request records and monthly usage counters13 months
Website sign-in sessions30 days
Revoked CLI and CI tokens90 days after revocation
Free-retry tickets90 days
Team insights (opt-in): test names, files, and fix outcomes13 months, or until the team's owner deletes them
Evidence, source code, model answersNever stored

Deleting your account from the dashboard removes all of these records immediately.

Accounts and credentials

  • Sign-in uses GitHub. KwikQA reads your numeric id and username once per sign-in; the GitHub token is never stored.
  • CLI and CI tokens and website sessions are stored only as SHA-256 hashes. A token is shown once, when it is created.
  • You can see and revoke every token from the dashboard. npx kwikqa logout revokes the CLI's token.
  • Website session cookies are HttpOnly, Secure, and SameSite=Lax, and changes must come from the KwikQA site itself.
  • On your machine, the CLI keeps its token in your user configuration directory with owner-only permissions, never in a repository.

Payments

Paddle, our merchant of record, handles checkout, tax, invoices, and the customer portal. Card details go to Paddle and never reach KwikQA. Plans change only from Paddle's signed notifications or Paddle's answer to a change you confirmed, and each annual refund is recorded so it can never be paid twice.

On your machine

Run records, the transaction journal for each applied patch, and validation output stay in .kwikqa/ in your project. Rollback restores exactly the bytes KwikQA changed and refuses to overwrite edits you made after the patch was applied.

Service providers

ProviderPurposeData
CloudflareHosting and databaseAccount, usage, and request records
OpenRouterModel routingRedacted evidence packets, in transit
Anthropic, OpenAIAI models, through OpenRouterRedacted evidence packets, in transit
PaddleMerchant of record: payments, tax, invoicesBilling details
GitHubSign-inGitHub identity

The privacy policy explains your rights over this data.

Reporting a vulnerability

Email security@kwikqa.com with the details and steps to reproduce. Please don't access other people's data or disrupt the service while testing, and give us a reasonable time to fix the issue before you disclose it.