pixi-policy
Write down what your pixi environments are allowed to contain, and check it everywhere pixi runs.
One file, pixi-policy.toml, committed beside pixi.toml and pixi.lock; one command, pixi policy, that reports
every package, source, license or manifest setting the policy does not allow, with the reason and a fix hint, and
exits non-zero so CI can stop the merge.
pixi policy init # write a policy the workspace passes today
pixi policy # check it (the same as `pixi policy check`)
pixi policy explain # every rule; `pixi policy explain <RULE>` for one, with its keys and defaults
It reads three files and nothing else: no server, no database, no network. Every check runs offline.
What it checks
| Family | Checks that |
|---|---|
sources |
conda packages come only from allowed channels, PyPI packages only from allowed indexes, and nothing from git, a direct URL or a local path unless allowed |
bans |
no banned package, version range or build is in any environment |
licenses |
every package can be used under the licenses the policy allows (SPDX allow, review and deny lists) |
manifest |
pixi.toml gives no * specs, pins Python to a minor version and lists the required platforms |
lock |
pixi.lock exists, locks every environment for every platform, and still satisfies the manifest |
waivers |
every exception has a reason and an end date, and still matches something |
# pixi-policy.toml
[sources]
allowed-channels = ["conda-forge"]
allowed-indexes = ["https://pypi.org/simple"]
[bans]
deny = [
{ name = "pycrypto", reason = "unmaintained", use-instead = "pycryptodome" },
{ name = "openssl", version = "<3", reason = "EOL" },
]
[licenses]
deny = ["GPL-3.0-*", "AGPL-*"]
[manifest]
required-platforms = ["linux-64", "osx-arm64", "win-64"]
[lock]
[[waivers]]
rule = "licenses.deny"
package = "readline"
reason = "dev only; LEGAL-1234"
expires = 2027-03-31
That policy, checked against one of the repository's example workspaces (an excerpt):
error[licenses.deny] ld_impl_linux-64 2.46.1: license GPL-3.0-only cannot be satisfied without a denied license
--> pixi.lock: environment "default", linux-64
= help: replace the package, or take the license off [licenses] deny
error[manifest.wildcard-spec] gh: is given as "*" in [dependencies]
--> pixi.toml:11
= help: give it a version range, for example the one `pixi add` writes
waived[licenses.deny] readline 8.3: license GPL-3.0-only cannot be satisfied without a denied license (pixi.lock: environment "default", linux-64); waiver: dev only; LEGAL-1234, expires 2027-03-31
4 errors, 0 warnings, 2 waived in 45 packages across 2 environment-platform pairs
Install
uv tool install pixi-policy # or: pipx install pixi-policy, pip install pixi-policy
The wheel carries only the pixi-policy binary, for Linux (x86-64 and aarch64, glibc and musl), macOS and Windows.
pixi runs any pixi-<name> executable on PATH as pixi <name>. Release archives with build provenance are on
GitHub Releases.
In CI
The exit code is the verdict: 0 nothing failed, 1 a finding is an error, 2 an input could not be read. --format json
writes a report with a published schema, and --format sarif one for GitHub code scanning:
- run: pixi run policy --format sarif --output policy.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: policy.sarif
Documentation
https://aesir-oss.github.io/pixi-policy/: getting started, development and CI, every rule, every key, with its values and default, waivers and output formats.
From Aesir Open Source Solutions, beside pixi-sbom. Apache-2.0. A community project, not affiliated with prefix.dev.
Metadata
Release files for pixi-policy 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pixi_policy-0.1.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| pixi_policy-0.1.1-py3-none-musllinux_1_2_x86_64.whl | Python 3 | none | Linux musl 1.2+ x86-64 | Details |
| pixi_policy-0.1.1-py3-none-musllinux_1_2_aarch64.whl | Python 3 | none | Linux musl 1.2+ ARM64 | Details |
| pixi_policy-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| pixi_policy-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| pixi_policy-0.1.1-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| pixi_policy-0.1.1-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 16.4 MB
Release files / pixi_policy-0.1.1-py3-none-win_amd64.whl
| Download URL | pixi_policy-0.1.1-py3-none-win_amd64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
34f90600443bad8408bf52a47e0201d059fbc2f5e2cfb292e37239b6daae65e1
|
|
BLAKE2b-256 checksum How to use checksums |
fe8ef91498aae171f12a856ef889c94272467feee914debf02b5bc1d98a8d5fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / pixi_policy-0.1.1-py3-none-musllinux_1_2_x86_64.whl
| Download URL | pixi_policy-0.1.1-py3-none-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Linux musl 1.2+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
f5a6bebb41a1387efcc20f90fec0aab110a1d59034e567c2758788587afeb06b
|
|
BLAKE2b-256 checksum How to use checksums |
3e1bffa88454724c25826c85cf649f5fe291ccdcb5d4adc377e0873415946e78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / pixi_policy-0.1.1-py3-none-musllinux_1_2_aarch64.whl
| Download URL | pixi_policy-0.1.1-py3-none-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Linux musl 1.2+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
933b3431852e888fdc3d516f2943e57e9a41233f4334f46fc1add178aba35c9c
|
|
BLAKE2b-256 checksum How to use checksums |
c701162690e3aba2ff26cf0658f7d1f1409bb3f6c05699a670e7effc27bce287
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / pixi_policy-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pixi_policy-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
13d74e03e74e5ed30b48af6c242d4e6f025955bd22170d2ca57ff7be934a74ac
|
|
BLAKE2b-256 checksum How to use checksums |
f5394d52ea5775991f00a91ee9d01f3a0a5968d57cea580f15793f0c0742cb0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / pixi_policy-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | pixi_policy-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
42ea0246716fdffff4f29d57531f0466feccbde5748a42ab4ebb43572108abcc
|
|
BLAKE2b-256 checksum How to use checksums |
09d962e5ce2a5d66deac7614397c159b7a6e0afb2dbf41e81097a27d2ed4e006
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / pixi_policy-0.1.1-py3-none-macosx_11_0_arm64.whl
| Download URL | pixi_policy-0.1.1-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7fe1dba5782d13a1da140ac91a4c1018ea9ab770a700bb27f7f4a5f91a685101
|
|
BLAKE2b-256 checksum How to use checksums |
d2a294a140e8be107bb5eb2707968ba40674d98c415f2f3995adba8b78e2d541
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency logRelease files / pixi_policy-0.1.1-py3-none-macosx_10_12_x86_64.whl
| Download URL | pixi_policy-0.1.1-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
cdd9a2d276717a8536c80a4b4f3567ac3d58edde43427e7e1488f278328fdb3e
|
|
BLAKE2b-256 checksum How to use checksums |
45b23299e488c321b981af57074ccec30484537c69170a01a5ab0427e33127a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 12, 2026.
Transparency log