This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+12 more
Affected surfaces
Summary
AI summaryMCP http_request and run_probe now automatically inherit engagement authentication.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
`ptai start --auth-profile <name>` now accepts bearer-flow profiles (bearer_static, bearer_dynamic). `ptai start --auth-profile <name>` now accepts bearer-flow profiles (bearer_static, bearer_dynamic). Source: llm_adapter@2026-05-25 Confidence: low |
— |
| Feature | Medium |
`ptai reap --older-than <duration>` supports `--force` and `--dry-run` flags for bulk engagement deletion. `ptai reap --older-than <duration>` supports `--force` and `--dry-run` flags for bulk engagement deletion. Source: llm_adapter@2026-05-25 Confidence: low |
— |
| Bugfix | Medium |
MCP `http_request` and `run_probe` now inherit engagement authentication automatically. MCP `http_request` and `run_probe` now inherit engagement authentication automatically. Source: llm_adapter@2026-05-25 Confidence: high |
— |
| Bugfix | Medium |
Reverted regression in scorer's title-match branch, restoring Juice Shop catch rate from ~32% to ~73%. Reverted regression in scorer's title-match branch, restoring Juice Shop catch rate from ~32% to ~73%. Source: llm_adapter@2026-05-25 Confidence: high |
— |
Full changelog
Pre-launch patch + small feature batch. The headline is the MCP-side auth-cache fix that makes http_request and run_probe inherit the engagement's authentication automatically, so an LLM driving ptai over MCP doesn't have to re-thread auth_profile on every tool call.
Fixed
- MCP
http_request/run_probeinherit engagement auth automatically (mcp_server/auth_cache.py,mcp_server/server.py). A process-local cache keyed byengagement_idstores the auth captured duringstart_engagement; subsequent tool calls without an explicitauth_profileargument resolve from the cache. Validated end-to-end against Juice Shop v19.2.1:start_engagement(auth_profile="juice_shop")populates the cache, thenhttp_request(engagement_id=..., url="/rest/basket/1")returns the admin basket with no further auth wiring.
Added
ptai start --auth-profile <name>accepts bearer-flow profiles (cli/main.py). Previously the CLI rejected anything other thanform_post; nowbearer_staticandbearer_dynamicboth work and propagate the token through every specialist agent.ptai reap --older-than <duration> [--force] [--dry-run](cli/main.py,engine/findings_db.py:FindingsDB.reap_engagements). Bulk-delete old engagements with cascade safety — skips engagements that still have findings unless--forceis passed.
Internal
- Post-publish PyPI smoke test (
.github/workflows/release.yml). Newsmokejob waits for the wheel to propagate, installs it in a fresh venv, verifiesptai --versionmatches the tag, imports key modules, and runs an MCPinitializehandshake. Catches missing-file wheels and broken entry points before users hit them. - Test hygiene: silenced async-mock warnings in file-upload tests, registered the
pytest-timeoutmarker. - Reverted a brief regression in the scorer's title-match branch (
73e0bd4reverts25d041c) that dropped the Juice Shop catch rate ~73% → ~32% on realistic data. Unit tests passed; the realistic benchmark caught it. Adding a corpus-benchmark CI gate is on deck.
Install
pip install ptai==0.15.2
PyPI: https://pypi.org/project/ptai/0.15.2/
Full notes in CHANGELOG.md.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About pentest-ai
Offensive-security MCP server with 205 wrapped tools, 17 specialist agents, and 60 SPA-aware probes for OWASP Top 10. CLI + MCP, BYO LLM. No API key needed on MCP path.
Related context
Related tools
Beta — feedback welcome: [email protected]