Proof-gated scanning
Scans everything — SAST, SCA, secrets, IaC, DAST — then reports only what it can reach, expose, and exploit. The other 50,000 findings are kept for audit, not for anxiety.
Prove-and-fix security · code, IaC & APIs
xounce cuts your backlog to the vulnerabilities that actually need your attention — proven, and fixed for you — and rebuilds every API payload so attacks and leaks bounce off.
Prove what’s real across code, dependencies, secrets and infrastructure — then auto-fix it. See the pipeline →
Rebuild every request and response at your edge, so malicious payloads in and sensitive data out never get through. See cross-domain →
Pre-launch · already proved on our sibling companies cenefits.com and offmon.com ·
$ xounce attempt --finding XNC-2214
→ AI probed the path · built an exploit from call-graph (14 steps)
→ replayed against an ephemeral target
✓ EXPLOIT CONFIRMED — SQLi via POST /api/v2/transfer
→ PoC saved · replayable · attached to fix PR #482
The proof gate
Every other tool dumps the raw pile on you and calls it coverage. xounce runs each finding down a funnel and refuses to report anything it can’t prove. The collapse is the product.
SAST, SCA, secrets, IaC, DAST — the raw pile every other tool dumps on you.
48,539 never called — the vulnerable function is actually used in your code, not just the package installed.
1,659 not internet-reachable — the vulnerable path is exposed to the public internet: real attack surface.
AI probes each one and lands a working exploit. No proof-of-concept → no report. Each survivor ships with a replayable PoC.
Illustrative — this is what the gate is designed to do, not a measured result on your repo. Your numbers will differ. We publish real run logs as we onboard design partners.
One pipeline
Six surfaces, one gate. Proof and fixes first — everything else is retained for audit, off your screen.
Scans everything — SAST, SCA, secrets, IaC, DAST — then reports only what it can reach, expose, and exploit. The other 50,000 findings are kept for audit, not for anxiety.
When a confirmed vuln has a clean fix, xounce opens a labeled PR — bumps the package, regenerates the lockfile — with the CVE details and the exploit proof in the body. One PR per language.
Changed files only. A real review: approves when clean, requests changes with findings, and leaves one-click committable suggestions for insecure config, hardcoded secrets, and vulnerable deps.
Renovate-style, per repo. Confirmed-exploitable fixes open their own PR. Everything else is a checkbox you tick when you want the PR. It never spams.
Confirmed exploitable and exposed — that’s the whole main view. Everything the gate dropped is retained for audit, one click away, never on the front page.
Optional runtime threat detection (Falco) alongside. Per-tenant subdomains, self-serve onboarding, and a GitHub App that labels everything it authors.
template, 14-step trace, reproduced on ephemeral target
--- a/package.json
+++ b/package.json
- "lodash": "4.17.19"
+ "lodash": "4.17.21"
You merge. We never do.
Where this goes
Autonomy from instruction — not from you. xounce opens pull requests on its own. It never merges them.
Nothing reaches production until a human clicks merge. A bot never touches the button.
xounce is actively being built by a small team and AI agents — agents do the heavy lifting, humans review and merge. We ship the way we tell you to: autonomy from instruction, never from us.
Onboarding
Two steps. You grant access to the repos you choose — nothing else, least-privilege, read-only until you opt a repo in to PR authorship.
The cross-domain layer is configurable per route, so our MCP server lets Claude Code, Cursor, or Codex read the playbook and help you wire it into your edge — customising the schemas to your API, showing every change, and stopping for your approval.
# paste into your agent
Wire xounce's cross-domain layer into my
edge. Read the playbook at xounce.com/agent,
customise the schemas to my routes, and show
me every change before you make it.
Either way, repo and infrastructure access is always something you grant explicitly in GitHub or your cloud — never auto-granted on your behalf.
Cross-domain · a track of its own
Rebuild, don’t detect.
A WAF reads a payload and waves it through. That’s where whole attack classes live — the parser your firewall uses and the parser your backend uses disagree about the same bytes, and the attacker crafts the gap. xounce closes it by refusing to forward anything the attacker sent.
For every request, xounce parses the payload into typed fields, validates it against a schema, discards the original bytes, and rebuilds a clean, canonical payload before your backend ever sees it. A protocol break.
The parser-differential bug class isn’t detected — it’s made unexpressible. Injection, mass-assignment / overposting, duplicate-key smuggling, oversized and malformed bodies: gone, because none of it survives the rebuild.
LLMs synthesize the schemas offline; compiled, deterministic code enforces them inline. No model sits in the request path — so there’s nothing in the hot path to prompt-inject or slow down.
POST /api/v2/transfer
{
"amount": 100.00,
"amount": 9999999, ← dup key
"is_admin": true, ← overpost
"note": "'; DROP--" ← injection
}
POST /api/v2/transfer
{
"amount": 100.00
}
// dup collapsed · unknown dropped
// value preserved exactly
Both directions
The rebuild runs both ways. On the way in it bounces attacker-crafted payloads. On the way out it’s data-loss prevention: the response is validated against what that route is allowed to return, and anything it isn’t — secrets, tokens, PII, over-exposed fields — never leaves your boundary.
Injection, mass-assignment, parser-differential smuggling, malformed and oversized bodies, and prompt-injection payloads aimed at your AI features — rebuilt away before the backend parses a byte.
Over-exposed objects, stack traces, internal tokens, API keys and PII that a bug or a broken-object-level-authorization flaw would spill — validated against the route’s response schema and stripped on the way out.
{
"id": 8842,
"email": "[email protected]",
"ssn": "409-52-...",
"pw_hash": "$2b$...",
"stripe_sk": "sk_live_..."
}
{
"id": 8842,
"email": "[email protected]"
}
// off-schema fields never
// left the boundary
How it integrates
Like the GitHub App does for your code, a lightweight data plane does for your traffic — one attach point, zero code changes, and you move one route at a time.
An Envoy ext_proc filter or a sidecar proxy at your ingress — post-TLS, so xounce never holds your keys. Nothing in your app changes.
It watches real traffic and synthesizes per-route request and response schemas offline. You approve them as diffs, GitOps-style.
See exactly what it would rebuild and what it would strip — on your real traffic, changing nothing.
Flip one route to enforce. It fails safe by design, and runs autonomously if our control plane is ever unreachable.
Best for teams that ingest untrusted JSON all day — fintech and BaaS, healthcare, webhook-heavy B2B SaaS, public APIs, and AI/agent apps whose tool calls are attacker- influenceable. Anywhere a malformed request or an over-sharing response is a breach.
Why xounce
Where we are
xounce is being built with a small group of design partners. You won’t find customer logos, compliance badges, or a wall of testimonials here — we’d rather show you a run log and a replayable proof. When we have a SOC 2, we’ll put it here. Not before.
The exploit gate is honest about its own limits: a vulnerability the engine can’t yet trigger is kept and labeled, never silently deleted. We publish what the engine gets wrong.
You’ll hate xounce if
AI-friendly · ask your agent
We treat AI agents as first-class here — reading us, asking us, and reaching us are all built in. xounce publishes its own knowledge base at an open endpoint: copy the prompt below into ChatGPT, Claude, Cursor — any agent — and it’ll answer whatever you ask, and can bring us a lead on your behalf.
Learn about xounce and tell me if it fits my stack — read its knowledge base and answer from it: https://xounce.com/api/ask (returns JSON; add ?q=your-question for a specific answer, or ?format=md for markdown). If it looks like a fit and I want the team to reach out, ask me for my email, name, company, and whether I'm interested as a design partner, investor, or partner, plus a one-line message — then POST it as JSON { "email": "...", "name": "...", "company": "...", "role": "...", "message": "...", "source": "AI agent" } to https://xounce.com/api/contact so they get notified and can reply.
The knowledge base we maintain — everything about xounce, machine-readable, always current.
Your agent — or you — can send us a question or a pilot request. It reaches us directly.
FAQ
Design-partner program · open
You give us a repo and 30 minutes a week. You get every confirmed finding, its replayable proof, and the fix PRs — free, while we build. We get your feedback on what the gate got right and wrong.