Scope that can't be bypassed
Authorized host, port, path and method. Connects to the validated IP (DNS pinning), blocks cloud metadata and internal networks. Out of scope, nothing goes out.
Human-led pentest · open source
An AI agent that follows the scent, forms hypotheses and calls tools — but scope and permissions live outside the model. No prompt bypasses them. Inspired by the logic of Burp AT.
C:\> git clone github.com/saulofilho/scopehound
The agent wants to run:send_request PUT /api/BasketItems/7
Impact: intrusive
01 · the method
At every step, a guardrails layer separate from the model validates scope, DNS, budget and permission before any request goes out. Same idea as Burp AT: the rule does not live in the prompt.
forms hypotheses and asks for a tool
allows, asks or denies — Ask / Act
only what was allowed, through the egress
02 · the scent
C:\scopehound\featuresAuthorized host, port, path and method. Connects to the validated IP (DNS pinning), blocks cloud metadata and internal networks. Out of scope, nothing goes out.
IDOR, content discovery and race condition ready to go. The skill loads the playbook and restricts the tools to that work.
Capture proxy, HAR and Burp XML import, and a site map that normalizes /api/users/{id} and flags numeric parameters.
Manual, Smart or Autonomous. Approve once, for the session, always, reject or redirect. The pause survives restarts.
Give it a goal and the agent pursues it across steps; for broad investigations, it splits the work into subagents with their own budget.
Run on your machine with SQLite, or deploy for the team with Postgres, SSO login, roles and masking of sensitive data.
03 · the lead
The agent records leads and re-runs the proof of concept to confirm. No finding without reproducible evidence.
C:\LAB> scopehound chat lab --mode smart
you › map the API and look for IDOR
scopehound › I'll start with the baskets listing.
↳ send_request GET /rest/basket/6
↳ replay_as /rest/basket/6 as userB
scopehound › userB read userA's basket. Let me prove it.
↳ verify_finding GET /rest/basket/6 (expected: 200 + "UserId":21)
[ OK ] VERIFIED IDOR in /rest/basket/{id} [HIGH]
C:\LAB>
04 · the reference
The team already uses Burp AT. scopehound brings the same architecture outside Burp — and it runs on a server too.
05 · to work
Python 3.12+ and uv. Point it only at systems you own or are authorized in writing to test.
Follow the steps below to configure the scope and release the hound in your lab.
REM install and configure the scope git clone https://github.com/saulofilho/scopehound cd scopehound && uv sync cp scope.example.yaml scope.yaml REM check the target without sending anything uv run scopehound check http://localhost:3000 -s scope.yaml REM create the project and chat with the agent uv run scopehound project create lab -s scope.yaml uv run scopehound chat lab --mode smart
Authorized use only. The scope file is the contract: anything not in it is blocked before any I/O. Point scopehound only at systems you own or have written permission to test.