OzonebyCecuro

    Every pull request, reviewed like an audit.

    Ozone learns how your codebase works, then flags exploitable bugs on the pull request, before they merge.

    Get started free

    2-minute install · $100 free credit

    Findingsrunning
    All projectsSeverityOpen4 open findings
    contracts/Vault.sol:120·acme/protocol

    The transfer to msg.sender executes before balances is decremented, so a contract receiving it can re-enter emergencyWithdraw and drain the vault in one transaction. Move the state update above the call, or apply the existing nonReentrant modifier.

    - (bool ok, ) = msg.sender.call{value: amount}("");
    + balances[msg.sender] -= amount;
    FixedIgnoreFalse positiveCommented on PR #482
    services/auth/reset.ts:43·acme/api
    contracts/Bridge.sol:88·acme/protocol
    contracts/Oracle.sol:65·acme/protocol

    Illustrative data. Select a finding to open it.

    Built on the Cecuro audit engine.

    See how the engine works

    #1on OpenAI's exploit benchmark, EVMBench

    Can you take a look at my PR?
    Which one? You opened nine today.
    The agent wrote them. Tests are green 😎

    Review was the bottleneck before.
    Now it is arithmetic.

    Your team writes code faster than any human can read it, and the exploitable bug is never the one the tests cover. Ozone reads every line at the speed the agents write it.

    OZ_MODEL

    It learns the codebase first.

    Generic scanners pattern-match line by line. Ozone builds a working model of your system: how requests flow, which functions move funds, where untrusted input crosses a trust boundary. That model updates itself as your code evolves, and every review is judged against it rather than against a rule list.

    api/auth.tstrust boundary
    services/payments.goexternal calls
    jobs/payouts.pysigns transactions
    contracts/Vault.solhandles funds
    contracts/Oracle.solprice feed
    contracts/Roles.solaccess control
    Ozonecall graph · data flows · trust boundaries

    OZ_REVIEW

    An audit's judgement, on every commit.

    Not a linter with a language model bolted on. The same multi-agent engine, pointed at the diff.

    Triggers

    Pull requests
    Nightly sweep0 3 * * *

    Every pull request, plus a nightly sweep.

    Point Ozone at a repository and it reviews each pull request as it opens. Schedules cover the rest of the codebase on their own cadence.

    Runs

    09:14:02Cloned acme/protocol1.4s
    09:14:09read · Vault.sol312 lines
    09:14:26Reasoningcall before state write
    09:14:41Findingcritical · Vault.sol:120

    Show your work.

    Every run keeps its transcript: which files the agent read, which callers it followed, what it reasoned before it flagged anything. You can review the reviewer.

    Findings

    critical1
    high2
    medium1

    Severity you can act on.

    Each finding arrives classified with the concrete impact spelled out, not a generic rule ID and a link to a CWE page. Triage it as fixed, ignored, or a false positive.

    Fixes

    - msg.sender.call{value: amt}("");
    + balances[msg.sender] -= amt;

    A fix, not a complaint.

    Findings carry the suggested change as a diff, in the file and at the line where the problem was introduced.

    Pull requests

    ozone / review1 critical
    Commented on #482

    A gate, not a report.

    Ozone runs as a check and comments on the pull request. It never pushes code. Findings land before the merge button, which is the only moment a fix is cheap.

    Knowledge

    Protocol invariants.md
    Threat model.md
    Postmortem: 2026-04.md

    Your context, in every review.

    Add specs, invariants, threat models or a past postmortem. They are loaded into the workspace so reviews know what your system is supposed to do.

    OZ_BOUNDARY

    Web2 and Web3, one engine.

    Real attacks rarely respect the boundary. A leaked backend key drains a treasury. A compromised API feeds a bad price to a contract that trusted it. Ozone models both sides as one system and catches the issues that live in between. If you have no smart contracts at all, it works as continuous security review for a pure Web2 stack.

    Web3SolidityRustVyperMoveand more
    Web2TypeScriptPythonGoJavaand more
    api-gatewayTypeScript
    auth-servicePython
    payments-apiGo
    Vault.solholds funds
    Oracle.solprice feed
    Bridge.solcross-chain
    Ozone layer

    Flagged: Leaked deployer key

    Web2Web3

    OZ_TRUST

    Your code stays yours.

    An isolated sandbox per review

    Each review clones your repository into its own isolated sandbox. Nothing is shared between runs or between customers, and the sandbox is destroyed the moment the run ends.

    Your repository is never stored

    The clone lives only inside that sandbox. No copy of your repository sits on our servers. What Ozone keeps is the review itself: the findings and the run transcript, the record of what the agent read and did.

    Never used for training

    Your code is never used to train AI models, and product analytics never include repository content. Ozone never pushes code, it writes only pull request comments and checks.

    You choose which repositories the GitHub App can reach, and can revoke access at any time. Read the details

    Put a protective layer over your code.

    Connect your repos and Ozone starts building its model. The first review runs on your next pull request.