Bug Bounty Intake
Bug Bounty Intake
Bug Bounty Intake turns the reports your program receives into verified findings. Every report that arrives on a connected channel is classified, filed as an issue in your workspace, reproduced against your live environment by the retest agent, and answered — with an optional patch for confirmed findings.
Three channels feed one pipeline:
Bug Bounty Intake is enabled per workspace by Pensar. If Bug Bounty does not appear in your workspace sidebar, contact team@pensar.dev to turn it on. Once enabled, workspace admins and owners connect channels and manage settings; every member can view the ledger.
How It Works
Receive
A report arrives by email or through a platform webhook. Platform reports are only ingested once the platform’s own triage team has marked them Triaged — reports in the New state are ignored until then.
Classify
A model reads the report against your program scope and workspace inventory and decides whether it is a genuine vulnerability report or noise. For a report it extracts a title, summary, severity, reproduction steps, affected targets, and CWE mapping. Noise (marketing, scanner blasts, “pay me first” templates, reports about assets you don’t own) is recorded and dropped — no issue is filed and no reply is sent.
File
A report becomes a normal workspace issue in the In review status, with the reporter’s reproduction steps and targets in the description and an Intake section naming the reporter, channel, and classifier reasoning. It appears everywhere issues do — the Issues list, integrations, webhooks, and the API.
Verify
Pensar matches the reported targets to your attack surface (an endpoint whose path appears in a reported URL, or the application that owns the reported host) and dispatches the retest agent to reproduce the issue against the live target. If the reported target matches nothing in your inventory, the report settles as Needs review for manual follow-up.
Pensar never changes a report’s state, priority, or reward on HackerOne or Bugcrowd — those affect bounty eligibility, so they stay your call. Verdicts are always posted as comments.
Connecting Channels
Open Bug Bounty in your workspace sidebar. Connect at least one channel; you can connect all three.
HackerOne
Bugcrowd
Pensar provisions a dedicated receiving address for your workspace.
- On the Email intake card, click Provision address
- Copy the Intake address and either publish it as your program’s contact address, or forward an alias you already publish (for example
security@acme.com) into it - If you forward, enter that alias under Forwarding alias and click Save
The forwarding alias tells Pensar to look past your forwarder and reply to the original reporter. Forwarded reports are still answered at the reporter’s address, not yours.
Only the configured forwarding alias activates forwarded-header recovery. Addresses mentioned in the body of a report can never redirect a reply.
Use Sync inbox to pick up any messages that arrived while intake was paused or before the address was connected.
Program Settings
Once at least one channel is connected, the switches at the top of the page apply to every channel:
A specific Program scope is the single biggest lever on classification quality. Name your in-scope assets and your standard exclusions the same way your public program page does.
Replies to Reporters
Replies are templated from facts the pipeline already knows, not written by a model, so a reporter can never be told something the pipeline did not establish. Every reply quotes the issue reference (for example VULN-000042) so the reporter can cite it in follow-ups.
Noise is never answered. Email replies are sent from the intake address; platform replies are posted as comments on the original report or submission.
Reading the Bug Bounty Page
Processed Reports
Every report received on a connected channel and what came of it. The Source badge links to the original report on HackerOne or Bugcrowd.
The Reply column shows Queued, Sending, Sent, Failed, or Unknown (the send was attempted but delivery could not be confirmed).
Triage Pipeline
Reports that became issues, with the verification verdict, its confidence, and remediation state — Patching, a link to the Pull request, a fix count, or No patch. Click View issue to open the finding.
Rate Limits
To bound model and sandbox spend during a flood, each workspace admits up to 20 email reports and 100 platform reports per channel per rolling hour. Reports beyond that are not dropped: they show as Deferred and are admitted automatically once the window rolls forward.
Troubleshooting
A report shows Failed
A pipeline step (classification, filing, or reply) exhausted its retries. Open the row to read the recorded error, then click Retry triage. Retrying is safe — a redelivered step can never file a duplicate issue or send a second reply.
A reply shows Failed or Unknown
Failed means the send was rejected; fix the cause (for example an expired platform token) and click Retry reply. Unknown means the send was attempted but never confirmed. Check the reporter’s email thread or the platform report first — if the reply is not there, click Confirm not delivered and retry. Pensar never resends an Unknown reply on its own, to avoid double-posting.
Reports settle as Needs review without a verification run
The reported target did not match any application or endpoint in your attack surface, so there was nothing to reproduce against. Add the domain and let recon map it, or check that the reporter’s URL is actually one of your assets. The issue is still filed for manual review.
Platform reports are not arriving
- Confirm the report is in the Triaged state — New reports are ignored by design
- Check the webhook in HackerOne or Bugcrowd is pointed at the URL shown on the card and subscribed to the listed events
- For HackerOne, confirm the signing secret in the webhook matches the one Pensar generated; Rotate secret and re-enter it if unsure
- For Bugcrowd, confirm the API credential has no IP allowlist and that the user who created it can access the program
- Use Sync on the channel card to backfill anything the webhook missed
Connection failed
The API token or credential could not read the program. Confirm it was created by a user with access to that program, that the program handle or code matches the URL exactly, and — for Bugcrowd — that you pasted identifier:secret rather than the full Authorization header.
Disconnecting
Click Disconnect on a channel card to remove its credentials and stop intake on that channel. Reports already processed stay in the ledger and their issues remain in the workspace. To pause everything without disconnecting, turn off Accept reports.
Need Help?
If you encounter issues setting up Bug Bounty Intake, please contact our support team at team@pensar.dev.