Skip to content

Installation

Ratomir Jovanovic edited this page Oct 29, 2026 · 13 revisions

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.

Claude Code plugin

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 Linux

Install only one of the two plugins. Both are called pandaward inside Claude Code, and the macOS and Linux plugin cannot start on Windows.

Updating the plugin

Claude Code updates third-party marketplaces only when you turn that on. Pick one:

  • Automatic (recommended). Run /plugin, open Marketplaces, select pandaward and 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 pandaward
    

    and 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

Removing the plugin

/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.

Package managers

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/pandaward

Update 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.

Prebuilt binary

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.

Linux and macOS

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

Windows (PowerShell)

$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 version

Move 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.

go install

With Go 1.26 or later:

go install github.com/ratomirjovanovic/pandaward/cmd/pandaward@latest
pandaward version

The binary lands in $(go env GOPATH)/bin; make sure that directory is on your PATH.

Build from source

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 ..

Updating

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.

Uninstalling

1. Remove PandaWard itself

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

2. Remove project data (optional)

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 Linux
Remove-Item -Recurse -Force .pandaward    # Windows

If 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.

3. Remove the approval key (optional)

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.

4. Remove integrations you added (optional)

  • pre-commit: delete the ratomirjovanovic/pandaward entry from .pre-commit-config.yaml; pre-commit clean removes the cached hook repository.
  • GitHub Actions: delete the ratomirjovanovic/pandaward step 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.

Optional scanners

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.

Requirements

  • 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 install or source builds.

Clone this wiki locally