Pentest is inline’s autonomous red team. AI agents attack a repository’s own source code inside an isolated sandbox, prove exploitability with a non-destructive proof-of-concept, and surface only findings they could actually demonstrate. It’s the offensive complement to Sentinel’s defensive scanning: where Sentinel asks “are we exposed to a known CVE?”, Pentest asks “can I break this code myself?”
It’s an opt-in per-repo module. Every engagement runs against code the operator owns, in a sandbox, under enforced safety rules.
The discipline: prove, don’t guess. One proven Critical beats ten speculative Lows. Non-destructive proofs only. Precision over volume.
Enumerate — a fast-model agent with read-only tools maps the attack surface: the stack, entry points, sinks, and auth model. This map is shared with every finder.
Find — one agent per enabled attack class, each focused exclusively on its class, tracing input from entry point to sink and returning candidate vulnerabilities.
Validate — candidates are ranked by severity then confidence, and the strongest go to a frontier-model agent with a screened command tool. It attempts a real, non-destructive PoC (it may install deps and start the app) and returns a verdict: validated or not, with the PoC, evidence, revised severity, and remediation.
Report — a deterministic step (no model) persists findings, computes surfaced vs. suppressed, and emails.
The safety guarantee is not a prompt request — it’s a screened shell. The validation agent’s command tool passes every command through a denylist that blocks destructive or exfiltration operations before they run: recursive rm, disk wipes, shutdown/reboot, fork bombs, curl | sh, reverse shells, raw device writes, git push, firewall changes, and more. Blocked commands return an error the model adapts to — they never execute, and every command is logged to the run’s audit timeline. There’s no network egress tooling by design.
Additional guardrails: a per-run cost cap, validation count and time budgets, and safe mode locked on in v1.
Severity runs critical / high / medium / low / info. A finding surfaces only if it was validated and meets the severity floor — everything else is stored with an honest suppress reason (unproven: … or below severity floor), never silently dropped. Candidates the budget never reached are stored unproven too. Findings dedup by a (category, file, sink) fingerprint, so re-runs update rather than duplicate.
Status: Pentest is inline’s newest module. Config for routing validated findings into the auto-fix pipeline exists but that wiring is not yet active — findings are surfaced and shared today; automated remediation is on the roadmap.