JW Labs JW Labs LLC · a software studio· Security

Security and responsible disclosure

If you have found a security problem in anything JW Labs LLC runs, we would like to hear about it, and this page is how.

Report it to help@jwlabs.ai. Put security somewhere in the subject line. A report goes straight to the people who can change the code, and what we can and cannot promise is set out below.

There is no bug bounty and no payment. We would rather run no programme than one we could not honour. We will credit you by name or handle if you want that and are happy to be told not to.

What to include

The same things that make any report actionable, plus the specifics:

Please do not send us the output of an automated scanner with no analysis. We will read it, but a list of missing headers on a static site with no script and no cookies tells us nothing.

In scope

Out of scope, and where those reports should go instead

These are not ours to fix, and reporting them to us wastes your time:

What is structural rather than promised

This section exists because the useful thing to tell a security researcher is not what we intend, it is what the design makes impossible. Each of these is checkable and most of them are enforced by something that fails a build.

This website has no script at all. No inline script, no bundled script, no analytics, no tag manager, no remote font, no remote image, no cookie, and no login anywhere on it. A link you choose to follow is the only thing on any page that names another host. That is checked mechanically on every build rather than reviewed by eye, and a page that broke the rule would not be published.

4a talks to a very short list of origins, and the browser enforces it. Its Content Security Policy is short enough to print, which is what makes "there is no third-party code in here" a property of the software rather than a promise in a document.

No third-party SDKs in 4a. No advertising code, no ad identifier, no analytics library, no crash reporter. None, rather than few.

The public client key is public by design. 4a's browser code carries the publishable key for its database, as every client-side application of that shape does. The control that actually matters is the per-row access rule on the database side — and those rules are written to specification and not yet verified against the live project. We are telling you that because it is true, because the status page says the same thing, and because it is the most likely place for a real finding.

Nothing collected that a listener did not send. Most of what 4a knows stays on the device. Five kinds of event reach our database, against an anonymous account holding no name, email or phone number, so there is no identity store to breach into a person.

The build automation is keyless. The pipeline that refreshes content holds no credentials. That is a standing constraint rather than a happy accident, and it means there is no long-lived secret in that path to steal.

What we do not have

Stated plainly, because a security page that lists only strengths is not information.

What we promise, and what we do not

We will: read your report, tell you whether we can reproduce it, tell you what we intend to do about it and roughly when, and tell you when it is fixed. If we decide not to fix something, we will say that instead of going quiet.

We will not: dispute a finding to avoid fixing it, or ask you to sign anything before we will read your email.

On legal risk to you: we have no interest in pursuing anyone who reports a problem to us in good faith, and we will not. That is a statement of intent from the company, and it is deliberately not dressed up as a legal safe harbour — we are engineers rather than lawyers, our terms say as much, and a paragraph of pseudo-legal comfort language we could not stand behind would be worth less to you than this sentence.

What "good faith" means here is the ordinary thing: work against your own account and your own data, do not degrade the service for anyone else, do not access another person's data — and if you accidentally do, stop and tell us — and give us a chance to fix it before publishing.