Repository navigation
Releases: ratomirjovanovic/pandaward
Release list
Pandaward v0.2.1
What's Changed
- Update the packages to 0.2.0 by @ratomirjovanovic in #109
- Stop the file walk once its deadline has passed by @ratomirjovanovic in #113
- Ship an MCPB bundle and server.json for the MCP Registry by @ratomirjovanovic in #111
- Publish a plugin-directory branch without binaries by @ratomirjovanovic in #115
- Release 0.2.1 by @ratomirjovanovic in #116
Full Changelog: v0.2.0...v0.2.1
Pandaward 0.2.0
PenSec is now Pandaward
This release renames the project. Nothing about how it works changes; your results carry over.
- The first
pandawardcommand in a project moves.pensec/to.pandaward/with the ledger, evidence, reports, config and scope manifest. - Approvals stay valid: the approval key is taken over from the old
pensecfolder in your user config directory. PENSEC_*environment variables are still read when thePANDAWARD_*ones are not set.- Existing
PSEC-finding IDs keep working; new findings getPW-IDs. - The repository moved to
ratomirjovanovic/pandaward; GitHub redirects the old URL. The website is now https://ratomirjovanovic.github.io/pandaward/.
Switch once
Claude Code:
/plugin uninstall pensec-windows@pensec # or pensec@pensec
/plugin marketplace remove pensec
/plugin marketplace add ratomirjovanovic/pandaward
/plugin install pandaward-windows@pandaward # or pandaward@pandaward on macOS and Linux
Then restart Claude Code. Skills are now /pandaward:* and MCP tools pandaward_*.
CLI: brew uninstall pensec && brew untap ratomirjovanovic/pensec, then brew tap ratomirjovanovic/pandaward https://github.com/ratomirjovanovic/pandaward && brew install ratomirjovanovic/pandaward/pandaward. On Windows: scoop uninstall pensec; scoop bucket rm pensec, then scoop bucket add pandaward https://github.com/ratomirjovanovic/pandaward; scoop install pandaward/pandaward.
GitHub Actions: change uses: ratomirjovanovic/pensec@... to uses: ratomirjovanovic/pandaward@... and pin the new SHA. Release assets are now named pandaward-<os>-<arch>.
The Homebrew and Scoop manifests for 0.2.0 follow in the next commit to main.
What's Changed
- Update the packages to 0.1.6 by @ratomirjovanovic in #106
- Rename the project to Pandaward and release 0.2.0 by @ratomirjovanovic in #108
Full Changelog: v0.1.6...v0.2.0
PenSec v0.1.6
Upgrade notes
- Update the
pensecCLI together with the plugin. 0.1.6 addsruntime.android_packageandruntime.ios_bundle_idto.pensec/config.yaml; older binaries reject unknown keys. Existing files keep working. - New configs list
apktoolinscan.adapters. To use it in an existing project, addapktoolto that list. - The catalog is now
2026.10-m4with four new controls (K-004, K-005, L-003, L-004), so the first scan after the update does not carry results over from older assessments.
Highlights
- Mobile source checks: credentials in plain SharedPreferences and world-readable storage (K-004),
get-task-allowoutside debug entitlements (L-003),kSecAttrAccessibleAlwaysand credentials in UserDefaults (L-004) (#14). - Optional apktool adapter:
.apkfiles in the project are decoded (resources only, the app's code is never run) and their manifest goes through the Android checks (K-005) (#14). pensec test --profile local-runtime: reads the configured test build's storage on an Android emulator (K-003) or in an iOS simulator on macOS (L-002) and reports credential-like keys by name, never their values. Real devices are refused; anything missing isBLOCKEDwith the reason (#14).- The hostile-repository self-test runs in CI on every OS and before every release, and a new case checks that scanner output claiming confirmation stays a hypothesis (#15).
- Android sources under
com/exampleinsrc/main/are no longer skipped as sample code (#101).
What's Changed
- Replay the hands-free Claude Code flow in the demo by @ratomirjovanovic in #97
- Update the packages to 0.1.5 by @ratomirjovanovic in #98
- Make the hostile-repository self-test release-blocking by @ratomirjovanovic in #99
- Add mobile storage, entitlements and APK checks by @ratomirjovanovic in #100
- Analyze sources under com/example in main source sets by @ratomirjovanovic in #102
- Add the local-runtime profile for emulator and simulator storage by @ratomirjovanovic in #104
- Release 0.1.6 by @ratomirjovanovic in #105
Full Changelog: v0.1.5...v0.1.6
PenSec v0.1.5
Upgrade notes
- Update the
pensecCLI together with the plugin. 0.1.5 addsruntime.zap_pathto.pensec/config.yamlandzap,identitiesandauthorization_checksto.pensec/scope.yaml; older binaries reject unknown keys. Existing files keep working. - Claude Code does not update third-party marketplaces unless auto-update is on:
/plugin, Marketplaces,pensec, Enable auto-update. Or runclaude plugin marketplace update pensecandclaude plugin update pensec-windows@pensec(pensec@pensecon macOS and Linux), then restart. - On Windows keep only
pensec-windows@pensec. Ifpensec@pensecis also installed, the MCP server does not connect; see Troubleshooting.
Highlights
pensec test --profile staging-activeruns your installed ZAP (Java 17+) against approved staging or local targets: spider and passive scan for M-001, and the active scan for D-005 when the manifest setszap.active_scan: true. Every ZAP request, including HTTPS, goes through the PenSec scope guard: origins, excluded paths, methods, request budget, rate limit and address checks, and a stop after three consecutive 429 or 5xx answers. A failed run isERROR, a cut-short runINCONCLUSIVE(#13).- Authorization checks with test identities: list identities (credentials come from environment variables and are never stored) and read-only checks in the scope manifest. Each check is sent as every identity and anonymously; object checks decide C-001 (BOLA), function checks C-002 and revoked identities B-004 (#12).
pensec doctorshows whether ZAP is installed.- Documentation for updating and uninstalling, with every file PenSec creates (#92).
What's Changed
- Update the packages to 0.1.4 by @ratomirjovanovic in #90
- Add the ZAP adapter and the staging-active profile by @ratomirjovanovic in #91
- Add authorization checks with test identities to staging-active by @ratomirjovanovic in #94
- Document updating and uninstalling by @ratomirjovanovic in #93
- Release 0.1.5 by @ratomirjovanovic in #95
Full Changelog: v0.1.4...v0.1.5
PenSec v0.1.4
Upgrade notes
- Update the
pensecCLI (Homebrew, Scoop, release binary orgo install) together with the plugin.pensec initfrom 0.1.4 writes a newhookssection to.pensec/config.yaml, and older binaries reject unknown config keys. Existing configs without the section keep working and get the defaulthooks.auto_retest: true. - The Claude Code plugin now retests automatically after Claude edits code. Set
hooks.auto_retest: falsein.pensec/config.yamlto turn that off.
Highlights
- Hands-free plugin: ask Claude to check the project's security or run
/pensec:start. Claude runs the whole assessment, asks one question at the end and carries out what you choose, with a retest after every fix (#80). - Automatic retest: a Stop hook retests the files edited in a turn, within 40 seconds, and hands new or reopened findings back to Claude. A clean retest stays silent (#82).
pensec findings apply --file decisions.json --by <name>records many triage decisions in one transaction, and the plugin shows the whole list in one confirmation prompt (#83).- The website shows the install commands for the visitor's platform (#87).
What's Changed
- Update the packages to 0.1.3 by @ratomirjovanovic in #74
- Document the pre-commit hooks and catch the wiki up with 0.1.3 by @ratomirjovanovic in #75
- Generate winget manifests with schema 1.12.0 by @ratomirjovanovic in #77
- Show packages and the guided assessment on the website by @ratomirjovanovic in #79
- Make the plugin hands-free by @ratomirjovanovic in #81
- Retest automatically after Claude edits code by @ratomirjovanovic in #85
- Apply triage decisions in one confirmed command by @ratomirjovanovic in #86
- Show the install commands for the visitor's platform by @ratomirjovanovic in #88
- Release 0.1.4 by @ratomirjovanovic in #89
Full Changelog: v0.1.3...v0.1.4
PenSec v0.1.3
What's Changed
- Clone plugin sources over HTTPS by @ratomirjovanovic in #46
- Report the module version for go install builds by @ratomirjovanovic in #49
- Update install instructions in README, website and VERIFYING.md by @ratomirjovanovic in #50
- Run OpenSSF Scorecard and show its badge by @ratomirjovanovic in #63
- Add pre-commit hooks by @ratomirjovanovic in #60
- Add Homebrew, Scoop and winget packages by @ratomirjovanovic in #62
- Add a GitHub Action by @ratomirjovanovic in #59
- Validate optional scanner adapters against real tool output by @ratomirjovanovic in #67
- Measure built-in rules on the OWASP Benchmark by @ratomirjovanovic in #64
- Add an animated terminal demo generated from a real session by @ratomirjovanovic in #65
- Collect false positive and false negative reports and prioritize rule fixes by @ratomirjovanovic in #68
- Import findings from SARIF files by @ratomirjovanovic in #61
- Add a guided assessment: pensec assess and /pensec:start by @ratomirjovanovic in #70
- Release 0.1.3 by @ratomirjovanovic in #73
Full Changelog: v0.1.2...v0.1.3
PenSec v0.1.2
What's Changed
- Freeze schemas and pin them with a golden test by @ratomirjovanovic in #41
- Declare the plugin MCP server inline and keep plugin branches byte-exact by @ratomirjovanovic in #44
- Release 0.1.2 by @ratomirjovanovic in #42
Full Changelog: v0.1.1...v0.1.2
PenSec v0.1.1
What's Changed
- Deterministic SBOM serial number for the release attestation by @ratomirjovanovic in #39
- Release 0.1.1 by @ratomirjovanovic in #40
Full Changelog: v0.1.0...v0.1.1