P
Prove
⚠

Something went wrong

The app encountered an unexpected error. Your data is safe in local storage.


    

Drop to scan

Release your .py file to analyze it immediately

● Prove // v1.2535.2283° N · 126.8436° E

Find it.Prove it.

Python security analysis · exploit search · formal proofs

app.py
01

Trace

Follow the input.

02

Exploit

Find the attack.

03

Prove

Show the proof.

98
CWE classes
99.8%
Precision*
~7ms
Per file
* OWASP Benchmark Python, labelled-CWE scoring · Method

Your code.
Under review.

404

Page not found

This page doesn't exist, or was moved. Check your URL or use the navigation.

Activity Log

Recent actions you've taken in this browser — handy for retracing your own steps.

Stored locally in this browser only. It is not tamper-evident and is not an audit trail — clearing site data or switching browsers loses it, and it is not suitable as evidence for compliance.

Welcome back

Your security analysis workspace.

Total scans
0
Start scanning to see data
Findings
0
Across all scans
Open vulnerabilities
0
Needs attention
Scans this hour
0
Free tier · 60 scans/min
Quick start

Analyze Python for 98 CWE classes with machine-checked Rocq proofs. Pick a workflow to begin.

SQL Injection
Sample with CWE-89 detection.
Pickle Deserialization
CWE-502 with Rocq proof.
Command Injection
Sample with CWE-78 detection.
CWE Catalog
Browse 98 supported classes.
Benchmarks
Prove vs Bandit / Semgrep / CodeQL.
Rocq Proofs
Machine-checked Qed proofs.
Recent activityView all →
Analytics

Scan trends, top CWEs, and verdict breakdown.

Scans
0
Vulns found
0
Certified safe
0
Rocq proven
Avg latency
0ms
Basic mode
Scans over timeLast 30 days
Top CWEs
Verdict breakdown

Security Scanner

Paste Python. Get verdicts.

mode: single
Source
input.py
Try SQL Injection XSS Deserialization Command Inj Path Traversal Safe (w/ defense)
1

              
              
Ln 1, Col 1 — 0 lines 0 chars Saved Python · UTF-8
Auto-scan
Analysis
🔍

Ready to scan

Paste code or upload a file, then click Analyze — or press ⌘↵.

Benchmarks

Head-to-head performance against industry-standard SAST tools on OWASP, 222-file, and cross-validation benchmarks.

Precision
99.8%
OWASP: 1 FP · curated sets: 0 FP
OWASP F1
96.5%
+40.8pp vs Bandit · +56.1pp vs Semgrep
Validated Files
1,626
3 in-dist benchmarks + OOD
Avg. Scan
<10ms
AST mode

Competitive Comparison

F1 across three Python benchmarks (paper v41, Table 1)

ToolOWASP222-fileExt-174

CWE Catalog

98 supported CWEs sourced from CVE databases, OWASP, and MITRE. Each entry includes detection patterns, taint specs, and Rocq proof links.

Loading…
📚

Select a CWE

Pick an entry from the list to view full detection pattern, sinks, sanitizers, and code examples.

Rocq Proof Library

Machine-checked safety proofs backing each defense kind. 125 Qed proofs · 0 admitted.

📜

Select a proof

Browse machine-checked Rocq proofs backing each defense kind.

Talk to us about a pilot

Prove is adopted through a conversation. Tell us what you are shipping and we will set up an evaluation on your codebase.

Free

Sign up with your email. No card, nothing to arrange.

  • Single-file analysis, full verdict set
  • Code safety certificates — not paywalled
  • 98 CWE classes
  • 60 scans/min
  • AI autofix on a single file
  • Audit report export

Scan History

Previous analyses saved to your workspace. Click a row to view findings.

What's New

Product updates, new features, and improvements.

v1.25OWASP Top 10:20252026-10-23

  • OWASP Top 10:2025 categories — findings and the CWE catalog now use the 2025 edition. Injection moves from A03 to A05 and cryptographic failures from A02 to A04; hardcoded credentials and certificate validation are now A07, plaintext storage A06, and error messages that leak details A10.
  • Source of the mapping — 65 of the 98 CWEs come straight from the official 2025 CWE lists. The other 33 are not in those lists (mostly sub-variants such as individual path-traversal forms) and keep their 2021 category under its 2025 number.
  • Catalog v2.3 — adds the 2025 category to every entry. Six entries that had no category before (XXE, SSRF, XPath injection and others) now have one.
  • Catalog filters — the OWASP filter and Favorites, which had stopped appearing, are back. The filter lists the 2025 category names.
  • Verdicts unchanged — detection logic is the same as v1.24; only the category labels changed. Certificates issued from this version show engine build 2026-10-23.

v1.24Analysis accuracy2026-10-14

  • SQL injection no longer certified by unrelated code — a query built by string concatenation could be certified safe when the same function had an unrelated regex check (re.compile, fullmatch) or a ? elsewhere in the query string. A defense now counts only when it is applied to the tainted value.
  • Shell invoked through argv — code that hands a command string to a shell program, such as subprocess.run(["sh", "-c", user_input]), is now reported as command injection, the same as shell=True.
  • Fewer false positives — string .find() is no longer NoSQL injection, XPath queries are no longer SQL injection, redirects are no longer XSS, files the code names itself are no longer untrusted input, and storing a hash is no longer plaintext storage. Warnings on the safe files of OWASP Benchmark dropped from 522 to 150, with no previously detected vulnerability missed.
  • Catalog v2.2 — removed sanitizer entries that are not defenses, and sink names carried over by mistake from other languages or individual projects.
  • AI auto-fix — the model now receives the catalog's defense rules, so first attempts pass verification more often; patches that use removed APIs (such as flask.escape) are rejected; output length is capped so thinking models cannot stall for minutes.
  • Engine build on certificates — certificates issued from this version show engine build 2026-10-14.

v1.23Code safety certificate2026-10-08

  • Code safety certificate — a signed certificate for an analyzed file, listing the file name and SHA-256, the CWEs checked, the verdicts, the Rocq theorem names and the engine version. View it in the browser or save it as PDF.
  • Not issued while a vulnerability remains — the server re-analyzes the code on request and refuses if any verdict is vulnerable.
  • Tamper check — the signature on the certificate confirms its contents are unchanged; a single altered character fails verification.
  • Password reset — receive a reset link by email. The link works once, and resetting signs out every other device.
  • Corrections — removed claims of security certifications we do not hold and figures without a source; rewrote where analysis runs and what is stored to match actual behaviour.
  • Privacy Policy and Terms of Service — published the official Korean documents.

v1.22Accounts and results2026-07-28

  • Sign-up policy on public instances — connecting a domain no longer opens sign-up to everyone; the operator sets the policy.
  • GitHub and Google sign-in — implemented; enabled when configured.
  • Usage limits on AI auto-fix only — analysis itself is not metered.
  • Tidier results — a single finding no longer comes with a screen of empty metrics and filters.
  • Contact form — a contact form that does not depend on a mail client.

v1.21Removed dead screens2026-07-27

  • Removed three menu items that led nowhere.
  • Removed the status and integrations pages, which had no real data behind them.
  • Restored the activity log, which does have real records.

v1.20Speed and pricing copy2026-07-27

  • Removed a slow analysis stage — measurement showed it found nothing extra and slowed analysis down sharply.
  • Pricing corrections — removed features we do not provide from the Pro description. Pro is arranged by conversation.

v1.0 – v1.19Earlier releases2026-04-20 – 2026-07-26

  • Started with an analysis engine covering 98 CWE classes and 125 Rocq proofs, then added repository scans, accounts and workspaces, AI auto-fix and the results screens.
  • Detailed notes moved to our internal development records; contact us if you need them.

Settings

Manage your profile, API access, and notification preferences.

Profile
API Keys
Notifications
Analyzer
CWE Rules
Appearance
Backup & Restore
Danger Zone

Profile

Your account information.

API tokens

The /api/v1 endpoints — projects, whole-repository scans, persistent defects — authenticate with an X-Api-Key token scoped to scan, triage or admin. They are available to organisations on the Pro plan.

There is no self-service token management yet: we issue tokens for you when your organisation is set up. Email woohyunchoi@provelabs.co.kr to have one issued or revoked.

Email notifications

Choose which events trigger an email.

Critical vulnerability detected
Immediate email when CWE-89/78/502 fires
Weekly scan summary
Every Monday morning
Product updates
New features, blog posts

Analyzer defaults

Configure how scans run by default.

Taint all parameters
Treat all function params as tainted (good for snippets)
Show NEEDS_REVIEW verdicts
When Z3 can't decide, mark as review

CWE Rules

Toggle which CWE classes are enforced on your scans. Disabled rules won't produce findings.

Theme

Choose how Prove looks in your browser.

Light
White background (default)
Dark
Low-light friendly
Midnight
Deep blue accent
High Contrast
Accessibility optimized

Editor preferences

Syntax highlighting
Color Python tokens in editor and findings
Inline severity markers
Red dots on vulnerable lines in gutter

Backup & Restore

Export all your local data (history, settings, team, favorites, notifications) as a single JSON file.

Useful for moving to a new device, backup before updates, or sharing team settings.

Delete all scan history

Permanently remove all stored scans. This cannot be undone.

Delete account

Permanently remove your account and all data.

API Docs

REST API for integrating Prove into CI/CD, editors, and custom tooling. All endpoints return JSON.

Quick Start — cURL
curl -X POST http://localhost:1677/api/analyze \ -H "Content-Type: application/json" \ -d '{ "code": "from flask import request\nimport pickle\ndef f():\n return pickle.loads(request.data)" }'
Python Client
import requests # The "pro" field is deprecated. It is still accepted, but it is ignored and # the response carries a "notice" saying so — single-file analysis is the # same work and the same findings on every plan. r = requests.post("http://localhost:1677/api/analyze", json={ "code": open("app.py").read(), }) for f in r.json()["findings"]: print(f"{f['cwe_id']} ({f['verdict']}) at line {f['sink_line']}")
Endpoints
POST/api/analyze — submit code for analysis POST/api/upload — multipart file upload GET/api/catalog — list all 98 CWEs GET/api/catalog/{cwe_id} — full CWE details GET/api/benchmarks — benchmark stats GET/api/proofs — Rocq proof library GET/api/proofs/{name} — proof source GET/api/health — health check

Repository-scale endpoints live under /api/v1 — projects, whole-repo scans, and persistent defects. They need an X-Api-Key token issued to a Pro org; full schema at /docs.

Need a hand?

Common questions and quick answers

How do I scan my code?

Go to the Scanner tab, paste your Python code or upload a .py file, then click Analyze (or press ⌘↵).

What does each verdict mean?

VULNERABLE: exploit confirmed by Z3 with no defense.
SAFE: defense matched and exploit unsatisfiable.
SAFE_WITH_CERT: Rocq proof certifies the defense.
NEEDS_REVIEW: inconclusive — manual check recommended.

What is the Rocq proof?

Rocq (formerly Coq) is a proof assistant. We ship machine-checked proofs for 24 defense patterns, so when SAFE_WITH_CERT fires, safety is mathematically verified.

How does Pro differ from Free?

Free gives you the whole analysis: every verdict, including the machine-checked certificate, on one file at a time. Pro is about scale and teamwork — whole-repository scans and scoped API tokens under /api/v1, defects that persist and can be assigned and commented on across scans, and AI autofix across a whole project. It is arranged with us rather than bought online.

Is my code sent anywhere?

Static analysis runs entirely on the Python backend you connect to — no third party is involved. The AI features are different: chat, autofix and agent mode send the submitted code to the AI backend configured in AI_BASE, so treat that endpoint as you would any other code recipient.

Keyboard shortcuts?

Press ? anywhere for the full list. Use ⌘K to search.

Finding Detail

Step 1 of 5

Welcome to Prove

Let's take a quick tour.

↑↓ navigate ↵ select esc close Prove v1