You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EasyHunt AI v2.0.0 — first stable tag
An agentic VAPT orchestrator where the control plane, not the model, is the
security boundary. Every capability is an MCP tool passing through a fixed
server-side sequence — scope, sanitize, budget, rate-limit, approval, sandbox,
parse, audit — with no code path that skips a step.
Verified at this commit:
1,985 tests passing, 1 skipped
ruff clean across easyhunt/, tests/, scripts/
80 MCP tools registered
easyhunt doctor: 79 working (executed, not merely found on PATH) /
82 catalogued, 3 not installed (osmedeus, strix, subdomainsleuth —
all optional, none blocks a phase). 79 + 3 = 82; the accounting
reconciles.
What changed since the work began:
- pattern_scan: gf's pattern library as pinned data, 11 vetted packs
- technique_lookup: PayloadsAllTheThings indexed from a pinned commit
- exploit_chain + web_injection_probe: the validators fan out over
discovered injection points, each still independently approval-gated
- coverage.py: every bug class graded auto / detect-only / manual, so a
gap is named rather than silently absent
- chromium in the image, closing the DOM-XSS false negative
- account_register and read-only form submission for authenticated testing
- budget ceilings default OFF; the counters remain for reporting
- the tool matrix is generated from recipes.py and tested against it
- docs consolidated to five files with distinct jobs
Worth knowing before integrating:
- scope.yaml is not shipped and will not be generated. It is an
authorization record, transcribed by hand from the target program's
published policy, and every target-taking tool refuses without it.
- Budget ceilings are off by default; set budget.enforce: true to restore
them. The counters still run, so reports still show cost and requests.
- doctor's tool probes are time-bounded and run concurrently. On a loaded
machine a slow tool can be reported "unverified (no response)" rather
than working; that is a real state, printed explicitly, not a lost tool.
- 60 of the catalogued tools declare no identity_marker, so execution
proves a binary of that name responds — not that it is the right
program. doctor says so on every run.