Skip to main content
A pack is a set of policies published as a GitHub release. One command installs it, the release’s own checksums are verified before anything runs, and the digest is recorded so the pack cannot change under your machine afterwards.

Install the Failproof AI policies

That installs the set we publish, from the copy inside the package — so it needs no network and cannot fail behind a proxy. Take part of it:
failproofai pack list names every category the pack offers.

See what a pack contains, before installing it

Lists every policy the pack carries, grouped by category, marking which ones its author switches on by default and which are opt-in. It reads only the manifest — the entry artifact is never downloaded and never imported, so looking at a stranger’s pack cannot run a stranger’s code. The manifest is still checked against the release’s own SHA256SUMS, so what you are reading is what would install. failproofai pack list with no source lists the packs already installed here.

Install somebody else’s pack

Any of these work — paste whichever you have: Naming no tag installs the newest release and pins it, then tells you which tag it chose. What gets recorded always names exactly one release, so a reinstall cannot drift.

Take part of a pack

By default you get the pack’s own defaults — the policies its author marked safe to switch on unattended — not everything it contains.
--category and --policy combine as a union (--only is accepted as a synonym for --policy). Re-adding at a newer version keeps whatever you chose rather than switching the rest back on.

Manage what is on

A bare name means the builtin when one exists by that name. Name a pack’s copy explicitly when you need to:
If a pack ships a policy whose name is also an enabled builtin, the builtin runs and the pack’s copy is skipped — the same guard would otherwise be evaluated twice. Turn the builtin off to use the pack’s copy instead.

Where the Failproof AI policies come from

core reads the copy vendored in the npm package. The same set is published as a GitHub release, which is what you install if you want a specific version:

What integrity does and does not buy

SHA256SUMS ships in the same release as the artifact, so it is not a signature and proves nothing about who published it. What it does prove is that the bytes are the ones that release published — and because the digest is recorded when you add the pack and re-verified before every import, a pack cannot change under your machine afterwards. A repository that retags or replaces an asset stops loading instead of quietly running something else. At install time the pack is also imported once and checked against its own manifest. A pack whose artifact does not parse, or that registers something other than what it declares, is refused before anything is activated — rather than installing cleanly and failing on your next tool call.

When a pack will not load

A pack this machine was told to enforce and cannot run denies the events its missing policies covered, rather than allowing them silently. See Failure behavior. failproofai pack list names any pack in that state and exits non-zero.

Offline and mirrors

Publishing your own pack: see Publish a pack.