Trust
Zero source retention
Last updated: September 19, 2026
BugMojo does not read, copy, or store your application source code. Our hosted test runner executes committed test specs against a deployed URL, and nothing else.
BugMojo is local-first by design
When an AI coding agent writes tests for your project, it reads your codebase on your machine or in your CI — inside Claude Code, Codex, Cursor, Copilot or Gemini, where your source already is. Only test cases, results and evidence travel to BugMojo, over MCP or our REST API.
There is no “connect your repository so we can index it” step, because there is no index. That is a deliberate architectural decision, not a setting: our plugins run where your code already lives precisely so that your code never has to move.
BugMojo Cloud Run
Cloud Run is our optional hosted execution: a throwaway Playwright container that runs a published test plan version against a URL you have deployed, so a team with no CI still gets a nightly run with evidence. A job that reaches that container carries exactly five things — the spec text, the deployed URL, an environment name, a time budget, and a write-only API key scoped to one project and revoked when the job ends.
It carries no repository, no clone URL, no branch, no commit to check out and no path into your source, so there is nothing for the container to read even if it tried. It also never executes your playwright.config.ts: the configuration is generated by BugMojo, which means no webServer, no globalSetup, and no arbitrary code from your repository running on our infrastructure.
| What | Processed? | Retained? |
|---|---|---|
| Application source code | Never. A Cloud Run job has no repository, no clone URL, no branch and no checkout. | Never — it is never received. |
| Test specs | Yes. The Playwright spec text for the cases in the plan version being run — either BugMojo’s stored copy on the test-case revision, or a read of your repository’s tests/ directory. | The copy on the revision, because that is what makes a versioned test plan honest. The container’s own copy is deleted with the container. |
| Your deployed application | Yes — over HTTP, as any browser would. That is what a test is. | Only what the test captures: results and evidence, below. |
| Test results | Yes — pass/fail, duration, retries, error message. | Yes. This is the product. |
| Evidence (trace, video, screenshots, console, network) | Yes, produced by Playwright during the run. | Yes, in your workspace’s evidence storage, under its retention class. |
| Environment variables and secrets | No. The fixture registry stores REFERENCES — an environment-variable name or a vault URI — never a secret value. | Never — no secret value is ever received. |
Each container runs one job and is destroyed. The specs written into it live in a temporary directory that is removed when the job finishes, and the container’s filesystem does not survive it.
Where the spec text comes from
There are two sources, and you choose per project:
- BugMojo’s stored copy. When your agent writes a spec, a copy is saved on the immutable test-case revision. That copy is what a plan version pins, and it is what makes “this is exactly what we tested, at this version” a claim we can stand behind.
- A narrow read of your repository. If you would rather your repository stay the source of truth, a GitHub App reads your
tests/directory and nothing else. The token is scoped to that read; no other directory is fetched, and the contents are used for the run and then discarded.
What we never do
| Area | Our commitment | |
|---|---|---|
| Training | Your code, test cases, results and evidence are never used to train any model. | — |
| AI model calls | BugMojo’s AI features run on your own provider key (bring-your-own-key) and only when your workspace configures an agent. The hosted runner makes no model calls at all. | — |
| Other customers | A Cloud Run container runs exactly one job and is destroyed. Nothing is shared between jobs. | — |
How to verify this
A trust statement you cannot check is a marketing sentence. These claims are enforced in code, in places you can point a reviewer at:
- The container’s job parser refuses a job that carries a repository, clone URL, branch, source path or GitHub token — it does not ignore the field, it rejects the job.
- Spec paths are normalised and must resolve inside
tests/; anything that climbs out is refused before a byte is written. - The container is built on the official Playwright image and contains no
gitclient. - The child process runs with an allow-listed environment, so a spec cannot read BugMojo’s own credentials, and every log line, warning and error is redacted of API keys before it is written.
If you are running a security review and want to see the runner, ask us — we will walk you through the image and the job contract.

