Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

keyreach

Paste any leaked API key — cloud, AI, payment, comms, dev-tool, database, or SaaS — and get a full capability map plus a disclosure-ready security report with a computed severity, in one command.

Status: early — building in public License: Apache 2.0 No AI/LLM Read-only by default CI

⚠️ Status: early — building in public

keyreach cannot analyse a key yet. The package installs and keyreach --help works, but detection, validation, enumeration, scoring and reporting are still ahead — every claim below the fold describes the destination, not today's behavior.

Code lands one roadmap item at a time, each on its own feature branch and pull request, so the whole build is auditable in the open. Follow along in ROADMAP.md: R0.1 (repo structure) and R0.2 (project scaffold) are done; next up is R0.3 — Core data models.


What it is

When a hunter finds an exposed key — a Google AIza…, an OpenAI sk-…, an AWS AKIA…, a Stripe sk_live_…, a Slack xoxb-… — the value of that finding depends entirely on what the key can actually do. Answering that today means chaining a different tool per provider, ad-hoc curl recipes for everything else, and hand-writing the report every single time.

keyreach collapses that into one deterministic command. Give it a key you own or are authorized to test, and it:

  • identifies which provider the key belongs to, by rule;
  • confirms whether it is live and whose account it belongs to;
  • enumerates, read-only, exactly which services, scopes, and resources it reaches;
  • computes a severity band (Info → Critical) from those confirmed capabilities, with a visible rationale;
  • emits a disclosure-ready report — masked key, per-capability evidence, impact, and remediation — ready to paste into a HackerOne or Bugcrowd submission.

It is built for bug bounty hunters, pentesters, red teams, and blue teams doing exposure triage.

What it is NOT

keyreach is deliberately narrow. Knowing what it won't do is as important as knowing what it will.

It is not… Because that is…
A secret scanner. keyreach never crawls repos, S3 buckets, or Docker images looking for secrets. It starts from a key you already have — optionally piped in from a scanner. TruffleHog / gitleaks / Nosey Parker territory. This is a deliberate wedge, not a gap.
An exploitation framework. No privilege escalation, no lateral movement, no destructive actions, no spend. Pacu's domain. keyreach stays a scoping-and-reporting tool.
A CSPM / continuous audit platform. No posture management across a whole cloud estate. Prowler / ScoutSuite's job.
An AI tool. No LLM-assisted classification, no "smart" heuristics that call a model, ever. See below — it is a hard architectural constraint, not a preference.

Core principles

These are non-negotiable and shape every decision downstream (plan.md §1).

  1. Deterministic and rule-based — no AI/LLM, ever. keyreach contains zero AI or LLM calls and zero AI/LLM SDK dependencies, anywhere. Detection, validation, enumeration, scoring, and reporting are all driven by explicit rules and real provider responses. Three reasons this is non-negotiable:

    • Security — keyreach handles live secrets. Sending a key to an external model would itself be a credential leak.
    • Reproducibility — the same key against the same provider state must always produce the same capability map, severity, and report. A finding you can't reproduce is a finding you can't report.
    • Auditability — every verdict traces to a concrete rule and a concrete API response, so both you and the team receiving your report can verify exactly why the tool said what it said.

    If a rule can't decide a capability, keyreach reports it as unknown. It never guesses. A CI check (ai_ban) fails any build that introduces an AI/LLM dependency or model endpoint.

  2. Read-only by default. Every probe is non-destructive. keyreach never writes, deletes, or spends money in its default operation. The HTTP layer default-denies non-idempotent methods; anything aggressive is opt-in, explicitly flagged, and loudly warned.

  3. Single-key ergonomics. One key in, full picture out. No scanning workflow to wade through.

  4. Transparent severity. Severity is computed from the capabilities keyreach actually confirmed, with a visible rationale — never a hardcoded per-provider label. That rationale is the bounty argument.

  5. Authorized use only. Built for keys you own or are explicitly authorized to test — bounty scope or engagement. See SECURITY.md.

How it works

detect → validate → enumerate → score → report
  • detect — deterministic pattern and entropy rules identify the provider.
  • validate — the cheapest read-only liveness and identity call.
  • enumerate — read-only probes map which services, scopes, and resources the key reaches.
  • score — a pure, rule-based function turns confirmed capabilities into a severity band plus rationale.
  • report — terminal, JSON, Markdown, or HTML output; masked key, evidence, impact, remediation.

Provider plugins declare probes; the engine executes them through a single shared HTTP layer that owns rate limiting, record/replay, redaction, and the read-only guard. That is what makes determinism enforceable in one place — see implementation_plan.md §2.

Install

The keyreach name is reserved on PyPI, but there is no installable release yet — only a 0.1.0.dev0 placeholder. pip install keyreach resolves nothing on purpose: pip skips pre-releases by default, so nobody installs a tool that cannot do anything. The first real release is R1.6.

# Not available yet  planned for v0.1.0:
pipx install keyreach

To run the current scaffold from source (Python 3.11+):

git clone https://github.com/Phantom-IN/keyreach.git
cd keyreach
pipx install -e .        # or: pip install -e '.[dev]'
keyreach --help

Usage

Coming soon. Right now only --help and --version do anything. The CLI surface below is the specification from implementation_plan.md §12, not a description of working software. CLI UX lands in roadmap item R1.5.

keyreach KEY                      # detect → validate → enumerate → score → terminal report
keyreach KEY --report md -o out.md
keyreach KEY --report html -o out.html
keyreach KEY --json               # machine-readable, schema-validated
keyreach -f keys.txt              # batch from file
cat keys.txt | keyreach -         # batch from stdin
keyreach KEY --provider google    # force provider, skip detection
keyreach KEY --no-enumerate       # validity + identity only
keyreach KEY --delay 500ms        # rate-limit probes
keyreach KEY --unmask             # show full key (off by default)
keyreach KEY --fail-on high       # exit nonzero if band >= high (CI gating)

Planned exit codes: 0 success/info, 2 a finding at or above the --fail-on threshold, 1 operational error.

Provider coverage

Prioritized by leak frequency × blast radius, across cloud/infra, AI/LLM, payment, communications, email/marketing, dev platforms, databases/data infra, monitoring, auth/identity, and a generic bearer/JWT inspector. The full target list is plan.md §8; the shipping order is ROADMAP.md.

v0.1 target: ≥10 providers across ≥4 categories, including cloud, AI, payment, and comms.

Documentation

Document What it covers
plan.md The product plan — what keyreach is and why. Scope, goals, non-goals, severity model intent, report contents, safety policy.
implementation_plan.md The technical blueprint — how it is built. Architecture, interfaces, determinism enforcement, testing, CI guardrails, CLI spec.
ROADMAP.md Every planned item, with acceptance criteria. One item per feature branch.
CONTRIBUTING.md Dev setup, the build-in-public workflow, commit conventions, and the hard rules.
SECURITY.md Responsible use, and how to report a vulnerability in keyreach itself.
CLAUDE.md Working rules for agents and contributors touching this repo.
CREDITS.md The prior art keyreach learns from and reuses.

Contributing

Contributions are very welcome — especially new provider plugins. The target is that adding a provider is a small, self-contained, ~30-minute contribution: recognize the key, one cheap read-only validity check, a set of read-only probes, and metadata.

Start with CONTRIBUTING.md, then the provider checklist in CLAUDE.md. Every roadmap item is tracked as an issue and lands via its own pull request.

Legal & ethics

Use keyreach only against keys you own or are explicitly authorized to test — your own infrastructure, an in-scope bug bounty program, or a documented engagement. Validating a key generates authentication traffic and log entries on the target service. Testing credentials without authorization may be illegal in your jurisdiction, regardless of how the key was exposed.

keyreach is read-only by design and ships no exploitation features, but the responsibility for authorization is yours. The authors accept no liability for misuse. Full policy: SECURITY.md.

License

Apache License 2.0 — see LICENSE and NOTICE.

Third-party attributions are recorded in NOTICE and THIRD_PARTY_LICENSES.md. keyreach never copies AGPL/GPL code; such projects are studied and re-implemented from public documentation only.

Credits

keyreach builds on work by the TruffleHog team, streaak (KeyHacks), Mazin Ahmed (secrets-patterns-db), Ozgur Alp (gmapsapiscanner), Andrés Riancho (enumerate-iam), Rhino Security Labs, gitleaks, Yelp (detect-secrets), Prowler, NCC Group (ScoutSuite), and ProjectDiscovery (nuclei).

Full acknowledgements: CREDITS.md.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keyreach-0.1.0.dev0.tar.gz (55.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

keyreach-0.1.0.dev0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file keyreach-0.1.0.dev0.tar.gz.

File metadata

  • Download URL: keyreach-0.1.0.dev0.tar.gz
  • Upload date:
  • Size: 55.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for keyreach-0.1.0.dev0.tar.gz
Algorithm Hash digest
SHA256 8809132f46a28f022e9dee3059be10332a7591a0ccb6c6e61de8a04808f937b1
MD5 f79c371baa4a0b59e47abd0de290d5c5
BLAKE2b-256 73a903319338a3af82be8733382e6e6ebfb63ef20aacbb87f82daa9b0b611016

See more details on using hashes here.

File details

Details for the file keyreach-0.1.0.dev0-py3-none-any.whl.

File metadata

  • Download URL: keyreach-0.1.0.dev0-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for keyreach-0.1.0.dev0-py3-none-any.whl
Algorithm Hash digest
SHA256 70eb3d3b27ab73fc43fb3250e6f62f1c51a78a590b6e4833b066df53d4f87c2d
MD5 0a590165b04559e8707f70035a37d7c4
BLAKE2b-256 2ea29080050a70be40b0e91163b57a4e9172269f6b5b16c27ceed9a7f478c12e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page