Skip to content
grayhat
Esc
↑↓navigate↵open⌘Jpreview

Changelog

Every release,
diffed_

What shipped, what changed and what we fixed, newest first. 2 releases since the first commit on Nov 4, 2026.

~/grayhat
  1. v0.2.0LatestReviews·· 48c9bc1

    A hacker on every pull request

    Every push now gets a security review, a targeted scan, exploits run in a sandbox, and, when the attack works, a pull request that fixes it.

    Scanning a repository once tells you where you stand today. This release keeps you there: every pull request is attacked before it merges, and real findings arrive with a fix that has already been tested against the original exploit.

    Added

    • Security review on every push. grayhat compares the index before and after the change and ranks what moved in security terms: a removed guard, a new route that reaches a sink, a dependency that gained network access. Those changes are attacked first, with the full call path in hand.
    • Exploits, not warnings. The hacker runs on an open-weight model with its refusal training removed, so it writes real attacks: IDORs, broken auth, race conditions, injection and business-logic abuse. A second, skeptical pass throws out any lead it can’t justify.
    • Sandbox verification. Your app boots in a throwaway virtual machine and each exploit is run against it. A lead becomes a finding only if the attack works. Outbound network is denied by default, and the machine is destroyed when the run ends.
    • Review comments where the bug is. Findings are posted as one inline comment each, on the line of the diff where the attack path starts, plus a summary and a check run. Choose inline and summary, summary only, or check run only.
    • Merge gates. Fail the check at the severity you choose. Verified exploits always fail it.
    • Verified fix PRs. For each confirmed finding, grayhat writes a patch and adds a regression test, then re-runs two checks in the same sandbox: the original exploit must now fail, and your test suite must pass. Only then does the fix PR open. If either check fails, you still get the finding, its reproduction and a ready-to-use fix prompt.
    • Supply-chain checks on dependency updates. Each new package version is diffed for what it can newly do: install scripts, network access, env access, native binaries. Block the risky ones from merging, or pin to the last safe version in one click.
    • Live run view. Watch a review as it happens: the ranked targets, the agent’s trace, and each exploit as it runs.
    • Learned rules. Dismiss a finding with a reason and grayhat remembers it. For example, it learns that your tenantScope() helper counts as an ownership check, or that /health is meant to be public.

    Improved

    • Reviews start in seconds: the index updates only the files a pull request touched.
    • A new push to the same pull request cancels the run in progress, so you pay once per head commit.
    • Docs-only and formatting-only pull requests are skipped and free.

    Pricing

    Action Credits
    Pull request review, any size 1
    Verified fix PR, only if it opens 5
    Supply-chain alerts free

    Failed fix attempts are never charged.

  2. v0.1.0Scanning·· 8e93ae4

    Index and scan your whole codebase

    Install the GitHub App, pick your repos, and grayhat maps every entry point, guard and data flow, then attacks all of it in a first deep scan.

    The first release of grayhat: point it at a repository and it builds a security map of the code, then hunts across the whole attack surface for bugs it can actually exploit. Every finding comes with the request that proves it.

    Added

    • GitHub App onboarding. Install the app, then choose which repositories to protect. Repos are listed by attack surface, and the cost of the first scan is shown before it starts.
    • A persistent security index for every repo. grayhat reads your code without running it and records what an attacker cares about: routes and webhooks, the guards that actually protect each one, untrusted input and the dangerous sinks it can reach, what each module is capable of, hard-coded secrets, and supply-chain signals from lockfiles, CI and Docker config.
    • Seven languages from day one: JavaScript and TypeScript, Python, Go, Java, PHP, Ruby and Rust, with route and guard extraction for the major web frameworks in each.
    • Onboarding deep scan. A full hunt across the attack surface, ranked so the riskiest entry points are attacked first. Anything the hacker suspects is tested inside a throwaway sandbox before it’s reported.
    • Attack surface view. Each repository page lists every entry point with its guards, what it reaches, and how many findings it has. Routes with no auth guard are flagged for review.
    • Findings with proof. Every finding has a severity, a CWE, the attack path through your code, and a reproduction you can run yourself. Anything that couldn’t be proven is labelled likely instead of being passed off as confirmed.
    • SARIF export, so findings show up in GitHub code scanning and existing security tooling.
    • npx grayhat scan to index a local checkout and see its attack surface from the terminal.

    Fast on large codebases

    The index builds in seconds, even on very large repositories, and afterwards only re-reads files that changed. Cold builds, measured on an Apple M2 Max:

    Repository Lines Time Peak memory
    expressjs/express 22k 0.5 s 67 MB
    rails/rails 603k 1.6 s 430 MB
    TryGhost/Ghost 1.38M 2.5 s 594 MB
    kubernetes/kubernetes 6.3M 8.7 s 1.4 GB
    nodejs/node 14.2M 15.1 s 1.7 GB

    Security

    • Indexing never executes repository code and never touches the network.
    • grayhat keeps the index, not a copy of your source, and nothing is ever used to train a model.

    Pricing

    An onboarding deep scan costs 10 credits per 25k lines of code, and the total is shown before you confirm. The Hobby plan includes 50 free credits every month.

  3. de52f80 init · Nov 4, 2026 · the log ends here.

Someone is going to attack your code. Make sure it's us first.