ai-kit-python 1.4.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ai_kit_python-1.4.2.dist-info/METADATA +132 -0
- ai_kit_python-1.4.2.dist-info/RECORD +278 -0
- ai_kit_python-1.4.2.dist-info/WHEEL +5 -0
- ai_kit_python-1.4.2.dist-info/entry_points.txt +2 -0
- ai_kit_python-1.4.2.dist-info/licenses/LICENSE +21 -0
- ai_kit_python-1.4.2.dist-info/licenses/template/ai-kit/vendor/security-audit/LICENSE +21 -0
- ai_kit_python-1.4.2.dist-info/licenses/template/ai-kit/vendor/strix/LICENSE +201 -0
- ai_kit_python-1.4.2.dist-info/top_level.txt +1 -0
- aikit/.agents/skills/go-work/SKILL.md +8 -0
- aikit/.agents/skills/laravel-work/SKILL.md +8 -0
- aikit/.agents/skills/moodle-work/SKILL.md +8 -0
- aikit/.agents/skills/project-continuity/SKILL.md +34 -0
- aikit/.agents/skills/python-work/SKILL.md +8 -0
- aikit/.dockerignore +90 -0
- aikit/.gitattributes +3 -0
- aikit/.github/workflows/check-kit.yml +70 -0
- aikit/.github/workflows/publish-pypi.yml +108 -0
- aikit/.gitignore +60 -0
- aikit/BOOTSTRAP_PROMPT.md +18 -0
- aikit/CHANGELOG.md +85 -0
- aikit/CLAUDE.md +3 -0
- aikit/CONTRIBUTING.md +46 -0
- aikit/Dockerfile +44 -0
- aikit/KIMI.md +3 -0
- aikit/LICENSE +21 -0
- aikit/MANIFEST.in +22 -0
- aikit/MANUS.md +3 -0
- aikit/Makefile +70 -0
- aikit/README.md +1161 -0
- aikit/SECURITY.md +8 -0
- aikit/SKILL.md +105 -0
- aikit/VERSION +1 -0
- aikit/__init__.py +1 -0
- aikit/ai-kit/ADAPTERS.md +5 -0
- aikit/ai-kit/CONTAINERS.md +5 -0
- aikit/ai-kit/ENGINEERING.md +5 -0
- aikit/ai-kit/INTENT.md +5 -0
- aikit/ai-kit/MODELS.md +5 -0
- aikit/ai-kit/SKILLS.md +5 -0
- aikit/ai-kit/stacks/GO.md +5 -0
- aikit/ai-kit/stacks/LARAVEL.md +5 -0
- aikit/ai-kit/stacks/MOODLE.md +5 -0
- aikit/ai-kit/stacks/PYTHON.md +5 -0
- aikit/aikit_cli.py +59 -0
- aikit/deploy/k8s/install-preview-job.yaml +56 -0
- aikit/docker/build-requirements.txt +4 -0
- aikit/docker/check_version.py +29 -0
- aikit/docker/pypi-requirements.txt +3 -0
- aikit/docs/ADAPTER_PATH_FIX.md +23 -0
- aikit/docs/BENCHMARK.md +106 -0
- aikit/docs/CONTEXT7.md +33 -0
- aikit/docs/DECISIONS.md +22 -0
- aikit/docs/DEVELOPMENT_PLAN.md +16 -0
- aikit/docs/DIALOGUE_MEMORY.md +70 -0
- aikit/docs/DOCKER.md +74 -0
- aikit/docs/DOCKER_HUB_OVERVIEW.md +311 -0
- aikit/docs/EVALUATION.md +30 -0
- aikit/docs/IMPLEMENTATION.md +134 -0
- aikit/docs/MANUS_REVIEW.md +46 -0
- aikit/docs/PYPI.md +87 -0
- aikit/docs/PYPI_DESCRIPTION.md +103 -0
- aikit/docs/SECURITY_AUDIT.md +26 -0
- aikit/docs/STRIX.md +28 -0
- aikit/docs/V0_5_0.md +27 -0
- aikit/docs/V0_6_4.md +25 -0
- aikit/docs/V1_4_0.md +73 -0
- aikit/docs/V1_4_1.md +55 -0
- aikit/docs/V1_4_2.md +33 -0
- aikit/docs/WEB_DESIGN.md +72 -0
- aikit/docs/WINDOWS_CI_FIX.md +39 -0
- aikit/docs/adr/0000-template.md +24 -0
- aikit/docs/adr/0001-adaptive-model-routing.md +30 -0
- aikit/docs/adr/0002-template-separation.md +24 -0
- aikit/docs/adr/0003-agent-registry-and-router.md +24 -0
- aikit/docs/adr/0004-onboarding-and-project-facts.md +24 -0
- aikit/docs/adr/0005-client-settings-ownership.md +30 -0
- aikit/docs/adr/0006-routing-evidence-and-local-measurements.md +26 -0
- aikit/docs/adr/0007-generated-client-configuration-and-presets.md +34 -0
- aikit/docs/adr/0008-unified-cli-and-fact-drift.md +20 -0
- aikit/docs/adr/0009-provider-review-doctor-fix-and-ci-self-install.md +20 -0
- aikit/docs/adr/0010-metrics-analysis-and-gemini-verification.md +20 -0
- aikit/docs/adr/0011-evidence-lifecycle-and-evaluation.md +20 -0
- aikit/docs/adr/0012-measurement-led-routing.md +31 -0
- aikit/docs/adr/0013-docker-cli-image.md +24 -0
- aikit/docs/adr/0014-local-dialogue-memory.md +22 -0
- aikit/docs/history/original-bundle-checks.md +11 -0
- aikit/docs/history/v0.1-changelog.txt +37 -0
- aikit/docs/history/v0.10-changelog.md +12 -0
- aikit/docs/history/v0.2-changelog.md +35 -0
- aikit/docs/history/v0.3-changelog.md +25 -0
- aikit/docs/history/v0.4-changelog.md +31 -0
- aikit/docs/history/v0.5-changelog.md +14 -0
- aikit/docs/history/v0.6.4-changelog.md +12 -0
- aikit/docs/history/v0.6.5-v0.9-changelog.md +35 -0
- aikit/docs/history/v1.1.0-changelog.md +12 -0
- aikit/docs/history/v1.2.0-changelog.md +11 -0
- aikit/docs/history/verification-before-measurements.md +53 -0
- aikit/integrations/CONVENTIONS.md +3 -0
- aikit/integrations/README.md +7 -0
- aikit/integrations/agents.json +136 -0
- aikit/integrations/ai-kit-check.yml +66 -0
- aikit/integrations/ai-kit-cline.md +4 -0
- aikit/integrations/ai-kit-roo.md +4 -0
- aikit/integrations/ai-kit-windsurf.md +4 -0
- aikit/integrations/ai-kit.mdc +6 -0
- aikit/integrations/claude-settings.data-ask.json +23 -0
- aikit/integrations/claude-settings.git-ask.json +10 -0
- aikit/integrations/copilot-instructions.md +3 -0
- aikit/integrations/security-audit.json +135 -0
- aikit/integrations/strix.json +69 -0
- aikit/pyproject.toml +60 -0
- aikit/scripts/__init__.py +1 -0
- aikit/scripts/adapters.py +184 -0
- aikit/scripts/adaptive.py +167 -0
- aikit/scripts/adr.py +61 -0
- aikit/scripts/benchmark.py +543 -0
- aikit/scripts/changelog.py +55 -0
- aikit/scripts/check_distribution.py +178 -0
- aikit/scripts/check_kit.py +406 -0
- aikit/scripts/context.py +184 -0
- aikit/scripts/docker_test_usage.py +55 -0
- aikit/scripts/doctor.py +313 -0
- aikit/scripts/evaluate.py +125 -0
- aikit/scripts/install.py +1584 -0
- aikit/scripts/learning.py +260 -0
- aikit/scripts/memory.py +344 -0
- aikit/scripts/memory_import.py +177 -0
- aikit/scripts/memory_store.py +125 -0
- aikit/scripts/metrics.py +351 -0
- aikit/scripts/router.py +399 -0
- aikit/template/.agents/hooks/session-start.md +3 -0
- aikit/template/.agents/hooks/session-start.sh +21 -0
- aikit/template/.agents/skills/ai-kit-bootstrap/SKILL.md +14 -0
- aikit/template/.agents/skills/ai-kit-review/SKILL.md +11 -0
- aikit/template/.agents/skills/ai-kit-sync-context/SKILL.md +12 -0
- aikit/template/.agents/skills/context7-docs/SKILL.md +11 -0
- aikit/template/.agents/skills/design-extract/SKILL.md +9 -0
- aikit/template/.agents/skills/dotnet-work/SKILL.md +9 -0
- aikit/template/.agents/skills/filament-work/SKILL.md +9 -0
- aikit/template/.agents/skills/frontend-work/SKILL.md +9 -0
- aikit/template/.agents/skills/go-work/SKILL.md +9 -0
- aikit/template/.agents/skills/infra-work/SKILL.md +9 -0
- aikit/template/.agents/skills/java-work/SKILL.md +9 -0
- aikit/template/.agents/skills/laravel-blade-ui/SKILL.md +9 -0
- aikit/template/.agents/skills/laravel-work/SKILL.md +10 -0
- aikit/template/.agents/skills/library-work/SKILL.md +9 -0
- aikit/template/.agents/skills/moodle-work/SKILL.md +9 -0
- aikit/template/.agents/skills/php-work/SKILL.md +9 -0
- aikit/template/.agents/skills/project-continuity/SKILL.md +21 -0
- aikit/template/.agents/skills/python-work/SKILL.md +9 -0
- aikit/template/.agents/skills/rust-work/SKILL.md +9 -0
- aikit/template/.agents/skills/security-audit/SKILL.md +16 -0
- aikit/template/.agents/skills/security-audit/agents/openai.yaml +2 -0
- aikit/template/.agents/skills/strix/SKILL.md +16 -0
- aikit/template/.agents/skills/strix/agents/openai.yaml +2 -0
- aikit/template/.agents/skills/ui-review/SKILL.md +9 -0
- aikit/template/.agents/skills/web-design/SKILL.md +9 -0
- aikit/template/AGENTS.md +16 -0
- aikit/template/CHANGELOG.md +6 -0
- aikit/template/CLAUDE.md +5 -0
- aikit/template/GEMINI.md +4 -0
- aikit/template/KIMI.md +4 -0
- aikit/template/MANUS.md +4 -0
- aikit/template/PROJECT_CONTEXT.md +35 -0
- aikit/template/README.md +6 -0
- aikit/template/WIKI.md +37 -0
- aikit/template/ai-kit/ADAPTERS.md +100 -0
- aikit/template/ai-kit/BOOTSTRAP.md +15 -0
- aikit/template/ai-kit/CONTAINERS.md +63 -0
- aikit/template/ai-kit/CONTEXT7.md +96 -0
- aikit/template/ai-kit/CORE.md +23 -0
- aikit/template/ai-kit/ENGINEERING.md +34 -0
- aikit/template/ai-kit/MCP.md +17 -0
- aikit/template/ai-kit/METRICS.md +83 -0
- aikit/template/ai-kit/SECURITY-AUDIT.md +21 -0
- aikit/template/ai-kit/SECURITY.md +34 -0
- aikit/template/ai-kit/SKILLS.md +37 -0
- aikit/template/ai-kit/STRIX.md +44 -0
- aikit/template/ai-kit/UPSTREAM.md +38 -0
- aikit/template/ai-kit/WEB-DESIGN.md +37 -0
- aikit/template/ai-kit/profiles/OWNER.md +19 -0
- aikit/template/ai-kit/project.json +14 -0
- aikit/template/ai-kit/router/POLICY.md +79 -0
- aikit/template/ai-kit/router/providers/anthropic.json +44 -0
- aikit/template/ai-kit/router/providers/anthropic.md +14 -0
- aikit/template/ai-kit/router/providers/gemini.json +13 -0
- aikit/template/ai-kit/router/providers/gemini.md +10 -0
- aikit/template/ai-kit/router/providers/kimi.json +26 -0
- aikit/template/ai-kit/router/providers/kimi.md +13 -0
- aikit/template/ai-kit/router/providers/local.json +18 -0
- aikit/template/ai-kit/router/providers/local.md +10 -0
- aikit/template/ai-kit/router/providers/openai.json +48 -0
- aikit/template/ai-kit/router/providers/openai.md +14 -0
- aikit/template/ai-kit/router/routing.json +11 -0
- aikit/template/ai-kit/router/selection.json +14 -0
- aikit/template/ai-kit/settings.json +11 -0
- aikit/template/ai-kit/stacks/DOTNET.md +13 -0
- aikit/template/ai-kit/stacks/FILAMENT.md +18 -0
- aikit/template/ai-kit/stacks/FRONTEND.md +9 -0
- aikit/template/ai-kit/stacks/GO.md +19 -0
- aikit/template/ai-kit/stacks/INFRA.md +12 -0
- aikit/template/ai-kit/stacks/JAVA.md +13 -0
- aikit/template/ai-kit/stacks/LARAVEL.md +15 -0
- aikit/template/ai-kit/stacks/LIBRARY.md +9 -0
- aikit/template/ai-kit/stacks/MOODLE.md +12 -0
- aikit/template/ai-kit/stacks/PHP.md +11 -0
- aikit/template/ai-kit/stacks/PYTHON.md +11 -0
- aikit/template/ai-kit/stacks/RUST.md +18 -0
- aikit/template/ai-kit/vendor/security-audit/AI-AND-LLM.md +83 -0
- aikit/template/ai-kit/vendor/security-audit/ATTACK-CLASSES.md +130 -0
- aikit/template/ai-kit/vendor/security-audit/CLIENT-SIDE.md +83 -0
- aikit/template/ai-kit/vendor/security-audit/CLOUD-AND-DEPLOYMENT.md +86 -0
- aikit/template/ai-kit/vendor/security-audit/DATA-ISOLATION-AND-LIFECYCLE.md +84 -0
- aikit/template/ai-kit/vendor/security-audit/DESKTOP-MOBILE-AND-LOCAL-IPC.md +89 -0
- aikit/template/ai-kit/vendor/security-audit/HUNTING.md +251 -0
- aikit/template/ai-kit/vendor/security-audit/LICENSE +21 -0
- aikit/template/ai-kit/vendor/security-audit/MEMORY-SAFETY-AND-BINARY.md +101 -0
- aikit/template/ai-kit/vendor/security-audit/PROTOCOLS-RPC-AND-MESSAGING.md +81 -0
- aikit/template/ai-kit/vendor/security-audit/RECONNAISSANCE.md +156 -0
- aikit/template/ai-kit/vendor/security-audit/RESOURCE-EXHAUSTION-AND-AVAILABILITY.md +78 -0
- aikit/template/ai-kit/vendor/security-audit/SKILL.md +192 -0
- aikit/template/ai-kit/vendor/security-audit/SUPPLY-CHAIN-AND-RELEASE.md +73 -0
- aikit/template/ai-kit/vendor/security-audit/VALIDATION-AND-REPORTING.md +186 -0
- aikit/template/ai-kit/vendor/security-audit/WEB-PROTOCOL-AND-AUTH.md +105 -0
- aikit/template/ai-kit/vendor/security-audit/report-schema.json +461 -0
- aikit/template/ai-kit/vendor/security-audit/validate-coverage-ledger.cjs +872 -0
- aikit/template/ai-kit/vendor/security-audit/validate-coverage-ledger.test.cjs +740 -0
- aikit/template/ai-kit/vendor/security-audit/validate-findings.cjs +773 -0
- aikit/template/ai-kit/vendor/security-audit/validate-findings.test.cjs +652 -0
- aikit/template/ai-kit/vendor/strix/LICENSE +201 -0
- aikit/template/ai-kit/vendor/strix/api-security-testing/SKILL.md +61 -0
- aikit/template/ai-kit/vendor/strix/application-security-testing/SKILL.md +66 -0
- aikit/template/ai-kit/vendor/strix/ci-security-scanning-with-strix/SKILL.md +149 -0
- aikit/template/ai-kit/vendor/strix/find-security-vulnerabilities-in-code/SKILL.md +62 -0
- aikit/template/ai-kit/vendor/strix/fix-security-vulnerabilities-with-strix/SKILL.md +77 -0
- aikit/template/ai-kit/vendor/strix/managed-pentesting-with-strix/SKILL.md +321 -0
- aikit/template/ai-kit/vendor/strix/owasp-top-10-testing/SKILL.md +64 -0
- aikit/template/ai-kit/vendor/strix/penetration-testing-with-strix/SKILL.md +162 -0
- aikit/template/ai-kit/vendor/strix/web-app-penetration-testing/SKILL.md +54 -0
- aikit/template/ai-kit/web-design/LARAVEL.md +51 -0
- aikit/template/ai-kit/web-design/LIBRARIES.md +39 -0
- aikit/template/ai-kit/web-design/REVIEW.md +37 -0
- aikit/template/ai-kit/web-design/TOOLS.md +43 -0
- aikit/template/docs/DECISIONS.md +7 -0
- aikit/template/docs/adr/0000-template.md +20 -0
- aikit/template/docs/design/ACCEPTANCE.md +24 -0
- aikit/template/docs/design/BRIEF.md +26 -0
- aikit/template/docs/design/SYSTEM.md +30 -0
- aikit/templates/agent-secrets.ignore +19 -0
- aikit/templates/gitignore.private +160 -0
- aikit/templates/gitignore.team +139 -0
- aikit/tests/build_distribution.py +73 -0
- aikit/tests/docker_smoke.py +172 -0
- aikit/tests/fixtures/create-junction.ps1 +18 -0
- aikit/tests/fixtures/golden/claude-settings-local.json +58 -0
- aikit/tests/test_adapters.py +105 -0
- aikit/tests/test_aikit.py +79 -0
- aikit/tests/test_benchmark.py +241 -0
- aikit/tests/test_check_kit.py +203 -0
- aikit/tests/test_context.py +76 -0
- aikit/tests/test_context7.py +153 -0
- aikit/tests/test_context_selection.py +70 -0
- aikit/tests/test_distribution.py +181 -0
- aikit/tests/test_docker_image.py +63 -0
- aikit/tests/test_docker_test_usage.py +54 -0
- aikit/tests/test_doctor.py +148 -0
- aikit/tests/test_evaluate.py +66 -0
- aikit/tests/test_install.py +939 -0
- aikit/tests/test_learning.py +247 -0
- aikit/tests/test_memory.py +371 -0
- aikit/tests/test_metrics.py +209 -0
- aikit/tests/test_native.py +342 -0
- aikit/tests/test_onboarding.py +301 -0
- aikit/tests/test_router.py +336 -0
- aikit/tests/test_security_audit.py +237 -0
- aikit/tests/test_strix.py +245 -0
- aikit/tests/test_web_design.py +219 -0
- aikit/tests/wheel_smoke.py +104 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: managed-pentesting-with-strix
|
|
3
|
+
description: Run a managed pentest of a web app, API, repository, or local workspace on the app.strix.ai platform with the `strix cloud` CLI or REST API — no local Docker or LLM key needed. Safely review and upload local source, register assets, launch and poll scans, triage vulnerabilities, export SARIF, download compliance reports, start PR reviews, buy credits, and set up schedules or webhooks. Use for managed, continuous, scheduled, team-tracked, or sandboxed-agent security testing.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: usestrix
|
|
7
|
+
homepage: https://docs.app.strix.ai
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Strix Cloud (managed, no local infra)
|
|
11
|
+
|
|
12
|
+
Use this when you want Strix's autonomous pentesting **without running Docker or an LLM yourself** — the scan runs on Strix's infrastructure and results are tracked in a team dashboard. This is the right choice in sandboxed/hosted agent and CI environments, for teams, and for scheduled/continuous testing (downloadable PDF/DOCX reports are an Enterprise-plan feature). For fully local, free, air-gapped, or BYO-LLM runs, use the open-source CLI in the **penetration-testing-with-strix** skill instead — both share the same engine and SARIF output, so you can mix them.
|
|
13
|
+
|
|
14
|
+
There are two equivalent interfaces. Prefer the CLI:
|
|
15
|
+
|
|
16
|
+
- **`strix cloud` CLI** — every REST operation has a command in the form `strix cloud <resource> <verb>`. Install with `curl -sSL https://strix.ai/install | bash`. Run `strix cloud` to list all resources and `strix cloud <resource> help` (or `-h`) to list a resource's verbs; a bare resource with a safe read operation runs its documented default.
|
|
17
|
+
- **REST API** — base URL `https://app.strix.ai/api/v1`, `Authorization: Bearer <token>` on every request. Full reference: **[docs.app.strix.ai](https://docs.app.strix.ai)** · agent index: `https://docs.app.strix.ai/llms.txt` · OpenAPI: `https://docs.app.strix.ai/openapi.json`.
|
|
18
|
+
|
|
19
|
+
The CLI is equally usable by agents and people. Output is complete JSON when stdout is not a terminal, or when you pass `--json`; terminal tables favor names, branches, lifecycle states, and numbered selectors. Human lists retain the selectors needed by follow-up commands but omit internal organization/user IDs; a selector too long for the compact table is repeated losslessly in a copyable block. Paginated lists print the next `--page` or `--offset`, and detail views preserve useful prose within a safe terminal bound; use `--json` for the complete record. Token lists label credentials as active, expired, or revoked. Binary downloads are the exception: redirect raw bytes intentionally, or use `--output FILE --json` to write the file and receive structured metadata. There are no interactive prompts when stdin is not a terminal. Exit codes: `0` success, `1` request/runtime error, `2` invalid usage, `4` authentication or plan limit, `5` payment required.
|
|
20
|
+
|
|
21
|
+
Every resource group with a safe read operation has a useful default action, and `-h` or `help` always shows its verbs. Native tab completion includes resources, verbs, flags, workspace commands, and local paths:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
source <(strix completions zsh) # current zsh session
|
|
25
|
+
source <(strix completions bash) # current bash session
|
|
26
|
+
strix completions fish | source # current fish session
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Write commands take request fields as flags. Every write command also accepts one JSON object with `--data`, which is the way to send fields that have no flag:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
strix cloud scans start --data '{"engagement_type":"code_review"}' # literal JSON
|
|
33
|
+
strix cloud scans start --data @request.json # read a file
|
|
34
|
+
cat request.json | strix cloud scans start --data - # read standard input
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The platform enforces plan and role limits, and the CLI passes the platform message through. Report downloads need the Enterprise plan. Schedules need the Pro plan. Billing writes need an admin token. A blocked command exits with code `4`.
|
|
38
|
+
|
|
39
|
+
## Setup: sign in
|
|
40
|
+
|
|
41
|
+
Run the device sign-in. It creates the user's account and workspace on first use and stores a personal API token in `~/.strix/platform-auth.json`:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
strix cloud login
|
|
45
|
+
# Non-interactive least-privilege example:
|
|
46
|
+
strix cloud login --scopes scans:read scans:write uploads:write billing:read vulnerabilities:read assets:read assets:write
|
|
47
|
+
# Or use a stable named profile:
|
|
48
|
+
strix cloud login --scope-profile recommended
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
The user approves the sign-in in the browser. With `--scopes` (and optionally `--workspace <name-or-id>`) there are no terminal prompts, so the command works from a non-interactive agent shell. In an interactive terminal without flags, the CLI offers a workspace picker and scope presets (Recommended, Full access, Minimal, Custom). Recommended covers ordinary scans, source uploads, workspace switching, and user-approved credit top-ups; it excludes `tokens:write`, which must be requested explicitly when credential management is required. Use explicit scopes for a narrower automation token.
|
|
52
|
+
|
|
53
|
+
- `strix cloud whoami` is the fast local status. `strix cloud session --json` verifies the remote device session; `strix cloud session scopes` shows both effective access and the immutable login ceiling.
|
|
54
|
+
- `strix cloud logout` revokes the remote session before removing the local token. On a network or server failure it keeps the token so the user can retry; `--local-only` deliberately skips revocation.
|
|
55
|
+
- Every other `strix cloud` command uses the stored token automatically. `--token <token>` or `STRIX_API_TOKEN` is a stateless per-command override and never overwrites the stored account. For an override that is itself a CLI session, also pass `--workspace-id` or set `STRIX_WORKSPACE_ID`.
|
|
56
|
+
- Never hardcode, log, or commit the token. Store it in an env var or the CI secret store.
|
|
57
|
+
- **Scopes (least-privilege):** assign only what the integration needs and rotate regularly:
|
|
58
|
+
|
|
59
|
+
| Scope | Grants |
|
|
60
|
+
|---|---|
|
|
61
|
+
| `scans:read` / `scans:write` | list/read/report scans · create/rerun/cancel scans |
|
|
62
|
+
| `vulnerabilities:read` / `:write` | read findings · update status & notes |
|
|
63
|
+
| `assets:read` / `:write` | read domains/repos · register/update them |
|
|
64
|
+
| `schedules:read` / `:write` | read schedules · create/trigger recurring scans |
|
|
65
|
+
| `pr_reviews:write` | trigger PR security reviews |
|
|
66
|
+
| `webhooks:read` / `:write` | manage webhook subscriptions |
|
|
67
|
+
| `uploads:write` | upload local source or documents for a scan |
|
|
68
|
+
| `organizations:read` | read organization details (listing/switching the signed-in user's workspaces needs no API scope) |
|
|
69
|
+
| `organizations:write` | create/update workspaces (admin) |
|
|
70
|
+
| `tokens:write` | create/revoke ordinary API tokens (not needed to manage the current CLI session) |
|
|
71
|
+
| `knowledge:read` / `:write` | read/update organization knowledge |
|
|
72
|
+
| `audit:read` | read/export the Enterprise audit log |
|
|
73
|
+
| `billing:read` / `billing:write` | read credit balance & auto top-up settings · buy credits (admin) |
|
|
74
|
+
|
|
75
|
+
HTTP errors map to messages and exit codes: `401` bad/expired token (exit `4`), `402` out of credits (exit `5`), `403` scope/plan-tier limit (exit `4`), `422` validation error (exit `1`).
|
|
76
|
+
|
|
77
|
+
Create a time-limited automation token with `strix cloud tokens create`. Use
|
|
78
|
+
`--rbac-scopes` to restrict it to target IDs, tags, or business units; the value is a
|
|
79
|
+
JSON array of `{ "type": "target|tag|business_unit", "value": "..." }` objects:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
strix cloud tokens create --type service --name staging-ci \
|
|
83
|
+
--expires-at 2026-12-31T23:59:59Z \
|
|
84
|
+
--scopes scans:read scans:write \
|
|
85
|
+
--rbac-scopes '[{"type":"tag","value":"staging"}]'
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The token secret is returned once. Store it directly in a secret manager and do not
|
|
89
|
+
print or commit it. `--expires-at` and `--expires-in-days` are mutually exclusive.
|
|
90
|
+
|
|
91
|
+
## 0. Credits & top-ups
|
|
92
|
+
|
|
93
|
+
Non-Enterprise scans consume org credits. Enterprise engagements are plan-included and do not debit the wallet. Check the balance before a scan (`billing:read`):
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
strix cloud credits
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
When the balance is too low, buy credits with `strix cloud billing topup` (`billing:write`, admin token). The server answers the first request with **HTTP 402 and a machine-payment challenge** (Stripe Machine Payments Protocol). The CLI pays the challenge with the Stripe Link wallet client when Node.js is available — the user approves the spend in the [Link app](https://link.com/agents). The response returns the receipt (`credits_granted`, `duplicate`, `reference`) and the new balance.
|
|
100
|
+
|
|
101
|
+
A default-tier source-only code review currently starts at 60 credits. Source uploads are not free: they launch an ordinary `code_review` and use the same deterministic scope estimator. The service checks the full balance before launch, reserves credits atomically only after validation succeeds, and does not create or charge a rejected scan. Retests and Enterprise scans are exempt.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
strix cloud billing topup --credits 20 --yes # explicit approval; skips the TTY prompt
|
|
105
|
+
strix cloud billing topup --credits 20 --no-pay # print the 402 challenge without paying
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
The default payment path is the Stripe Link wallet. When no wallet is connected, an interactive `strix cloud billing topup` starts the Link sign-in for the user and prints the verification link. The user approves the connection one time in the Link app, and then approves each payment there. No keys or variables are necessary. In a non-interactive process, the command stops and tells the user to connect the wallet at [link.com/agents](https://link.com/agents) or to use the hosted checkout link.
|
|
109
|
+
|
|
110
|
+
In a non-interactive agent or CI process, payment never proceeds unless the command includes `--yes`. Show the challenge or estimated spend to the user and obtain approval before adding it. `--no-pay` always stops after printing the challenge.
|
|
111
|
+
|
|
112
|
+
If the user does not want a wallet, create a hosted checkout link with `strix cloud billing subscribe --plan strix_top_up` and give the link to the user. The user pays in the browser.
|
|
113
|
+
|
|
114
|
+
Automatic top-ups (admin): `strix cloud billing auto-topup` shows the setting. Enable it with:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
strix cloud billing auto-topup update --enabled --topup-credits 20 --monthly-cap-credits 200
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
An omitted `--monthly-cap-credits` keeps the stored cap. Pass `--no-monthly-cap` to remove the cap.
|
|
121
|
+
|
|
122
|
+
### Workspaces and account setup
|
|
123
|
+
|
|
124
|
+
Manage workspaces with a personal token from `strix cloud login`:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
strix cloud workspaces list # numbered name/role/current list
|
|
128
|
+
strix cloud workspaces create --name "My Team" # admin + organizations:write
|
|
129
|
+
strix cloud workspaces use 2 # displayed number, exact name, or ID
|
|
130
|
+
strix cloud workspace use "My Team" # singular `workspace` alias also works
|
|
131
|
+
strix cloud session scopes # effective scopes + consent ceiling
|
|
132
|
+
strix cloud session scopes set minimal # narrow the session
|
|
133
|
+
strix cloud org members invite --email dev@example.com --role analyst
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
`workspaces use` retargets the current personal token to a workspace the user already belongs to and stores the updated workspace metadata; the bearer secret and expiry stay unchanged. It does not reprompt during ordinary switches: the server preserves the chosen profile, enforces the immutable login ceiling, and caps effective scopes by the target role. Use `--scope-profile` or `--scopes` to narrow within that ceiling; broader consent requires `strix cloud login` again. The CLI pins each process to the workspace it started in, so concurrent shells fail with a recoverable conflict instead of silently crossing organizations.
|
|
137
|
+
|
|
138
|
+
### Handoffs a person must finish
|
|
139
|
+
|
|
140
|
+
Four steps end at the user. The command creates the link or the record and prints it. Strix opens the browser only in an interactive terminal. Pass `--no-browser` to print the URL only.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
strix cloud billing subscribe --plan strix_cloud # hosted checkout page for the Cloud plan
|
|
144
|
+
strix cloud billing portal # billing portal for the card and the plan
|
|
145
|
+
strix cloud integrations install github # GitHub App or Slack installation page
|
|
146
|
+
strix cloud domains verify <domain-id> # DNS record to add, then run it again
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Give the printed URL or DNS record to the user and wait. Do not claim that the payment, the installation, or the DNS change is complete. Confirm the result afterwards with `strix cloud credits`, `strix cloud integrations list`, or `strix cloud domains list`. All four commands need an admin token, except `domains verify`, which needs `assets:write`.
|
|
150
|
+
|
|
151
|
+
### Organization knowledge
|
|
152
|
+
|
|
153
|
+
Agents can manage the organization knowledge base without the dashboard (`knowledge:read` / `knowledge:write`):
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
strix cloud knowledge list --search authentication
|
|
157
|
+
strix cloud knowledge add --title "Authentication" --content "Staging uses SSO."
|
|
158
|
+
strix cloud knowledge update <document-id> --content "Staging uses SSO and TOTP."
|
|
159
|
+
strix cloud knowledge delete <document-id>
|
|
160
|
+
strix cloud knowledge policies add --key staging-only --content "Never test production."
|
|
161
|
+
strix cloud knowledge policies delete staging-only
|
|
162
|
+
strix cloud knowledge repos entries usestrix/strix
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Knowledge policy writes require an admin token. Repository names are passed as normal `owner/name` values; the CLI handles URL encoding. The `costs` and `llm-settings` commands target on-prem installations and return `404` on app.strix.ai.
|
|
166
|
+
|
|
167
|
+
## 1. Register the target as an asset
|
|
168
|
+
|
|
169
|
+
Scans run against **registered assets**, not raw URLs. Register once, then reuse the returned UUID.
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Domain (black-box / live target). Requires domain verification before external scanning.
|
|
173
|
+
# --asset-type must be one of: web_app | api | attack_surface.
|
|
174
|
+
strix cloud domains add --domain staging.example.com --asset-type web_app
|
|
175
|
+
|
|
176
|
+
# Repository (white-box / code review). `full_name` is "owner/name".
|
|
177
|
+
strix cloud repos add --data '{"full_name":"org/app","provider":"github"}'
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Look up existing assets instead of re-adding: `strix cloud domains list`, `strix cloud repos list` (both `assets:read`).
|
|
181
|
+
|
|
182
|
+
## 2. Launch a scan
|
|
183
|
+
|
|
184
|
+
`strix cloud scans start` (`scans:write`). Provide at least one target with `--domain-ids`, `--repository-ids`, or `--internal-targets` (internal infra needs a network connector — see docs).
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
strix cloud scans start \
|
|
188
|
+
--engagement-type live_test \
|
|
189
|
+
--domain-ids <domain-uuid> \
|
|
190
|
+
--focus "IDOR, auth bypass, SSRF" \
|
|
191
|
+
--context "Staging. Test account creds are configured as a test user." \
|
|
192
|
+
--notify-on-completion
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Useful flags (each maps to a `CreateScanRequest` field):
|
|
196
|
+
|
|
197
|
+
| Flag | Purpose |
|
|
198
|
+
|---|---|
|
|
199
|
+
| `--engagement-type` | `live_test` (default), `code_review`, `internal_infra`, `compliance_pentest` |
|
|
200
|
+
| `--domain-ids` / `--repository-ids` / `--internal-targets` | targets (at least one) |
|
|
201
|
+
| `--domain-paths` / `--repository-branches` | narrow to specific paths / branches (JSON maps) |
|
|
202
|
+
| `--credentials` | authenticated scanning, incl. `mfa_method` (`totp`/`email_otp`/…) + `totp_secret` (JSON list) |
|
|
203
|
+
| `--headers` | extra target HTTP headers as a JSON array of header objects |
|
|
204
|
+
| `--focus` / `--concerns` / `--context` | free-form strings that steer the agents |
|
|
205
|
+
| `--upload-ids` | attach uploaded source/docs archives for white-box context |
|
|
206
|
+
| `--notify-on-completion` / `--notification-emails` | email when done |
|
|
207
|
+
|
|
208
|
+
Without `--source`, the response is `{ scan_id, title, status }` with `status` = `pending`.
|
|
209
|
+
Local-source success wraps that platform response as
|
|
210
|
+
`{ source, upload_id, scan: { scan_id, title, status } }`, so automation can retain the exact
|
|
211
|
+
approved manifest and staged-upload identifier alongside the created scan.
|
|
212
|
+
|
|
213
|
+
### Scan a local workspace in the cloud
|
|
214
|
+
|
|
215
|
+
For an agent or CI workflow, bind approval to the exact source snapshot that was reviewed. Run
|
|
216
|
+
the dry run with the intended source-selection flags, review the manifest and selected paths,
|
|
217
|
+
and capture `source.archive_sha256`. Then repeat the same `--source`, every `--exclude`, and
|
|
218
|
+
any `--include-hidden`, `--include-sensitive`, or `--include-archives` flags with
|
|
219
|
+
`--approve-sha256`:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
strix cloud scans start --source . --exclude 'private/' --dry-run --show-files --json
|
|
223
|
+
# After reviewing the output, capture its source.archive_sha256 value:
|
|
224
|
+
SOURCE_SHA256="<reviewed source.archive_sha256>"
|
|
225
|
+
# Repeat every source-selection flag unchanged; a source-only scan infers code_review.
|
|
226
|
+
strix cloud scans start --source . --exclude 'private/' \
|
|
227
|
+
--approve-sha256 "$SOURCE_SHA256" --wait
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
The CLI rebuilds the archive and refuses the upload if its SHA-256 no longer matches. `--yes`
|
|
231
|
+
has deliberately narrower semantics: it approves only the snapshot built during that one
|
|
232
|
+
invocation. Use it for a deliberate human or one-shot approval, not as the second half of a
|
|
233
|
+
digest-bound agent/CI review. Without a TTY, a source upload requires either matching
|
|
234
|
+
`--approve-sha256` approval or `--yes`; an interactive terminal can instead show the summary,
|
|
235
|
+
the selected filenames when `--show-files` is set, and a `[y/N]` confirmation for its current
|
|
236
|
+
snapshot.
|
|
237
|
+
|
|
238
|
+
The default selection is privacy-conscious: in a Git worktree it includes tracked files plus untracked files that are not ignored; it honors `.gitignore`, excludes every hidden path component, always excludes `.git`, symlinks, dependencies/build output, secret-like filenames, and nested archives. Add project exclusions to `.strixignore` (one exclude glob per line) or repeat `--exclude GLOB`; a trailing slash such as `private/` excludes that directory subtree.
|
|
239
|
+
|
|
240
|
+
The client refuses more than 20,000 files, a file over 25 MiB, more than 250 MiB expanded, or a ZIP over 50 MiB. The service then stream-inflates the ZIP and independently rejects malformed or unsupported entries, unsafe paths, too many entries, oversized entries, excessive expanded data, and oversized compressed input, so an untrusted client cannot bypass the ZIP-bomb controls by forging metadata.
|
|
241
|
+
|
|
242
|
+
Only use `--include-hidden`, `--include-sensitive`, or `--include-archives` after the dry-run manifest shows that the scan needs them. Hidden and sensitive files are separate opt-ins: for example, including `.env` requires both `--include-hidden` and `--include-sensitive`.
|
|
243
|
+
|
|
244
|
+
The CLI removes its private temporary local archive after every invocation. Once a remote
|
|
245
|
+
upload is staged, a definitive scan rejection causes the CLI to delete it. A network failure,
|
|
246
|
+
`5xx` response, malformed success response, or interruption after scan launch begins is
|
|
247
|
+
ambiguous—the platform may have accepted the scan—so the CLI retains the upload and returns
|
|
248
|
+
its `upload_id` with `launch_outcome_unknown: true`. If an automatic deletion attempt cannot
|
|
249
|
+
be confirmed, it instead returns the retained `upload_id` with `cleanup_unknown: true`.
|
|
250
|
+
Before retrying, run `strix cloud scans list` to avoid a duplicate scan or charge. If no scan
|
|
251
|
+
is linked to the retained upload, remove it with `strix cloud uploads delete UPLOAD_ID`;
|
|
252
|
+
linked uploads cannot be deleted.
|
|
253
|
+
|
|
254
|
+
With no explicit type, source alone infers `code_review`. Any domain target wins and infers `live_test`, so source plus a deployed domain is the normal white-box live-test workflow. Pass `--engagement-type` when you need to override the inference.
|
|
255
|
+
|
|
256
|
+
## 3. Wait for completion
|
|
257
|
+
|
|
258
|
+
Pass `--wait` to `scans start` to poll until the scan reaches a final state, or poll yourself with `strix cloud scans get <scan-id>` (`scans:read`). Bound automation with `--wait-timeout SECONDS`; timeout exits cleanly without cancelling the remote scan. Status flow: `pending → running → completed` (or `failed` / `cancelled`). Scans take minutes to hours — poll on an interval, do not block indefinitely.
|
|
259
|
+
|
|
260
|
+
## 4. Read findings
|
|
261
|
+
|
|
262
|
+
The scan-detail response includes `executive_summary`, `methodology`, `recommendations`, a `findings` severity roll-up, and a `vulnerabilities[]` array. Each vulnerability carries `title, severity, status, cvss, cwe, endpoint, method, impact, technical_analysis, poc_description, poc_script_code`, and (for code findings) `code_file`/`code_diff`/`code_before`/`code_after`.
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
strix cloud scans get <scan-id> --json \
|
|
266
|
+
| jq '["critical","high","medium","low","info"] as $order
|
|
267
|
+
| .vulnerabilities
|
|
268
|
+
| sort_by(.severity as $s | $order | index($s))
|
|
269
|
+
| .[] | {title, severity, endpoint, cwe}'
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Cloud severities are `critical | high | medium | low` and statuses are `open | in_progress | snoozed | fixed | ignored | not_affected`. Sort by an explicit severity order rather than `sort_by(.severity)`, which sorts alphabetically (critical, high, low, medium).
|
|
273
|
+
|
|
274
|
+
Org-wide triage across scans: `strix cloud vulns list --severity critical` (`vulnerabilities:read`, and it also filters by `--status`, `--scan-id`, and more). Update triage state with `strix cloud vulns update <id> --status fixed`. To remediate, hand off to the **fix-security-vulnerabilities-with-strix** skill.
|
|
275
|
+
|
|
276
|
+
## 5. Export & report
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
# SARIF 2.1.0 for GitHub code scanning / ASPM ingestion
|
|
280
|
+
strix cloud scans sarif <scan-id> --output findings.sarif
|
|
281
|
+
|
|
282
|
+
# Report. Formats: technical (default) | retest | attestation | executive_summary
|
|
283
|
+
# Types: pdf (default) | docx
|
|
284
|
+
# Any report download requires the Enterprise plan. Formats beyond `technical`,
|
|
285
|
+
# DOCX, and white-label branding are Enterprise-only too. Scan must be completed.
|
|
286
|
+
strix cloud scans report <scan-id> --format technical --type pdf --output strix-report.pdf
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Downloads refuse to replace a file unless `--force` is explicit. Enterprise audit logs can be streamed as JSON or exported without trying to JSON-decode the body:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
strix cloud audit list --format csv --all --output audit.csv
|
|
293
|
+
strix cloud audit list --format ndjson --all --output audit.ndjson
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
## 6. PR reviews
|
|
297
|
+
|
|
298
|
+
Trigger an automated security review of a pull request (`pr_reviews:write`). Read the repository's `provider` and `installation_id` with `strix cloud repos list`; both identify the installed source-control integration. The results appear as PR comments and in the dashboard:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
strix cloud pr-reviews start \
|
|
302
|
+
--provider github \
|
|
303
|
+
--installation-id <installation-id> \
|
|
304
|
+
--repository-full-name org/app \
|
|
305
|
+
--pr-number 123
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
List/inspect with `strix cloud pr-reviews list` and `strix cloud pr-reviews get <id>`. Repo-level PR-review behavior is configured with `strix cloud pr-reviews settings`.
|
|
309
|
+
|
|
310
|
+
## 7. Continuous testing (schedules & webhooks)
|
|
311
|
+
|
|
312
|
+
- **Schedules** (`schedules:write`, Pro plan): `strix cloud schedules create` makes recurring scans, and `strix cloud schedules trigger <id>` runs one on demand — the managed equivalent of a cron-driven CLI loop.
|
|
313
|
+
- **Webhooks** (`webhooks:write`): `strix cloud webhooks create` subscribes to pentest/vulnerability lifecycle events such as `scan.completed` and `vulnerability.created` to push results into Slack, ticketing, or your own pipeline instead of polling.
|
|
314
|
+
|
|
315
|
+
See the schedules and webhooks sections at [docs.app.strix.ai](https://docs.app.strix.ai) for payloads.
|
|
316
|
+
|
|
317
|
+
Network connectors are Enterprise-only. `strix cloud connectors create` may return a one-time enrollment command containing credentials; do not paste it into logs, and request it with `--include-command` only when the user is ready to install it. Browser checkout, source-control installation, DNS verification, connector installation, chat sharing, and publishing SARIF to an external provider are user handoffs or explicit external mutations—prepare the command/link, then obtain the appropriate approval before completing them.
|
|
318
|
+
|
|
319
|
+
## Safety
|
|
320
|
+
|
|
321
|
+
Only scan assets the user's organization owns or is authorized to test. External domain scans require verification (DNS/file/meta-tag) enforced by the platform — do not try to bypass it.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: owasp-top-10-testing
|
|
3
|
+
description: Test an application against the OWASP Top 10 with Strix — autonomous AI agents that attempt real exploits for each category of the current OWASP Top 10:2025 (broken access control including SSRF, security misconfiguration, software supply chain failures, cryptographic failures, injection, insecure design, authentication failures, integrity failures, logging and alerting failures, mishandling of exceptional conditions) and report only what they could actually prove, mapped back to the category with a proof-of-concept. Also covers the OWASP API Security Top 10 (2023). Use when the user asks for an OWASP Top 10 assessment, OWASP compliance testing, or a security review mapped to OWASP categories.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: usestrix
|
|
7
|
+
homepage: https://docs.strix.ai
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Test against the OWASP Top 10
|
|
11
|
+
|
|
12
|
+
The OWASP Top 10 is a taxonomy of risk categories, not a test suite — "OWASP Top 10 testing" means exercising each category against the real application and reporting what's actually exploitable. Strix's agents do the exploitation; this skill covers running it category-by-category and reporting coverage honestly.
|
|
13
|
+
|
|
14
|
+
**Use the current edition: [OWASP Top 10:2025](https://owasp.org/Top10/)** (8th installment, superseding 2021). Ask the user before targeting an older edition — some compliance checklists still reference 2021, and a report labelled with the wrong edition is misleading. Key differences from 2021: **SSRF is folded into A01**, **A03 Software Supply Chain Failures** expands the old "Vulnerable and Outdated Components", and **A10 Mishandling of Exceptional Conditions** is new; A02 Security Misconfiguration moved 5→2.
|
|
15
|
+
|
|
16
|
+
Install, LLM setup, and the managed-cloud alternative: **penetration-testing-with-strix**. For a run with no Docker and no LLM key, the same binary drives the managed platform: `strix cloud login`, then `strix cloud scans start ...` (details in **managed-pentesting-with-strix**).
|
|
17
|
+
|
|
18
|
+
## What is and is not testable by an agent
|
|
19
|
+
|
|
20
|
+
Be straight with the user about this — claiming a clean sweep of all ten is misleading.
|
|
21
|
+
|
|
22
|
+
| Category (2025) | Coverage |
|
|
23
|
+
|---|---|
|
|
24
|
+
| A01 Broken Access Control (incl. SSRF) | **Strong** — cross-user/tenant access, privilege escalation, IDOR, and SSRF (including blind, via out-of-band callbacks) are all exploit-validated. Needs two accounts plus a privileged one to prove the authorization half. |
|
|
25
|
+
| A02 Security Misconfiguration | **Strong** — debug endpoints, verbose errors, permissive CORS, missing hardening, default credentials, exposed admin surfaces. |
|
|
26
|
+
| A03 Software Supply Chain Failures | **Partial** — version fingerprinting, and vulnerable/outdated dependency review when source is supplied. Build-system and distribution-infrastructure compromise (the broader half of this category) is out of scope for a runtime scan — pair with SCA plus build-provenance controls. |
|
|
27
|
+
| A04 Cryptographic Failures | **Partial** — transport config, unencrypted data in transit, secrets and tokens leaked in responses. At-rest crypto and key management need source or infra review. |
|
|
28
|
+
| A05 Injection | **Strong** — SQL/NoSQL/command/template injection and XSS, exploit-validated. |
|
|
29
|
+
| A06 Insecure Design | **Partial** — business-logic abuse (price/quantity tampering, workflow skipping, race conditions) is found where reachable; design intent still needs human review and threat modelling. |
|
|
30
|
+
| A07 Authentication Failures | **Strong** — auth bypass, weak session/token handling, password-reset and MFA flaws. |
|
|
31
|
+
| A08 Software or Data Integrity Failures | **Partial** — insecure deserialization and unsigned-update paths where reachable; CI/CD trust boundaries are not runtime-testable. |
|
|
32
|
+
| A09 Security Logging & Alerting Failures | **Not testable from outside** — requires reviewing the logging and alerting pipeline. State this rather than reporting it as passed. |
|
|
33
|
+
| A10 Mishandling of Exceptional Conditions | **Partial** — agents actively probe error handling and fail-open behavior (malformed input, forced errors, race and timeout conditions) and report what leaks or bypasses a control; exhaustive coverage of internal error paths needs source review. |
|
|
34
|
+
|
|
35
|
+
For APIs, run the same exercise against the **OWASP API Security Top 10 (2023)** — API1 BOLA, API3 Broken Object Property Level Authorization (2019's excessive data exposure + mass assignment merged), API5 broken function-level authorization — using the **api-security-testing** skill.
|
|
36
|
+
|
|
37
|
+
## Run it
|
|
38
|
+
|
|
39
|
+
Maximum category coverage comes from giving the agents both the source and a running instance, plus credentials at two privilege levels:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
strix -n \
|
|
43
|
+
-t https://github.com/org/app \
|
|
44
|
+
-t https://staging.example.com \
|
|
45
|
+
--scan-mode deep --max-budget 30 \
|
|
46
|
+
--instruction "OWASP Top 10:2025 assessment. Cover every category systematically and map each finding to its 2025 category id.
|
|
47
|
+
Accounts: userA@example.com/<pw> (org 1), userB@example.com/<pw> (org 2), admin@example.com/<pw>.
|
|
48
|
+
Prioritise A01 (cross-org access, privilege escalation, SSRF), A02, A05, A07, A10.
|
|
49
|
+
Out of scope: /billing/*, outbound email."
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- `--scan-mode deep` matters here: systematically walking ten categories is not a quick scan.
|
|
53
|
+
- Without a second account, A01 results are structurally incomplete — say so in the report rather than leaving it implied.
|
|
54
|
+
- Need an auditor-facing PDF? Run it through the managed platform and pull the technical report (**managed-pentesting-with-strix**).
|
|
55
|
+
|
|
56
|
+
## Report honestly
|
|
57
|
+
|
|
58
|
+
From `strix_runs/<run>/`, group `vulnerabilities/*.md` by category and state, per category: what was attempted, what was proven, and what could not be assessed (A09 always; A03/A04/A06/A08/A10 partially). Label the report with the edition used. Verify each PoC yourself before it goes in front of the user.
|
|
59
|
+
|
|
60
|
+
A `0` exit code means nothing exploitable was proven **in what was analyzed** — check `run.json` status and cost against `--max-budget`; a budget-capped run is not a completed assessment.
|
|
61
|
+
|
|
62
|
+
## Then fix and re-test
|
|
63
|
+
|
|
64
|
+
Remediate with **fix-security-vulnerabilities-with-strix** and re-run to prove each exploit is closed. For ongoing coverage as the app changes, gate pull requests using **ci-security-scanning-with-strix**.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: penetration-testing-with-strix
|
|
3
|
+
description: Pentest a web app, API, codebase, repository, URL, domain, or IP with Strix — autonomous AI penetration testing that exploits and proves vulnerabilities (OWASP Top 10 and beyond — injection, XSS, SSRF, auth/access-control flaws, IDOR, business logic) instead of just flagging them. Runs self-hosted with the open-source CLI or via the managed app.strix.ai cloud, and returns validated findings with proof-of-concept exploits (Markdown, JSON, CSV, SARIF). Use when the user asks to pentest, hack, security-scan, security-audit, or find vulnerabilities in an app, API, website, or repo.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: usestrix
|
|
7
|
+
homepage: https://docs.strix.ai
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Run a Strix pentest
|
|
11
|
+
|
|
12
|
+
Strix runs autonomous AI pentesting agents that dynamically exploit a target and only report findings validated with a working proof-of-concept. There are **two ways to run it, built on the same engine and producing the same findings** — pick per situation, and mix them freely:
|
|
13
|
+
|
|
14
|
+
- **Open-source CLI** (self-hosted) — runs on your machine in a Docker sandbox with your own LLM key. Free, fully local, BYO-LLM, air-gap capable. Docs: [docs.strix.ai](https://docs.strix.ai).
|
|
15
|
+
- **Managed cloud** — runs on Strix's infrastructure, driven from the same CLI (`strix cloud ...`) or the REST API at `https://app.strix.ai/api/v1`. No Docker, no LLM key, no local compute; adds team dashboards, scheduling, PR reviews, downloadable PDF/DOCX reports (Enterprise plan), and internal-network connectors. Docs: [docs.app.strix.ai](https://docs.app.strix.ai). Full workflow in the **managed-pentesting-with-strix** skill.
|
|
16
|
+
|
|
17
|
+
## Which one? (decide, do not default)
|
|
18
|
+
|
|
19
|
+
Choose honestly based on the situation — neither is "better":
|
|
20
|
+
|
|
21
|
+
| Situation | Prefer |
|
|
22
|
+
|---|---|
|
|
23
|
+
| No Docker available, or a sandboxed/hosted agent/CI environment | **Cloud** |
|
|
24
|
+
| User has no LLM key / does not want to pay per-token or manage models | **Cloud** |
|
|
25
|
+
| Team visibility, shareable dashboard, scheduled/continuous scans, PR reviews, downloadable PDF/DOCX report (Enterprise) | **Cloud** |
|
|
26
|
+
| Scanning internal/private infrastructure not reachable from your machine | **Cloud** (network connector) |
|
|
27
|
+
| Source must never leave local infra (privacy/air-gap), or fully offline | **OSS CLI** |
|
|
28
|
+
| Free / one-off / local dev-loop scan, Docker already present | **OSS CLI** |
|
|
29
|
+
| BYO or self-hosted LLM, or a specific model not offered by the platform | **OSS CLI** |
|
|
30
|
+
| CI: runner already has Docker and you want a self-contained gate | **OSS CLI** |
|
|
31
|
+
| CI: no Docker, or you want results tracked centrally | **Cloud** |
|
|
32
|
+
|
|
33
|
+
**Mix them:** use the OSS CLI for the fast local dev-loop while writing/fixing code, and the Cloud for the authoritative, team-visible scan + report + tracking; or gate PRs with the OSS CLI in CI while the Cloud runs scheduled deep scans and PR reviews across the org. Both emit the same SARIF 2.1.0, so findings line up across environments.
|
|
34
|
+
|
|
35
|
+
If unsure and the user has (or will create) an app.strix.ai account, prefer **Cloud** — it avoids all local-infra friction. If they want zero signup / full local control, use the **OSS CLI**.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
# Option A — Open-source CLI (self-hosted)
|
|
40
|
+
|
|
41
|
+
## Prerequisites
|
|
42
|
+
|
|
43
|
+
1. **Docker running** — check with `docker info`. The first scan pulls the sandbox image automatically.
|
|
44
|
+
2. **Strix installed** — check with `strix --version`. Install if missing:
|
|
45
|
+
```bash
|
|
46
|
+
curl -sSL https://strix.ai/install | bash # or: pipx install strix-agent
|
|
47
|
+
```
|
|
48
|
+
3. **LLM configured** — two environment variables:
|
|
49
|
+
```bash
|
|
50
|
+
export STRIX_LLM="openai/gpt-5.4" # any LiteLLM model id (openai/..., anthropic/..., openrouter/...)
|
|
51
|
+
export LLM_API_KEY="<provider api key>"
|
|
52
|
+
```
|
|
53
|
+
Ask the user for these if unset. Never hardcode or commit keys.
|
|
54
|
+
|
|
55
|
+
## Running a scan
|
|
56
|
+
|
|
57
|
+
Always use `-n` (non-interactive/headless) — the default TUI blocks agents. Always set `--max-budget` unless the user says otherwise.
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Local code (white-box)
|
|
61
|
+
strix -n -t ./ --scan-mode standard --max-budget 10
|
|
62
|
+
|
|
63
|
+
# Deployed app / API (black-box)
|
|
64
|
+
strix -n -t https://staging.example.com --max-budget 20
|
|
65
|
+
|
|
66
|
+
# Repo + deployed app together (best coverage)
|
|
67
|
+
strix -n -t https://github.com/org/app -t https://staging.example.com
|
|
68
|
+
|
|
69
|
+
# Focused testing with credentials or scope hints
|
|
70
|
+
strix -n -t https://app.example.com \
|
|
71
|
+
--instruction "Use credentials user@example.com:pass123. Focus on IDOR and auth bypass."
|
|
72
|
+
|
|
73
|
+
# API spec as a first-class target (OpenAPI/Swagger or a Postman collection export)
|
|
74
|
+
strix -n -t ./openapi.yaml -t https://api.staging.example.com
|
|
75
|
+
|
|
76
|
+
# Many targets from a file, one per line
|
|
77
|
+
strix -n --target-list ./targets.txt --max-budget 30
|
|
78
|
+
|
|
79
|
+
# Give the agents a file to work with (wordlist, spec, notes) without making it a target
|
|
80
|
+
strix -n -t https://staging.example.com --workspace-file ./wordlist.txt --max-budget 20
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
A local path passed with `-t` is mounted into the sandbox **writable** — the agents can read and modify it, so point at a clean checkout, not uncommitted work you care about.
|
|
84
|
+
|
|
85
|
+
Key flags:
|
|
86
|
+
|
|
87
|
+
| Flag | Meaning |
|
|
88
|
+
|---|---|
|
|
89
|
+
| `-t, --target` | URL, repo URL, local path, domain, IP, OpenAPI/Postman spec, or `postman://<uuid>`. Repeatable. |
|
|
90
|
+
| `--target-list PATH` | File of targets, one per line (`#` comments allowed). Repeatable, combines with `-t`. |
|
|
91
|
+
| `-n, --non-interactive` | Headless, exits on completion. Required for agents. |
|
|
92
|
+
| `-m, --scan-mode` | `quick` (minutes) / `standard` (~30 min) / `deep` (hours, default). |
|
|
93
|
+
| `--instruction` / `--instruction-file` | Credentials, focus areas, scope rules. |
|
|
94
|
+
| `--workspace-file PATH[:DEST]` | Copy a file from this machine into `/workspace` before the scan, for a wordlist, a spec, or notes. Repeatable. |
|
|
95
|
+
| `--max-budget USD` | Hard LLM spend cap; scan wraps up cleanly at the limit. |
|
|
96
|
+
| `--max-turns N` | Per-agent turn cap (default 500). |
|
|
97
|
+
| `--fail-on SEVERITY` | Headless only: exit `2` only for findings at or above `critical`/`high`/`medium`/`low`/`info`. Default: any finding. |
|
|
98
|
+
| `-r`, `--resume RUN_NAME` | Resume a prior run from `strix_runs/`, with its agent history and targets. Cannot be combined with `-t`. |
|
|
99
|
+
| `--scope-mode` | For code targets: `auto` (diff-scope in CI/headless), `diff` (force changed files only), `full` (whole tree). |
|
|
100
|
+
| `--diff-base REF` | Branch or commit that `diff` scope compares against. Defaults to the repo's default branch. |
|
|
101
|
+
|
|
102
|
+
Scans take minutes (`quick`) to hours (`deep`). Run them in the background and poll for completion rather than blocking.
|
|
103
|
+
|
|
104
|
+
### Exit codes (headless)
|
|
105
|
+
|
|
106
|
+
- `0` — finished with no validated vulnerabilities **in what was analyzed** (with `--fail-on`, none at or above the threshold; lower ones are still in the artifacts)
|
|
107
|
+
- `1` — fatal error (missing env vars, Docker down, bad config)
|
|
108
|
+
- `2` — vulnerabilities found (with `--fail-on`, at least one at or above that severity)
|
|
109
|
+
|
|
110
|
+
A `0` is not proof of full coverage: if `--max-budget`/`--max-turns` is reached before the scan completes, it wraps up early and still exits `0`. When you need assurance the scan finished, give it enough budget and check `strix_runs/<run>/run.json`: a hard budget stop leaves `status: "stopped"`, but an agent that wrapped up early on a budget *warning* still calls `finish_scan` and records `"completed"` — so also sanity-check the run's cost against `--max-budget` and the report's stated coverage before treating a clean result as full coverage.
|
|
111
|
+
|
|
112
|
+
### Reading results
|
|
113
|
+
|
|
114
|
+
Artifacts land in `strix_runs/<run-name>/`:
|
|
115
|
+
|
|
116
|
+
| File | Contents |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `penetration_test_report.md` | Executive report — read this first. |
|
|
119
|
+
| `vulnerabilities/*.md` | One file per validated finding, with PoC and remediation. |
|
|
120
|
+
| `vulnerabilities.json` / `vulnerabilities.csv` | All findings as structured JSON / CSV index. |
|
|
121
|
+
| `findings.sarif` | SARIF 2.1.0 for GitHub code scanning / ASPM ingestion. |
|
|
122
|
+
| `run.json` | Run metadata, status, targets, usage/cost. |
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
# Option B — Managed cloud (no local infra)
|
|
127
|
+
|
|
128
|
+
The same `strix` binary drives the managed platform. Every command starts with `strix cloud`. Full details — asset registration, source uploads, reports, PR reviews, schedules, webhooks, and billing — are in the **managed-pentesting-with-strix** skill. Minimal flow:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# 1. Sign in (device flow — the user confirms a code in the browser; this also
|
|
132
|
+
# creates the account and workspace when needed)
|
|
133
|
+
strix cloud login
|
|
134
|
+
|
|
135
|
+
# If you need specific scopes, request them with --scopes:
|
|
136
|
+
# strix cloud login --scopes scans:read scans:write assets:read assets:write \
|
|
137
|
+
# vulnerabilities:read billing:read billing:write
|
|
138
|
+
|
|
139
|
+
# 2. Register and verify the target domain (verification prints a DNS record for the user)
|
|
140
|
+
strix cloud domains add --domain staging.example.com --asset-type web_app
|
|
141
|
+
strix cloud domains verify <domain-id>
|
|
142
|
+
|
|
143
|
+
# 3. Launch and wait
|
|
144
|
+
strix cloud scans start --engagement-type live_test --domain-ids <domain-id> --wait
|
|
145
|
+
|
|
146
|
+
# 4. Read validated findings
|
|
147
|
+
strix cloud vulns list --severity critical
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
For a local repository, `strix cloud scans start --source .` uploads the working tree (needs `uploads:write`) and infers a code review. When credits run out, `strix cloud billing topup` starts an agent-payable Stripe challenge — the managed skill covers the payment flow. Output is JSON when stdout is not a terminal, so the commands compose in scripts.
|
|
151
|
+
|
|
152
|
+
The raw REST API works too (`https://app.strix.ai/api/v1`, org-scoped bearer token — see [docs.app.strix.ai](https://docs.app.strix.ai)). If Docker or local prerequisites are not already satisfied, use this path instead of trying to install infra.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Reporting & next steps
|
|
157
|
+
|
|
158
|
+
Summarize findings by severity (critical/high/medium/low/info) and include the PoC evidence. To remediate and verify fixes (via either path), use the **fix-security-vulnerabilities-with-strix** skill. To wire scanning into CI/CD, use the **ci-security-scanning-with-strix** skill.
|
|
159
|
+
|
|
160
|
+
## Safety
|
|
161
|
+
|
|
162
|
+
Only scan targets the user owns or is authorized to test. The Cloud platform enforces domain verification before external scans; for the OSS CLI, confirm authorization yourself if the target looks like third-party infrastructure.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web-app-penetration-testing
|
|
3
|
+
description: Pentest a web app or website end to end — black-box testing of a live URL, staging environment, or local dev server that finds and exploits real vulnerabilities (auth bypass, broken access control, IDOR, injection, XSS, SSRF, business logic) and proves each one with a working proof-of-concept instead of a signature match. Runs with Strix, either the self-hosted open-source CLI or the managed app.strix.ai cloud. Use when the user asks to pentest, hack, security-test, or audit their web app, website, web application, or staging site.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: usestrix
|
|
7
|
+
homepage: https://docs.strix.ai
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Pentest a web application
|
|
11
|
+
|
|
12
|
+
Black-box (and optionally source-assisted) penetration testing of a running web app with Strix's autonomous agents. Every reported finding is validated with a working exploit, so there are no signature-based false positives to triage.
|
|
13
|
+
|
|
14
|
+
Install, LLM setup, all CLI flags, and the managed-cloud alternative are covered in the **penetration-testing-with-strix** skill — read it if the target is not a running web app, or if `strix --version` fails. For a run with no Docker and no LLM key, the same binary drives the managed platform: `strix cloud login`, then `strix cloud scans start ...` (details in **managed-pentesting-with-strix**). This skill is the web-app-specific workflow.
|
|
15
|
+
|
|
16
|
+
## 1. Confirm authorization and scope
|
|
17
|
+
|
|
18
|
+
Before running anything, establish:
|
|
19
|
+
|
|
20
|
+
- **The target is the user's** (or they are explicitly authorized to test it). Never pentest a third-party site on a hunch.
|
|
21
|
+
- **Which environment.** Prefer staging over production; agents send real exploit payloads and will create/modify data.
|
|
22
|
+
- **Out-of-scope paths** — payment flows, mass-email endpoints, admin destructive actions, third-party SSO providers.
|
|
23
|
+
- **Credentials.** Most real vulnerabilities live behind login. Without a test account, the agents only ever see the marketing surface.
|
|
24
|
+
|
|
25
|
+
Ask for anything missing rather than guessing.
|
|
26
|
+
|
|
27
|
+
## 2. Run the scan
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
strix -n -t https://staging.example.com --max-budget 20 \
|
|
31
|
+
--instruction "Test account: qa@example.com / <password>. In scope: /app/*, /api/*. Do not touch /billing or send email. Focus on access control between the two seeded orgs."
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Notes that matter for web apps specifically:
|
|
35
|
+
|
|
36
|
+
- **Give it credentials via `--instruction`** (or `--instruction-file` for anything long), including how to log in if the flow is unusual (magic link, SSO, MFA-exempt test user).
|
|
37
|
+
- **Two accounts beat one.** Multi-tenant IDOR and broken-access-control bugs — consistently the highest-impact class in web apps — can only be proven when the agent can attempt cross-account access.
|
|
38
|
+
- **Add the repo for white-box depth** when you have the source: `-t https://github.com/org/app -t https://staging.example.com` (or a local path). Source access materially improves coverage of business-logic and authorization flaws.
|
|
39
|
+
- **Localhost works.** Point at `http://host.docker.internal:3000` (Docker Desktop) so the sandbox can reach a dev server on the host.
|
|
40
|
+
- `--scan-mode quick` for a fast dev-loop pass, `standard` (~30 min) for a normal review, `deep` for pre-release assurance. Always set `--max-budget`.
|
|
41
|
+
|
|
42
|
+
For a hosted run with no Docker/LLM key, or when the user wants a shareable dashboard and an auditor-ready PDF, use the cloud path in **managed-pentesting-with-strix** instead — same engine, same findings.
|
|
43
|
+
|
|
44
|
+
## 3. Review results
|
|
45
|
+
|
|
46
|
+
Read `strix_runs/<run>/penetration_test_report.md` first, then per-finding files in `vulnerabilities/`. Each contains the PoC — re-run it yourself to confirm before reporting to the user.
|
|
47
|
+
|
|
48
|
+
Exit codes: `0` no validated vulns in what was analyzed, `2` vulnerabilities found, `1` fatal error. A `0` is not proof of full coverage — if the budget or turn cap was hit the scan wraps up early, so check `run.json` status and cost against `--max-budget` before calling the app clean.
|
|
49
|
+
|
|
50
|
+
## 4. Fix and verify
|
|
51
|
+
|
|
52
|
+
Hand findings to the **fix-security-vulnerabilities-with-strix** skill: patch the root cause, then re-run Strix against the same target to prove the exploit no longer works. Re-testing is the only reliable confirmation a fix landed.
|
|
53
|
+
|
|
54
|
+
To keep the app tested on every change rather than once, wire Strix into CI with **ci-security-scanning-with-strix**.
|