hackerone-recon · git:20260504.2a64374 · 2026-05-04 · sha256 9a48e0b34338183e
hackerone-recon git:20260504.2a64374A
Immutable. This exact content is served forever at /api/v1/blob/9a48e0b34338183e.
---
name: hackerone-recon
description: Pre-engagement reconnaissance workflow using HackerOne MCP tools to enumerate program scope, study prior disclosures, and identify high-value targets before active testing.
---
# HackerOne Pre-Engagement Reconnaissance
Use this workflow at the start of any engagement against a HackerOne program. The goal is to fully understand the program's scope, rules, weakness taxonomy, and disclosure history before sending a single test request.
## Prerequisites
- HackerOne MCP server running with valid credentials (`H1_USERNAME` + `H1_API_TOKEN`)
- Run `hackerone_health` to verify connectivity and confirm your profile
## Phase 1: Program Intelligence
### 1.1 Retrieve Program Details
```
hackerone_get_program(program_handle="<handle>")
```
Extract and note:
- **Program type**: Bug Bounty (paid) vs VDP (no bounty). Adjust effort accordingly.
- **Submission state**: Is the program currently accepting reports?
- **Response metrics**: Average time to first response, resolution, and bounty award. Programs with slow triage (>30 days) require more patience and stronger evidence.
- **Bounty splitting**: If enabled, consider collaboration.
- **Policy**: Read the full policy. Look for:
- Excluded vulnerability types (often: DoS, social engineering, self-XSS, rate limiting)
- Required testing restrictions (no automated scanning, no production data access)
- Safe harbor language and scope limitations
- Minimum severity thresholds for bounty eligibility
### 1.2 Enumerate Scope Assets
```
hackerone_get_program_scope(program_handle="<handle>")
```
For each asset, record:
- **Asset type**: URL, WILDCARD, DOMAIN, CIDR, SOURCE_CODE, MOBILE_APPLICATION
- **Asset identifier**: The actual target (e.g., `*.example.com`, `https://api.example.com`)
- **Bounty eligibility**: Not all in-scope assets are bounty-eligible
- **Max severity**: Some assets cap severity (e.g., staging environments capped at medium)
- **Instructions**: Per-asset notes from the program (testing restrictions, focus areas)
**Prioritize by:**
1. Bounty-eligible assets with `max_severity: critical` — highest ROI
2. Wildcard domains — largest attack surface, most likely to have overlooked subdomains
3. API endpoints — often less hardened than main web apps
4. Recently added assets (cross-reference with bbscope_updates if available)
### 1.3 Map Accepted Weaknesses
```
hackerone_get_program_weaknesses(program_handle="<handle>")
```
This tells you which CWE categories the program accepts. Use it to:
- Focus testing on accepted weakness types
- Avoid wasting time on categories the program explicitly excludes
- Note the weakness IDs — you will need them when submitting reports via `hackerone_submit_report`
## Phase 2: Prior Art Analysis
### 2.1 Study Disclosed Reports (Hacktivity)
```
hackerone_search_hacktivity(program="<handle>")
```
Disclosed reports reveal:
- **What has been found before** — if 5 researchers found XSS in the search page, find something different
- **Bounty amounts by severity** — calibrate your expectations and prioritize accordingly
- **Program's bug preferences** — some programs reward certain vulnerability classes more generously
- **Triage patterns** — how the program classifies and responds to different finding types
### 2.2 Review Your Own Report History
```
hackerone_search_reports(program="<handle>")
```
If you have prior reports against this program:
- Check for `informative` or `not-applicable` verdicts — understand what the program rejects
- Review `duplicate` reports — what is already known
- Check `triaged` or `new` reports — avoid testing the same surface while reports are pending
## Phase 3: Target Selection
After completing Phases 1 and 2, synthesize your findings:
1. **Build the asset inventory**: All in-scope targets with their types, bounty eligibility, and max severity
2. **Cross-reference with hacktivity**: Remove heavily-tested surface areas, prioritize under-explored assets
3. **Identify the scope IDs**: For each target you plan to test, record its `structured_scope_id` — you will need this for report submission
4. **Note the weakness IDs**: For vulnerability types you expect to find, record the `weakness_id` values
5. **Set testing boundaries**: Respect per-asset instructions and program policy restrictions
## Phase 4: Report Submission (Post-Testing)
When you have a confirmed finding (after the full pipeline: `assess_confidence` → `report-preflight` → `exploit-verifier` → `report-writer`):
```
hackerone_submit_report(
program_handle="<handle>",
title="[Vuln Type] in [Component] Leads to [Impact]",
vulnerability_information="<detailed report with PoC>",
impact="<concrete impact statement>",
severity_rating="<none|low|medium|high|critical>",
weakness_id="<CWE weakness ID from Phase 1.3>",
structured_scope_id="<scope asset ID from Phase 1.2>"
)
```
Including `weakness_id` and `structured_scope_id` improves triage speed and demonstrates thoroughness.
After submission, use `hackerone_get_report_activities` to monitor triage status and `hackerone_add_comment` to respond to triager questions.
## Anti-Patterns
- **Do not skip Phase 1.** Testing without reading the policy wastes time on excluded categories and risks violating program rules.
- **Do not submit without scope/weakness IDs.** Reports without these require manual triager classification and signal lower researcher quality.
- **Do not submit unverified findings.** The reporting pipeline (`assess_confidence` → `report-preflight` → `exploit-verifier` → `report-writer`) exists for a reason. Skipping it leads to `informative` verdicts and damaged reputation.
- **Do not ignore hacktivity.** Submitting duplicates of known issues damages your signal score.
- **Do not test out-of-scope assets.** Even if you find something, it will be closed as `not-applicable`.