Repository navigation
Installation
PandaWard is one self-contained binary. Pick the way that fits you:
| You want | Use |
|---|---|
| PandaWard inside Claude Code (skills, agents, hooks, MCP) | Claude Code plugin |
| A command-line tool | Homebrew or Scoop, a prebuilt binary or go install |
| PandaWard in CI or before each commit | CI Integration |
| To change PandaWard itself | Build from source |
The current version is 0.2.6. All releases are on the releases page.
The plugin ships prebuilt, checksum-verified binaries. You do not need Go or any other tool.
1. Add the marketplace (once per machine). In Claude Code, type:
/plugin marketplace add ratomirjovanovic/pandaward
2. Install the plugin for your system:
/plugin install pandaward@pandaward # macOS and Linux (amd64, arm64)
/plugin install pandaward-windows@pandaward # Windows (amd64)
3. Restart Claude Code (/exit, then start claude again).
4. Check it. /plugin lists the plugin as enabled, and /mcp shows plugin:pandaward:pandaward as connected. Then open a project and ask Claude to check its security, or run /pandaward:start.
The same steps work from a terminal:
claude plugin marketplace add ratomirjovanovic/pandaward
claude plugin install pandaward-windows@pandaward # or pandaward@pandaward on macOS and LinuxInstall only one of the two plugins. Both are called pandaward inside Claude Code, and the macOS and Linux plugin cannot start on Windows.
Claude Code updates third-party marketplaces only when you turn that on. Pick one:
-
Automatic (recommended). Run
/plugin, open Marketplaces, selectpandawardand choose Enable auto-update. Claude Code then refreshes the marketplace and updates the plugin when it starts. -
By hand, whenever a new version is out:
/plugin marketplace update pandawardand from a terminal, to update the installed plugin to the version the marketplace now lists:
claude plugin update pandaward-windows@pandaward # or pandaward@pandaward on macOS and Linux
Restart Claude Code after updating (/exit, then claude). /plugin shows the installed version and /mcp should list plugin:pandaward:pandaward as connected. Existing .pandaward/ ledgers are migrated automatically on first use.
If /plugin still shows an old version after that, reinstall:
/plugin uninstall pandaward-windows@pandaward
/plugin install pandaward-windows@pandaward
/plugin uninstall pandaward-windows@pandaward # or pandaward@pandaward
/plugin marketplace remove pandaward
Then restart Claude Code. This removes the skills, agents, hooks, MCP server and the binaries that came with the plugin. Project results stay; see Uninstalling for those.
If any step fails, see Troubleshooting.
The PandaWard repository is also a Homebrew tap and a Scoop bucket. Both check the download against the SHA-256 in the manifest.
# macOS and Linux
brew tap ratomirjovanovic/pandaward https://github.com/ratomirjovanovic/pandaward
brew install ratomirjovanovic/pandaward/pandaward# Windows
scoop bucket add pandaward https://github.com/ratomirjovanovic/pandaward
scoop install pandaward/pandawardUpdate with brew upgrade pandaward or scoop update pandaward. Once the winget package is published, winget install RatomirJovanovic.PandaWard and winget upgrade RatomirJovanovic.PandaWard work as well.
Each release has binaries for Linux and macOS (amd64 and arm64) and Windows (amd64), plus SHA256SUMS. Release links name the version, because 0.x releases are marked as prereleases and releases/latest does not point to them.
v=v0.2.6
os=linux # or darwin
arch=amd64 # or arm64
curl -fLO https://github.com/ratomirjovanovic/pandaward/releases/download/$v/pandaward-$os-$arch
curl -fLO https://github.com/ratomirjovanovic/pandaward/releases/download/$v/SHA256SUMS
grep " pandaward-$os-$arch\$" SHA256SUMS | sha256sum -c # macOS: ... | shasum -a 256 -c; must print OK
chmod +x pandaward-$os-$arch
sudo mv pandaward-$os-$arch /usr/local/bin/pandaward
pandaward version$v = "v0.2.6"
Invoke-WebRequest https://github.com/ratomirjovanovic/pandaward/releases/download/$v/pandaward-windows-amd64.exe -OutFile pandaward.exe
Invoke-WebRequest https://github.com/ratomirjovanovic/pandaward/releases/download/$v/SHA256SUMS -OutFile SHA256SUMS
(Get-FileHash pandaward.exe).Hash.ToLower()
Select-String pandaward-windows-amd64.exe SHA256SUMS # the two hashes must match
.\pandaward.exe versionMove pandaward.exe to a folder on your PATH so you can run pandaward from any project.
Checksums, signed build provenance and the SBOM can be verified as described in Verifying Releases.
With Go 1.26 or later:
go install github.com/ratomirjovanovic/pandaward/cmd/pandaward@latest
pandaward versionThe binary lands in $(go env GOPATH)/bin; make sure that directory is on your PATH.
git clone https://github.com/ratomirjovanovic/pandaward
cd pandaward
go build -o bin/pandaward ./cmd/pandaward # Linux and macOS
go build -o bin/pandaward.exe ./cmd/pandaward # Windows
go test ./...To load a checkout as a plugin while developing, build the binary into bin/ as above and run claude --plugin-dir /path/to/pandaward. Validate plugin changes with claude plugin validate ..
| Installed with | Update |
|---|---|
| Claude Code plugin | auto-update, or /plugin marketplace update pandaward plus claude plugin update, see above
|
| Homebrew | brew update && brew upgrade pandaward |
| Scoop | scoop update; scoop update pandaward |
| winget | winget upgrade RatomirJovanovic.PandaWard |
| Release binary | download the new binary and SHA256SUMS, check them as above, replace the old file |
| go install | run the same go install ...@latest again |
| Source |
git pull, then build again |
pandaward version shows the installed version. The plugin and a separately installed CLI are independent: updating one does not update the other, and inside Claude Code the plugin's own binary is the one that runs.
| Installed with | Remove |
|---|---|
| Claude Code plugin |
/plugin uninstall pandaward-windows@pandaward (or pandaward@pandaward), then /plugin marketplace remove pandaward, then restart Claude Code |
| Homebrew |
brew uninstall pandaward, then brew untap ratomirjovanovic/pandaward
|
| Scoop |
scoop uninstall pandaward, then scoop bucket rm pandaward
|
| winget | winget uninstall RatomirJovanovic.PandaWard |
| Release binary | delete pandaward (for example /usr/local/bin/pandaward) or pandaward.exe from the folder on your PATH
|
| go install | delete pandaward from $(go env GOPATH)/bin
|
| Source | delete the checkout |
PandaWard keeps everything for a project in .pandaward/ at the project root:
| Path | Contents | Committed? |
|---|---|---|
.pandaward/config.yaml |
project settings | may be committed |
.pandaward/scope.yaml |
scope manifest for network tests | may be committed |
.pandaward/private/ |
ledger (state.db), evidence, raw tool output, disposable tool homes |
never (gitignored) |
.pandaward/reports/ |
HTML, Markdown, JSON, SARIF and CSV reports | never (gitignored) |
Delete the directory to remove all results for that project:
rm -rf .pandaward # macOS and LinuxRemove-Item -Recurse -Force .pandaward # WindowsIf config.yaml or scope.yaml were committed, remove them from the repository with git rm -r .pandaward instead. Keep a copy of the reports first if you still need them.
Scope approvals are bound to a per-user key outside every project. Deleting it invalidates every approval on this machine:
| System | Path |
|---|---|
| Windows | %AppData%\pandaward\approval.key |
| macOS | ~/Library/Application Support/pandaward/approval.key |
| Linux |
$XDG_CONFIG_HOME/pandaward/approval.key, usually ~/.config/pandaward/approval.key
|
Delete the pandaward folder at that location. If you set PANDAWARD_CONFIG_DIR, the key is in that directory instead.
-
pre-commit: delete the
ratomirjovanovic/pandawardentry from.pre-commit-config.yaml;pre-commit cleanremoves the cached hook repository. -
GitHub Actions: delete the
ratomirjovanovic/pandawardstep from your workflows. Results already uploaded as SARIF stay in code scanning until you dismiss or delete them there. - Optional scanners: PandaWard never installs them, so they stay installed. Remove them with the package manager you used if you no longer need them.
PandaWard writes nothing else: no services, no scheduled tasks, no registry entries and no files outside the locations above. If you turned usage telemetry on, pandaward telemetry off deletes its unsent counters; see FAQ.
PandaWard works without any other tool. If gitleaks, semgrep, osv-scanner or trivy are installed, it uses them for extra controls. It never installs or downloads them. pandaward doctor shows what it found; see Optional Scanners.
- No runtime dependencies. git is optional and only used read-only to list tracked files and the current commit.
- Claude Code for the plugin.
- Go 1.26 or later only for
go installor source builds.
PandaWard is AGPL-3.0-only. Not a certification or signed penetration test. Report a vulnerability.
Getting started
Using
- CLI Reference
- Claude Code Plugin
- Findings Lifecycle
- Retest and Delta
- Coverage and Statuses
- Reports
- Evidence Bundles
- Network Testing
- Mobile Runtime
- Configuration
- CI Integration
Reference