Repository navigation
Releases: Layrix-ai/LLLL
Release list
LLLL Guard 0.3.0: requires Node.js 22.12 or newer
LLLL Guard 0.3.0: requires Node.js 22.12 or newer
Breaking for some users: the minimum Node.js version is now 22.12. Node 20 reached end of life in April 2026, and commander 15 (the command-line library the package ships with) needs 22.12 or newer. If you are on Node 20, stay on 0.2.x or upgrade Node first. 0.2.x will not receive further fixes.
node --version # must be v22.12.0 or newer
npm install -g @layrix.ai/llll-guard@latest
llll-guard --version # 0.3.0What changed since 0.2.0
The package
enginesis>=22.12.0. Theguardlauncher checks major and minor (22.0 to 22.11 are refused) and says "Node.js 22.12 or newer was not found" when it finds none; in a git hook that is the same warn-first behaviour as before (LLLL_GUARD_STRICT=1stops the push).commander13 to 15 andminimatch10.2.5 to 10.2.6. No behaviour of the command line changes: the options and exit codes (0passed,1blocked,2could not run) are the same, and the whole test suite (712 tests, run against the real CLI and real git) passes on Node 22 and 24, Linux and macOS.- Development: vitest 5. CI now runs on Node 22 and 24.
The skill and the documents (the clone, not the npm package)
SKILL.mdis split: a 912-line core and five reference files it tells the model to read on demand (scan, guard and review modes, menus, output standards, observation storage). Same content; about half of what every/llllcall loads.- A pass over examples, sample audits and the checklist corrected factual errors and unsupported statements (for example the affected versions of CVE-2025-29927,
poetry audit,sk-versus Stripe key formats). Statements that depend on how a law applies are waiting for expert review. SECURITY.md(private vulnerability reporting is on),CONTRIBUTING.md, issue and pull request templates, Dependabot updates.- The fork monitor no longer fails the run or mentions a takedown when someone forks the repository; the licence is MIT.
Upgrading a project that has the hook installed
Nothing to reinstall. The hook runs the launcher, which finds a suitable Node. If your shell's default is Node 20, install Node 22.12 or newer (or set LLLL_NODE to one) before pushing; otherwise the hook warns that the push was not checked.
Known gaps
Legal and regulatory wording in the examples is awaiting expert review. Failing closed (stopping a push when Node or the engine is missing) becomes the default in 1.0.
LLLL Guard 0.2.0: one engine, no silent passes
LLLL Guard 0.2.0: one engine, no silent passes
Guard is now a single TypeScript engine (@layrix.ai/llll-guard, Node.js 20 or newer). The bash guard script is a small launcher that finds Node and the engine; it holds no rules. This release is a transition release: it is warn-first (see below), and 1.0 will fail closed.
What changed
The gate no longer passes when it could not look. Exit code 0 is a pass, 1 is a block, 2 means the guard could not run, and 2 is never a pass. Before: the bash script crashed or passed silently on macOS's bash 3.2, the release gate printed "Nothing to scan" and exited 0, and an unreadable policy or a git error could end in a pass.
Push gate
- The pushed range comes from git's pre-push input (new branches, tags, force-pushes, deletions, several refs), not from the current branch's upstream.
- Secrets: provider-format keys and private keys (including PKCS#8 and PGP) are never downgraded; values published on purpose (
NEXT_PUBLIC_*, env templates) are reported, not blocked, by comparing the value itself. Docs and env templates are scanned. - Overrides work: token-scoped to one finding on one version of one file, expiring (14 days by default), confirmed in a terminal, logged. HARD rules cannot be overridden.
- Changes to
llll.policy.json,.guardignoreorllll.whitelist.jsonraise PG-S011. The policy is read from the remote's default branch, so a push cannot switch the gate off for itself.
Release gate: reads the files npm pack would publish (with --ignore-scripts), every file, any encoding; inline source maps, internal files, secrets; a file it could not read is a finding (RG-S008).
Hook: works in git worktrees and with core.hooksPath; keeps your own pre-push hook and runs it after the guard; no network npx; uninstall-hook restores it. husky, overcommit and lefthook are not chained: the installer prints the line to add.
Installers: Claude Code links the skill files only; opencode and Codex installers can upgrade and --uninstall, never truncate your config, and back files up.
Skill: one folding rule (round(N/2)), the credential downgrade rule matches the engine, corrected scan patterns, allowed-tools narrowed to specific commands plus llll-guard push|release, and /llll guard runs the engine first.
Upgrading
npm install -g @layrix.ai/llll-guard # Node.js 20 or newer
cd your-project && llll-guard install-hookIf you installed the old bash hook, git pull in ~/.llll and run ~/.llll/guard doctor --fix; the old hook keeps working and tells you to reinstall it.
Warn-first. If Node or the engine cannot be found when you push, the hook warns loudly, writes .llll/logs/guard-not-run.log and lets the push through. Set LLLL_GUARD_STRICT=1 to stop the push instead. Failing closed becomes the default in 1.0.
Known gaps
Legal and factual corrections in the examples and sample audits are pending an expert review; SKILL.md is still one large file.