autonomous-pentest-scanner
Skill4 starsChanged 3 months agoMITView on GitHub
Open-source AI multi-agent pentesting tool — wraps the `strix` CLI for
- Reads credentials
In this repository80 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .cursor/rules/security-agent-skills.mdcCursor rule
- ai-mcp-securitySkill
- modern-attack-surfacesSkill
- offensive-toolkitSkill
- security-and-hardeningSkill
- security-auditSkill
- security-code-reviewSkill
- ctf-jail-escapeSkill
- ctf-kernel-exploitationSkill
- ctf-misc-toolkitSkill
- ctf-orchestratorSkill
- ctf-playbookSkill
- ctf-technique-atlasSkill
- ctf-training-loopSkill
- ctf-web-exploitationSkill
- ctf-writeup-disciplineSkill
- ctf-writeup-screenshotsSkill
- binary-exploitationSkill
- crypto-attack-patternsSkill
- crypto-ctf-attacksSkill
- cryptography-fundamentalsSkill
- crypto-toolkitSkill
- encoding-realignmentSkill
- exploit-developmentSkill
- exploit-poc-builderSkill
- kernel-exploitationSkill
- zero-day-huntingSkill
- bluetooth-jammer-sweepSkill
- esp32-serial-diagSkill
- flipper-zero-backupSkill
- flipper-zero-firmwareSkill
- hardware-iot-hackingSkill
- nrf24-bitbang-spiSkill
- rf-jammer-firmware-portSkill
- rf-multi-protocol-jammerSkill
- smart-card-driver-debugSkill
- smart-card-usb-directSkill
- wifi-deauth-jammerSkill
- wifi-dualband-jammerSkill
- advanced-pentestSkill
- network-pentestSkill
- pentest-quick-checklistSkill
- pentest-tool-referenceSkill
- pentest-tool-setupSkill
- pentest-workflowSkill
- advanced-attack-chainsSkill
- intranet-pentest-advancedSkill
- pentest-report-generatorSkill
- post-exploitation-opsSkill
- professional-pentest-guideSkill
- chatgpt-web-relaySkill
- darkweb-researchSkill
- email-osint-investigationSkill
- local-network-reconSkill
- network-device-reconSkill
- osint-frameworkSkill
- osint-recon-modelSkill
- parallel-intel-gatheringSkill
- reconnaissance-opsSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 44
run a pentest inside CI/CD that blocks insecure PRs (-n --scan-mode quick --scope-mode diff --diff-base origin/main)
- Very specific: line 47
Do NOT load for: a single handcrafted payload, a manual nmap/nuclei sweep, or a one-off <script>alert(1)</script> test — use …
- Very specific: line 170
When the task is "autonomous end-to-end scan with PoCs", I load autonomous-pentest-scanner and let strix's own multi-agent system drive its …
- Distinctive: line 190
Before declaring strix usable in a session, verify:
- Very specific: line 208
All four passing = good to drive a real scan with --max-budget-usd 1 against an authorized target.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Strix (Autonomous Pentest Scanner) — AI Multi-Agent Pentest
Authorization gate. strix actively exploits targets and generates PoCs. Only run it against targets you own or have written authorization to test (your app, your repo, a paid bug bounty scope, CTF infra, anything where the operator has legal permission). Apache-2.0 on the tool does not transfer legal liability for what you point it at.
When to load this skill
Load when the user asks to:
- "run strix", "用 strix 掃", "autonomous pentest", "AI red team scan", "agent pentest"
- scan a whole repo / domain / live app end-to-end (not a single bug class)
- generate validated PoCs + pentest report from one command
- run a pentest inside CI/CD that blocks insecure PRs (
-n --scan-mode quick --scope-mode diff --diff-base origin/main) - ship a white-box source-aware scan (
semgrep+ AST +trivy+ secrets → dynamic validation)
Do NOT load for: a single handcrafted payload, a manual nmap/nuclei sweep, or a one-off <script>alert(1)</script> test — use web-app-pentest / network-pentest / api-security-testing directly. strix is the orchestrator, not a replacement for hands-on craftsman skills.
Setup (one-time, already done on this machine)
# Binary (already installed via pipx)
pipx install strix-agent # version 1.3.1+ on PATH at ~/.local/bin/strix
# LLM provider — exported via ~/.zshenv AND ~/.hermes/.env
# Routes through NVIDIA NIM (no OpenRouter budget consumed).
# LiteLLM uses `openai/` prefix + LLM_API_BASE override → NIM endpoint.
export STRIX_LLM="openai/nvidia/nemotron-3-ultra-550b-a55b"
export LLM_API_KEY="<NVIDIA_API_KEY>"
export LLM_API_BASE="https://integrate.api.nvidia.com/v1"
# Docker daemon must be running (strix pulls ghcr.io/usestrix/strix-sandbox:1.1.0 on first scan)
docker info >/dev/null 2>&1 || echo "start Docker Desktop / colima first"Verify quickly:
source ~/.zshenv
strix --version # → strix 1.3.1
strix --help | head -20Pitfall: terminal() reads a non-login shell, but sourcing ~/.zshenv first guarantees STRIX_LLM/LLM_API_KEY are present. Always prefix source ~/.zshenv && before invoking strix.
CLI shape (the whole surface area)
strix (--target <T> | --target-list <F> | --mount <DIR>) [options]| Flag | Purpose |
-t/--target | URL / GitHub repo / local dir / domain / IP. Repeatable for multi-target white-box. |
--target-list <F> | One target per non-empty, non-# line. |
--mount <DIR> | Bind-mount (read-only) large repo into sandbox instead of streaming file-by-file. Required when local dir > STRIX_MAX_LOCAL_COPY_MB (default 1024 MB). |
--instruction "..." | Custom brief — creds, focus areas ("focus on IDOR + auth bypass"), testing approach. |
--instruction-file <F> | Long-form instruction file. |
-m/--scan-mode {quick,standard,deep} | quick=minutes (CI), standard=30m-1h, deep=1-4h (DEFAULT). |
--scope-mode {auto,diff,full} | auto enables PR diff-scope in CI/headless; diff forces changed-files; full disables scope reduction. |
--diff-base <ref> | Branch/commit vs which diff is computed (default repo default branch). |
-n/--non-interactive | Headless — no TUI, exits on completion. Use for cron / CI / terminal() calls. |
--config <F> | Custom JSON config instead of ~/.strix/cli-config.json. |
--max-budget-usd <N> | Hard USD stop on LLM spend. Strips cleanly with status stopped. Default: no limit. Always set this when invoking from a session to avoid unbounded spend. |
--resume <RUN_NAME> | Resume prior scan from ./strix_runs/<RUN_NAME>/ — root + every non-terminal subagent's full history restored. |
Exit codes: 0 = clean (no findings), 2 = vulnerabilities found (headless only).
Modes & when to pick
| Scenario | Mode | Scope | Example |
| Every PR / pre-merge gate | quick | --scope-mode diff --diff-base origin/main | -n -m quick --scope-mode diff --diff-base origin/main -t . |
| Weekly security review | standard | full | -m standard -t https://app.example.com |
| Pre-prod / critical app audit | deep | full (default) | -m deep -t . --instruction "focus on auth + SSRF" |
| Bug bounty automation | deep | full | -m deep -t https://target.tld --instruction "scope: *.target.tld" --max-budget-usd 20 |
| Local monorepo (huge) | any | use --mount | -m deep --mount ./huge-monorepo --max-budget-usd 5 |
| Resume a 4h deep scan that crashed | — | --resume | --resume 20260725_180310_deep-app |
Running from a Hermes session (this skill's actual job)
This skill exists so I can run strix on your behalf from inside a chat / cron job. Pattern:
# Always: source env, cap budget, run non-interactively, capture output
source ~/.zshenv && \
strix -n \
--target ./my-app \
--scan-mode quick \
--max-budget-usd 2 \
2>&1 | tee /tmp/strix-run.logFor background long scans, use terminal(background=true, notify_on_complete=true):
terminal(command="source ~/.zshenv && strix -n -m deep -t https://target.tld --max-budget-usd 10 2>&1 | tee ~/strix_runs/manual.log",
background=True, notify_on_complete=True)For scheduled scans (e.g. nightly PR-gate):
cronjob(action='create',
schedule='0 2 * * *',
prompt='Run strix -n -m quick --scope-mode diff --diff-base origin/main -t /path/to/repo --max-budget-usd 1. Notify me of any finding.',
skills=['strix-pentest'],
enabled_toolsets=['terminal','file','cronjob'])Reading results
- Output dir:
./strix_runs/<run-name>/(auto-created;--resumeuses this name) - Headless exit code:
0clean,2findings - Local dashboard:
strix view [run-name]— binds 127.0.0.1:random-port, opens browser to a tokened URL, reads files off disk, no upload - For a sessionable summary I can read into chat:
ls strix_runs/→ pick latest →read_filethe JSON/TOML findings file inside
Multi-agent internals (so I know what's happening)
strix spawns a Graph of Agents — root + child specialists each with up to 5 specialized skills loaded into their system prompts. Child skills per category:
| Category | Skills available | When used |
vulnerabilities/ | sql_injection, nosql_injection, xss, ssti, ssrf, http_request_smuggling, idor, csrf, jwt auth, race_conditions, deserialization, path_traversal, prototype_pollution, business_logic, mass_assignment, information_disclosure, subdomain_takeover, open_redirect, header_injection, weak_password, rce, xxe, llm_prompt_injection, broken_function_level_authorization | When the root agent identifies a vulnerability class to test |
frameworks/ | django, fastapi, nestjs, nextjs | When target is built on that framework |
technologies/ | active_directory, auth0, firebase_firestore, grafana_prometheus, supabase | When target uses these third-party services |
protocols/ | graphql, oauth | When testing those protocol surfaces |
tooling/ | nmap, nuclei, httpx, ffuf, subfinder, naabu, katana, sqlmap, semgrep, agent_browser, python | Always — sandbox ships these. Agents invoke them via the terminal tool inside the container |
cloud/ | aws, gcp, kubernetes | Cloud-hosted targets |
reconnaissance/ | asset_discovery | Black-box recon |
coordination/ | root_agent, source_aware_whitebox | Root + white-box orchestration |
custom/ | source_aware_sast (semgrep + ast-grep + tree-sitter + gitleaks + trufflehog + trivy), dependency_cve_scanning (trivy SCA → create_dependency_report) | Source-available scans |
This means strix is essentially a sub-agent topologist that dispatches to skill chunks I can read directly. The full knowledge base for all 60 chunks lives at ~/Documents/strix-knowledge/strix-skills/ — I can read_file any of them to predict what strix will focus on for a given target, or to cross-check findings against strix's own playbook.
Knowledge fusion with Hermes-native red-teaming skills
This skill is the bridge. strix's internal markdown skills are NOT duplicated into the Hermes skill tree — that would bloat the catalog and create drift. Instead:
- I load
cybersecurity(the router) first; it dispatches to the right native skill (e.g.web-app-pentest,network-pentest,api-security-testing,professional-pentest-guide,advanced attack chain-pentest) for the manual / single-technique side. - When the task is "autonomous end-to-end scan with PoCs", I load
autonomous-pentest-scannerand let strix's own multi-agent system drive its sandboxed tools. - For gaps strix fills that native skills under-cover, the relevant strix knowledge has been mirrored as
references/notes inside this skill (see below) and patched into the relevant native skills where it adds new tactics.
Gaps explicitly covered by strix that were light in the native tree (post-fusion): supabase / firebase / auth0 / grafana+prometheus attack surfaces, trivy-based dependency_cve_scanning workflow, source_aware_whitebox semgrep+ast-grep+tree-sitter+trufflehog+gitleaks orchestration, source_aware_sast white-box triage flow.
Pitfalls (real-world)
- Docker must be running —
colima startor Docker Desktop, else first scan fails pullingghcr.io/usestrix/strix-sandbox:1.1.0. Verify withdocker infobefore invoking. - Budget is per whole scan (root + every child) cumulative — but the check fires after each model response, so the final spend can overshoot by whatever was in flight. Set
--max-budget-usdaccordingly (e.g. budget $2 → actually cap at $3 in practice). - Local big repos need
--mount— default file-by-file copy stalls past 1 GB (STRIX_MAX_LOCAL_COPY_MB). Use--mount ./repo(read-only). --mountis NOT a security boundary — root inside the container can remount it RW. Treat as "scan my own code", not as isolation from untrusted code.- Headless exit
2≠ failure — it means findings exist. CI should treat 2 as "block PR", not as a runner crash. - Resume picks up terminal agents only — non-terminal subagents (already-finished leaves) are not re-spawned; their outputs stay in the run dir.
- Streaming callbacks: for LiteLLM-routed models (OpenRouter), strix enables streaming success callbacks to capture provider-reported cost. Message content stays private; only model names / request IDs / token counts flow to callbacks.
- Provider routing:
openai/<model-id>prefix +LLM_API_BASEoverride → any OpenAI-compatible endpoint (NIM, OpenRouter, local vLLM). Current config = NVIDIA NIM viaopenai/nvidia/nemotron-3-ultra-550b-a55b+LLM_API_BASE=https://integrate.api.nvidia.com/v1. Switch provider by editingstrix_LLM+LLM_API_BASEenv vars — no strix config file change needed. strix viewneeds an interactive browser — from a headless server run it with--no-openand copy the printed tokened URL to a workstation browser.- Don't dead-loop on
--resume— if a scan consistently stops at the same agent, the budget ceiling or a hallucinated "validated" finding is the blocker. crank--max-budget-usdor read the agent'smessages.jsonlin the run dir to see what it thinks is happening.
Verification (skill readiness)
Before declaring strix usable in a session, verify:
# 1) binary + env
source ~/.zshenv && strix --version # → strix 1.3.1 or higher
docker info >/dev/null 2>&1 && echo dock # dock=Docker daemon up
printenv strix_LLM # → openai/nvidia/nemotron-3-ultra-550b-a55b
# 2) sandbox image reachable (don't pull yet — first scan pulls)
docker manifest inspect ghcr.io/usestrix/strix-sandbox:1.1.0 >/dev/null && echo image-ok
# 3) help works (no API key consumed)
strix --help >/dev/null && echo cli-ok
# 4) knowledge cache present
ls ~/Documents/strix-knowledge/strix-skills/ # → 11 category dirs + README.mdAll four passing = good to drive a real scan with --max-budget-usd 1 against an authorized target.
Reference files
references/upstream-readme.md— strix README (provenance from usestrix/strix main)references/upstream-license.md— Apache 2.0references/strix-skills-index.md— auto-generated index of all 60 internal skill chunks under~/Documents/strix-knowledge/strix-skills/with one-line summaries; use this to find which specific skill chunk to read for a target.references/llm-provider-config.md— NIM / OpenAI-compatible provider config (strix_LLM + LLM_API_KEY + LLM_API_BASE, fallback chain, local models).references/cli-reference.md— full CLI flag table (mirrors docs/usage/cli.mdx).references/scan-modes.md— quick/standard/deep scope behavior, white-box triage stack.references/internal-skills/— symlink into~/Documents/strix-knowledge/strix-skills/soskill_view(file_path=...)surfaces the actual strix knowledge.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

