AppScan
For small teams

Review that survives a sprint.

Four engineers, no security hire, and a release cadence that does not pause for anyone. What you need is not another dashboard - it is a verdict in the place where your team already argues about code.

01The situation

Sound familiar?

Nobody owns security

Everyone agrees it matters and nobody has it in their sprint, so it happens when something scares you.

Scanners block the wrong branch

A tool that reports the whole backlog on every pull request gets muted within a fortnight, and stays muted.

Regressions are invisible

The guard someone deleted while refactoring is the kind of change a human review misses at 4pm on a Friday.

Questionnaires arrive anyway

The first enterprise customer asks how you handle vulnerabilities, and the honest answer is currently “carefully”.

02What changes

A verdict on this change, not on your backlog.

Findings on a branch are compared against the base branch. New problems are raised; inherited ones are listed for context and never used to block a merge. That is the difference between a check people read and one people mute.

  • NEW versus UNCHANGED

    The check speaks only about what this change introduced. Nobody has to fix main to merge a feature.

  • Regressions raised on their own

    A protection that existed before and does not now is its own finding, with the diff that removed it.

  • Invariants instead of opinions

    The rules your code already follows are derived, stored and re-checked on every commit, so “we always scope by tenant” becomes testable.

  • Alerts that respect the team

    Instant alerts are grouped per site and cooled down; everything that can wait arrives in a digest, and each person tunes their own.

github.com/acme/checkout · pull/482action required
CriticalNew in this changesource.authorization.protection-removed
The admin check was removed from the refund route
- requireRole(req, 'ADMIN');
const orders = await db.order.findMany({
Highsource.tenancy.lookup-without-tenant-scope
findMany runs without an organization filter
Unchanged · 9 already on main, not raised again on this branch.
03A week with it

How it lands in an existing process

  1. 01
    Install the App on one repository

    Start with the service that handles money or personal data. The first inventory scan establishes the baseline.

  2. 02
    Let one sprint run

    Watch what the checks say on real pull requests before you decide to require them. The verdicts are informational until you say otherwise.

  3. 03
    Point alerts at one channel

    One Slack webhook, grouped and cooled down, so the channel stays worth reading.

  4. 04
    Answer the questionnaire from the audit log

    When the enterprise form arrives, the trail, the reports and the coverage records are already there.

Where to start
Studio$49 / month

Three sites, five people and two and a half thousand credits a window - the shape of a small product team with a staging environment.

  • Three sites with separate health and history
  • Five members with owner, admin, member and viewer roles
  • Three scans running at once
  • Slack webhook, digests and PDF reports
Create a free account

Start on Free, which does not expire. Upgrade when it pays for itself.

Try it on one repository.

Start on Free, connect one repository when you want the code half, and judge it on real pull requests rather than on this page.