Secure Install¶
WolfXL is distributed through the authenticated package index at
https://packages.wolfxl.com/simple/. Each paid purchase receives a unique,
revocable credential.
One authenticated index¶
The private index contains WolfXL and its required defusedxml dependency. Use
--index-url, not --extra-index-url. A second public index can introduce
dependency confusion when private and public package names overlap.
Store credentials outside the command line.
POSIX systems¶
Create ~/.netrc with mode 0600:
Then run in bash, zsh, or another POSIX shell:
Windows¶
Create %USERPROFILE%\_netrc with access limited to the current user:
Then run in PowerShell:
Do not put the credential in the URL. Authenticated URLs leak through shell history, process lists, CI logs, build output, tickets, and screenshots.
Lockfiles and hashes¶
Resolve and install through the same approved index. Keep credentials in the credential file or secret manager, not in a committed lockfile.
POSIX shell:
python -m pip download wolfxl==<approved-version> --only-binary=:all: --dest ./wheelhouse --index-url https://packages.wolfxl.com/simple/
python -m pip hash ./wheelhouse/wolfxl-*.whl
PowerShell:
py -m pip download wolfxl==<approved-version> --only-binary=:all: --dest .\wheelhouse --index-url https://packages.wolfxl.com/simple/
py -m pip hash .\wheelhouse\wolfxl-*.whl
Compare the downloaded hash with the current release-artifact evidence before updating a lockfile. Do not reuse a hash from another Python ABI, operating system, architecture, source commit, or build.
CI and container builds¶
- Store the entitlement in the CI or container platform's secret manager.
- Materialize
.netrcor_netrconly for the install step, restrict file permissions, then remove it from the ephemeral runner. - Never pass a token as a Docker
ARG, bake it into an image layer, echo it, or print a resolved authenticated URL. - Use BuildKit secret mounts for Docker builds. The secret file should be read by the package client without interpolating its value into the Dockerfile command.
- Commit lockfiles and expected artifact hashes. Never commit credential files.
Revocation and incident handling¶
Issue one credential per paid purchase. The commerce ledger stores its opaque username and secret digest, never the plaintext secret.
Revoke or rotate when:
- access ends or an employee is offboarded;
- a token appears in logs, source control, tickets, chat, screenshots, shell history, or an image layer;
- provider access policy changes; or
- routine credential rotation is due.
Treat a disclosed token as compromised. Revoke it before cleaning logs or Git history. Verify the revoked credential can no longer download, then issue a new credential through a separate secure channel.
Operators issue, inspect, and revoke credentials through the bundled production
purchase CLI. See commerce/fulfillment-runbook.md for the confirmation gates
and exact commands.
Audit boundary¶
pip-audit covers known public package advisories. WolfXL security reports and
support requests use the private support channel supplied with the purchase;
credentials must not be included in reports.