
Security News
Ruby's Bundler 4.0.18 Extends Cooldown to bundle lock and bundle cache
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.
h1grep
Advanced tools
grep for disclosed HackerOne reports. A zero-dependency CLI that searches HackerOne's public Hacktivity feed of disclosed, resolved vulnerability reports — by keyword, severity, CWE, program, top votes, or top bounty — and prints structured results for recon and research.
No API key. No account. Read-only. Standard-library Python only.
$ h1grep --top-voted --limit 3
========================================================================
h1grep — top voted
showing 3 of 50 matches from 50 fetched reports — raise with --limit/-n
========================================================================
[01] Takeover an account that doesn't have a Shopify ID and more
Severity : CRITICAL | CWE: n/a
Program : shopify | Reporter: imgnotfound
Bounty : no bounty | Votes: 2993
URL : https://hackerone.com/reports/867513
It isn't "another recon script." The value is the reverse-engineered GraphQL
knowledge baked in. HackerOne's Hacktivity endpoint is public but undocumented,
and it moves. For a long stretch it hard-crashed on several otherwise-natural
query shapes (substate filter + sort + report fields; disclosed_at + substate;
named variables + substate + report fields), so h1grep encodes empirical
crash-avoidance rules. More recently it tightened team_id to a strict [Int!],
which silently breaks any client still quoting the value. Tracking that drift is
the work — it's why searching disclosed reports from the terminal just works
here.
Studying disclosed reports is one of the highest-signal ways to learn validated techniques: what got voted up by the community, what paid out, and how impact was framed for a specific program.
pip install h1grep
Or run straight from source (nothing to install — it's stdlib-only):
git clone https://github.com/sonnycroco/h1grep
cd h1grep
python3 h1grep.py --top-voted --limit 25
Requires Python 3.9+.
# Top-voted reports — best validated techniques, great starting point
h1grep --top-voted --limit 25
# Highest-bounty reports — signal for business-impact framing
h1grep --top-bounty --limit 10
# Keyword search in report titles across multiple pages
h1grep --query "SSRF" --pages 10
h1grep --query "OAuth bypass" --pages 5
# Filter by severity (client-side)
h1grep --top-voted --severity critical high --limit 20
# Filter by CWE label (client-side regex)
h1grep --top-voted --cwe "SSRF" "Request Forgery"
# Program-specific disclosures
h1grep --program shopify --pages 3
# Resolve a program handle to its numeric team ID
h1grep --lookup-program gitlab
# Full combo: top-bounty SSRF reports, critical/high only
h1grep --top-bounty --query "SSRF" --severity critical high --pages 10
# JSON output for piping into jq, etc.
h1grep --top-voted --query "XSS" --pages 5 --json
| Flag | Description |
|---|---|
--query, -q | Keyword regex matched against report titles (client-side) |
--severity, -s | Filter by severity: none low medium high critical (client-side) |
--cwe | Filter by CWE label regex, e.g. "SSRF" "Traversal" (client-side) |
--program, -p | Filter by program handle (e.g. shopify) |
--lookup-program | Resolve a program handle to its numeric team ID and exit |
--top-voted | Sort by community votes (validated techniques) |
--top-bounty | Sort by bounty amount (impact framing) |
--limit, -n | Max results to display (default: 20) |
--pages | Pages to fetch, 50 results/page (default: 1; use 5–20 for keyword searches) |
--json | Emit raw JSON instead of formatted text |
Keyword, severity, and CWE filtering are applied client-side after fetching,
so widen --pages when you filter aggressively.
pageInfo.endCursor and sleeping 0.3s between pages (polite rate limiting),
up to --pages.--json. The header reports how
many matches were shown versus found, and how many fetched rows were dropped
for being undisclosed.h1grep uses the same public GraphQL endpoint the
Hacktivity web UI calls. It is not an official API and may change without
notice. When the response shape changes, h1grep fails with a clear
"HackerOne API shape changed — please open an issue" message rather than a
stack trace — please do open an issue
if you hit it.--top-bounty has a low yield per page. The highest-paying entries are
mostly still undisclosed: they carry a bounty amount but no public report, so
they get dropped. Typically only ~5 of 50 fetched rows survive on the first
page. The header tells you how many were dropped — widen --pages.FAQs
grep disclosed HackerOne reports for recon and research
The pypi package h1grep receives a total of 101 weekly downloads. As such, h1grep popularity was classified as not popular.
We found that h1grep demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.

Company News
Socket is now in the AWS Security Hub Extended plan. Adopt it through AWS, apply committed spend, and block malicious open source packages.