agentleFS
Wang200935Wang200935/security-agent-skills/skills/post-exploitation/autonomous-pentest-scanner/SKILL.md

autonomous-pentest-scanner

Skill4 starsChanged 3 months agoMITView on GitHub

Open-source AI multi-agent pentesting tool — wraps the `strix` CLI for

  • Reads credentials

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
  1. Very specific:

    run a pentest inside CI/CD that blocks insecure PRs (-n --scan-mode quick --scope-mode diff --diff-base origin/main)

    line 44
  2. Very specific:

    Do NOT load for: a single handcrafted payload, a manual nmap/nuclei sweep, or a one-off <script>alert(1)</script> test — use …

    line 47
  3. Very specific:

    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 …

    line 170
  4. Distinctive:

    Before declaring strix usable in a session, verify:

    line 190
  5. Very specific:

    All four passing = good to drive a real scan with --max-budget-usd 1 against an authorized target.

    line 208

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 -20

Pitfall: 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]
FlagPurpose
-t/--targetURL / 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-interactiveHeadless — 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

ScenarioModeScopeExample
Every PR / pre-merge gatequick--scope-mode diff --diff-base origin/main-n -m quick --scope-mode diff --diff-base origin/main -t .
Weekly security reviewstandardfull-m standard -t https://app.example.com
Pre-prod / critical app auditdeepfull (default)-m deep -t . --instruction "focus on auth + SSRF"
Bug bounty automationdeepfull-m deep -t https://target.tld --instruction "scope: *.target.tld" --max-budget-usd 20
Local monorepo (huge)anyuse --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.log

For 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; --resume uses this name)
  • Headless exit code: 0 clean, 2 findings
  • 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_file the 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:

CategorySkills availableWhen 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_authorizationWhen the root agent identifies a vulnerability class to test
frameworks/django, fastapi, nestjs, nextjsWhen target is built on that framework
technologies/active_directory, auth0, firebase_firestore, grafana_prometheus, supabaseWhen target uses these third-party services
protocols/graphql, oauthWhen testing those protocol surfaces
tooling/nmap, nuclei, httpx, ffuf, subfinder, naabu, katana, sqlmap, semgrep, agent_browser, pythonAlways — sandbox ships these. Agents invoke them via the terminal tool inside the container
cloud/aws, gcp, kubernetesCloud-hosted targets
reconnaissance/asset_discoveryBlack-box recon
coordination/root_agent, source_aware_whiteboxRoot + 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-scanner and 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 start or Docker Desktop, else first scan fails pulling ghcr.io/usestrix/strix-sandbox:1.1.0. Verify with docker info before 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-usd accordingly (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).
  • --mount is 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_BASE override → any OpenAI-compatible endpoint (NIM, OpenRouter, local vLLM). Current config = NVIDIA NIM via openai/nvidia/nemotron-3-ultra-550b-a55b + LLM_API_BASE=https://integrate.api.nvidia.com/v1. Switch provider by editing strix_LLM + LLM_API_BASE env vars — no strix config file change needed.
  • strix view needs an interactive browser — from a headless server run it with --no-open and 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-usd or read the agent's messages.jsonl in 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.md

All 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.0
  • references/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/ so skill_view(file_path=...) surfaces the actual strix knowledge.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.