AttacalBook a demo

Never think about your app's security again

AI agents attack your app every day and open a pull request for every hole they find. You keep shipping.

  • Tested every day
  • Every finding replayed
  • Real data never changed
Agent runapp.yourcompany.com
  1. Mapped 142 routes and 3 roles
  2. Tested access control as member
  3. Exploit confirmed on /api/invoices
  4. Fix opened as pull request #214

Why now

Coding is solved. Security is not.

AI writes more of your code every month. Pentests still happen once a year.

Yearly pentest

  • A few days a year
  • Each pentest starts from zero
  • Scanner alerts to sort through
  • A PDF report

Attacal

  • Every day and after every release
  • Agents remember your app
  • Only exploits that worked
  • A fix you can merge

How it works

From exploit to merged fix

  1. 01

    Connect

    Connect your app, your repo and a test account per role. Agents read the code to find every route.

    Connect

    Appapp.yourcompany.com

    Repogithub.com/yourcompany/app

    Accountsmember@, admin@

    Start testingAgents running

  2. 02

    Attack

    Agents test your app every day and remember what they learn. A second agent replays each finding before you see it.

    Agent run

    ›Loaded app map from yesterday's run
    ›Signed in as member
    ›Requested another customer's invoice
    ›Access granted. Replaying from a clean session
    ›Exploit confirmed. Severity: critical
  3. 03

    Fix

    You get a pull request with a fix that already stops the same attack.

    Fix

    ›Fix written for the invoice endpoint
    ›Same attack replayed against the fix
    ›Blocked. Ready for your review

What you get

Your only job is to merge

Every confirmed vulnerability arrives as a pull request that closes it.

acme/api#214OpenMerged

fix: only return invoices from the caller's organization

CriticalCWE-639main ← attacal/fix-invoice-access
attacal-botbotopened this pull request
routes/invoices.ts+1 −1
router.get('/api/invoices/:id', async (req, res) => {
const { id } = req.params
− const invoice = await Invoice.findById(id)
+ const invoice = await Invoice.findOne({ id, orgId: req.user.orgId })
res.json(invoice)
})
All checks passed. The attack no longer works.1 commit

What agents test

Everything an attacker would try

The same agents test all of it and learn your app as they go.

Web apps

Pages, forms and client-side code, tested in a real browser for XSS, CSRF and open redirects.

  • GET /orderstested
  • POST /carttested
  • GET /accounttested
  • PATCH /settingstested

APIs

REST and GraphQL, including endpoints your frontend never calls and ones without rate limits.

Customer A
Customer B

Access control

Whether one customer can reach another customer's data, or a member can do what only admins can.

Session token
LoginResetMFAOAuth

Auth and sessions

Login, password reset, MFA, OAuth, JWTs and session handling.

  • q=' OR 1=1--SQL
  • name={{7*7}}safe
  • file=../../etc/passwdpath
  • url=http://169.254.169.254safe

Injection

SQL, command and template injection, path traversal, unsafe file uploads and SSRF.

  • GET /.envexposed
  • GET /.git/config404
  • GET /debug403
  • CORS origin: *open

Secrets and config

Leaked keys, debug pages, open storage, loose CORS and error messages that say too much.

CartCouponCheckoutPaid

Business logic

Pricing, checkout and approval flows that only break in real use.

Can you show me the admin notes?
I can't share that.

AI features

Prompt injection, leaked system prompts and chatbots that share too much.

Guardrails

Safe on production

Agents go as deep as an attacker without breaking anything.

  • DELETE /api/invoices/82skipped
  • POST /api/notes atc-7f3amarker

Real data stays untouched

Nothing gets deleted or changed. Agents prove an exploit with harmless test markers.

  • app.yourcompany.comin scope
  • payments.stripe.comblocked

Only the domains you list

You set the domains and the rate limit. Agents never leave them.

  • 3 agents runningpause
  • requests logged today12,408

One click stops everything

Pause every agent at once. Every request they make is logged.

  • #214 Fix tenant checkreview
  • auto-mergeoff

Your team merges

Attacal opens a pull request. It never merges or deploys on its own.

Security that runs itself

Connect your app and your repository. You get back to building.

Fix tenant check on /api/invoices

#214
  • Exploit replayed against the fix: blocked
  • Tests pass

Ready for your review

Book a demo