v1.8.1
Upgrade
If you already have Pensar installed, upgrade to the latest version:
pensar upgradeFresh Install
macOS / Linux (Quick Install)
curl -fsSL https://pensarai.com/install.sh | bashHomebrew
brew tap pensarai/tap
brew install apexnpm
npm install -g @pensar/apexWhat's Changed
- fix(persistentShell): serialize execute() with FIFO mutex (#645) by @kylejryan in #663
- fix: add stream idle timeout with automatic resume for stalled responses by @joshkotrous in #698
- Fix: Prevent 'a' key from triggering auto-approve when typing in redirect input by @KeremP in #691
- fix(shell): salvage partial stdout from disk on execute_command kill paths (#644) by @kylejryan in #665
- fix(ai): pause stream idle timeout while tools are executing by @joshkotrous in #710
- fix(eventBus): forward trace-record across attachChild boundary (#707) by @kylejryan in #712
- fix(operator): stop leaking internal approval IDs into LoadingIndicator (#708) by @kylejryan in #713
- feat(whitebox-recon): integrate @pensar/surface for deterministic enumeration by @jorgeraad in #664
- fix(ai): close 'prompt is too long' bug class structurally by @kylejryan in #721
- ci: integration-ci to bun (unblock apex PRs after console migration) by @jorgeraad in #729
- Remove [operator] badge from session titles in sessions dialog by @jorgeraad in #703
- fix: add right padding to sessions dialog when no scrollbar by @jorgeraad in #704
- fix(offsec-agent): wrap consume() stream loop in try/finally to dispose shell on error by @jorgeraad in #715
- fix(operator): always hydrate plan content on session resume by @jorgeraad in #716
- feat: dead-code CI gate + module-barrel convention by @jorgeraad in #725
- refactor(tooling): replace ESLint + Prettier with Biome v2 by @kylejryan in #720
- feat(models): add GPT-5.5 and sort OpenAI models newest-first by @kylejryan in #733
- feat(threat-model): classify by functional role before enumerating vectors by @joshkotrous in #739
- refactor: tighten Knip CI to catch unused exports, types, and duplicates by @jorgeraad in #730
- Enforce minimum release age on dependencies via bunfig by @jorgeraad in #756
- feat(eventBus): track parent/child relationships across nested subagents by @jorgeraad in #740
- feat(pentest): orchestrator role + spawn_pentest_agent tool by @joshkotrous in #774
- refactor(spawn_pentest_agent): clone-and-seed worker browser sessions (auth-shared, state-isolated) by @joshkotrous in #777
- feat(api/cli): expand attack-surface management — apps, endpoints, search, pagination by @joshkotrous in #783
- docs(agents): working principles, closing-the-loop, and team-skills scaffold by @jorgeraad in #754
- fix: allow repo-root surface scan for single-app repos by @jorgeraad in #742
- Add agentic finding judge by @Yuvanesh-ux in #745
- feat(operator): Ctrl+I screenshot viewer with kitty graphics modal by @KeremP in #711
- feat(whitebox): add ambient whitebox assessment capability by @kylejryan in #773
- Add GPT 5.5 OpenAI support by @Yuvanesh-ux in #791
- Enable Biome noImplicitAnyLet by @jorgeraad in #793
- Enable Biome noAssignInExpressions by @jorgeraad in #794
- Fix: Extract message field from tool results for friendly status display by @Yuvanesh-ux in #803
- Calibrate finding judge against low-signal findings by @Yuvanesh-ux in #806
- feat: robust custom HTTP header support across CLI, operator, and agent tools by @kylejryan in #790
Full Changelog: v1.8.0...v1.8.1