A safety-first GitHub bounty triage toolkit for developers and AI coding agents.
BountyLens 是一个安全优先的 GitHub bounty 候选筛选工具包,用来在让 Codex / AI agent 写 PR 之前,先判断 issue 是否值得做、是否有风险、是否像假 bounty。
BountyLens is an open-source toolkit for triaging public GitHub issue pages before a developer or AI coding agent starts implementation work.
It includes:
- A local Chrome extension for GitHub issue pages.
- A Python CLI for URL, HTML, or text input.
- A Codex-ready prompt pack for careful candidate review.
- Example reports, screenshots, and a static landing page.
BountyLens is not a bounty platform, payment tool, claim bot, or PR automation tool. It is a local decision aid before work starts.
GitHub issues that look like bounty opportunities can be ambiguous:
- The issue may mention rewards without a clear platform or payment path.
- Another contributor may already have a competing PR.
- The requested work may require private environments, credentials, production access, or maintainer-only context.
- The wording may look like a fake bounty or social engineering attempt.
- The work may involve auth, payment, tokens, crypto, KYC, or database migrations that should not be handled by an agent without explicit review.
BountyLens helps surface these signals before you ask Codex or another AI agent to write code.
- Local GitHub issue page triage.
- Bounty, reward, funded, sponsor, and platform keyword detection.
- Possible amount extraction such as
$50,USD 100,USDC,DAI, orICP. - Fake or weak bounty wording detection.
- Competing PR and external environment risk flags.
- High-risk category flags for security, auth, token, secret, payment, crypto, KYC, and database migration work.
- Markdown and JSON CLI reports.
- Codex prompt pack for read-only candidate review and careful follow-up workflows.
The Chrome extension runs as a Manifest V3 content script on:
https://github.com/*/*/issues/*
It analyzes visible page text locally and renders a BountyLens panel with:
- Bounty signal.
- Possible amount.
- Platform signal.
- Risk flags.
- Recommendation.
The extension does not request cookies, webRequest, tabs, broad host permissions, or GitHub token access.
The CLI uses Python standard library only.
python3 cli/bountylens.py --url https://github.com/owner/repo/issues/123
python3 cli/bountylens.py --html examples/sample-github-issue.html
python3 cli/bountylens.py --text "IssueHunt funded $50 reward"
python3 cli/bountylens.py --html examples/sample-github-issue.html --output examples/generated-report.md
python3 cli/bountylens.py --text "IssueHunt funded $50 reward" --jsonReport fields include:
urltitlebounty_signalplatform_signalpossible_amountsrisk_flagsforbidden_flagsexternal_environment_flagsconfidencerecommendationsuggested_next_step
Recommendation values:
good_candidate_to_reviewmanual_confirmation_neededavoidnot_a_bounty
The prompts/ directory contains Codex-ready /goal templates:
candidate-review.goal.mdsingle-candidate-pilot.goal.mdformal-draft-pr-attempt.goal.mdpr-status-check.goal.md
Each prompt includes safety boundaries against credential access, KYC/payment/withdrawal handling, automatic bounty claims, automatic comments, and broad PR automation.
Screenshot assets live in screenshots/.
Recommended viewing order:
screenshots/png/01-extension-panel.pngscreenshots/png/03-cli-report.pngscreenshots/png/06-workflow.pngscreenshots/png/04-prompt-pack.pngscreenshots/png/05-landing-page.pngscreenshots/png/02-popup.png
The HTML screenshot fixtures are also kept in screenshots/ for repeatable local demo generation.
Clone the repository:
git clone https://github.com/a78c7/bountylens.git
cd bountylensInstall the Chrome extension locally:
- Open
chrome://extensions. - Turn on
Developer mode. - Click
Load unpacked. - Select the
extension/folder. - Open a public GitHub issue page.
Run the CLI with Python 3:
python3 cli/bountylens.py --html examples/sample-github-issue.htmlNo third-party Python dependencies are required.
Run the sample issue through the CLI:
python3 cli/bountylens.py --html examples/sample-github-issue.html --output examples/generated-report.mdRun tests:
python3 -m unittest discover -s testsBuild the release ZIP:
bash package-product.shGitHub issue
-> BountyLens triage
-> Manual confirmation
-> Codex candidate review
-> Docker/testability check
-> Draft PR only after approval
-> Maintainer review
-> Manual platform rules and bounty claim
Typical local flow:
- Open a GitHub issue page.
- Read the BountyLens browser panel.
- Confirm platform status, bounty terms, and competing PRs manually.
- Run a read-only Codex candidate review using the prompt pack.
- Check local testability before implementation.
- Create at most one draft PR only after explicit human approval.
- Let maintainers review and handle any bounty platform process manually.
BountyLens is designed to keep triage local, explicit, and low-risk.
It does not:
- Guarantee bounty earnings.
- Claim rewards.
- Handle KYC, payment, payout, withdrawal, wallet, tax, or banking flows.
- Read cookies.
- Read keychain data.
- Read GitHub tokens.
- Read passwords, private credentials, or password managers.
- Comment on issues.
- Create PRs automatically.
- Send issue text to a server.
- Track users or use telemetry.
Human confirmation is required before implementation, PR creation, bounty claiming, or any platform-specific process.
BountyLens does not make a final business, legal, or security decision. A good_candidate_to_review recommendation only means the issue looks worth human review under the current rules.
BountyLens does not replace:
- Maintainer confirmation.
- Bounty platform rules.
- Human code review.
- Security review.
- Payment, tax, or KYC processes.
- AgentGate or other post-diff safety checks.
BountyLens helps before an AI agent starts work.
AgentGate helps after an AI agent creates a diff.
Use them together like this:
GitHub issue
-> BountyLens triage
-> AI agent work
-> AgentGate diff check
-> human review
-> PR
AgentGate is available at:
https://github.com/a78c7/agentgate
This repository includes optional launch and packaging materials from the original product preparation pass:
marketing/publish-ready/gumroad-listing.mdlemon-squeezy-listing.md
They are not the main open-source path and do not create any paid product by themselves. Do not log in to Gumroad or Lemon Squeezy, create a paid product, or handle payout/KYC/tax flows unless you do that manually outside this project.
Project layout:
extension/ Chrome extension
cli/ Python CLI
prompts/ Codex prompt templates
examples/ Sample issue and reports
landing/ Static landing page
tests/ Python unittest suite
screenshots/ Local demo screenshot assets
marketing/ Optional launch copy
publish-ready/ Optional manual publishing helper docs
Do not add telemetry, credential access, cookie access, automatic bounty claiming, or KYC/payment/payout flows.
Contributions are welcome if they preserve the safety model.
Before large changes, open an issue describing:
- What problem is being solved.
- Whether the change affects security boundaries.
- Whether it adds network access.
- Whether it reads cookies, tokens, passwords, or local credentials.
- Whether it changes PR, comment, claim, KYC, payment, or payout behavior.
See CONTRIBUTING.md.
MIT License. See LICENSE.
- BountyLens: https://github.com/a78c7/bountylens
- Testability Doctor: https://github.com/a78c7/testability-doctor
- Toolkit: https://github.com/a78c7/ai-agent-safety-toolkit
This project is part of the AI Agent Safety Toolkit.
Read the full launch story: https://github.com/a78c7/ai-agent-safety-toolkit/blob/main/launch/launch-blog-post.md