Skip to content

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 28 May 22:27
· 26 commits to canary since this release

Upgrade

If you already have Pensar installed, upgrade to the latest version:

pensar upgrade

Fresh Install

macOS / Linux (Quick Install)

curl -fsSL https://pensarai.com/install.sh | bash

Homebrew

brew tap pensarai/tap
brew install apex

npm

npm install -g @pensar/apex

What'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