safe-chains v0.222.0
Released 2026-08-04 · View on GitHub
- feat *(regions)* A grant may name a credential store
- feat *(regions)* A third face, so a directory can be written into but not replaced
- fix *(pulumi)* Bound
configto its bare form, and remove thegetallowance - fix *(pathgate)* Let a gate carry both a handler and flags
- fix *(pulumi)* Support -C/--cwd with a locus gate, and repair a file I corrupted
- fix *(registry)* Remove 30 dead duplicate declarations found by the tree guard
- fix *(registry)* Clear the last 5 duplicate declarations; backlog now empty
- fix *(registry)* Assert a
candidatesub declares no nested subs - fix *(repo)* Restore COMMANDS.md and make its generation atomic
- fix *(regions)* A grant covers the subtree it names
- fix *(regions)* Freeze writes to the harness settings file safe-chains trusts
- fix *(nudge)* Tell the user how to allow a credential path
- fix *(regions)* Compare the naming test against the deepest secret node
- fix *(registry)* Stdin is not a workspace file for any executor
- fix *(engine)* A process substitution is never an executor
- fix *(nudge)* Stop advising a grant for a write that can never be granted
- fix *(engine)* An informational flag is not a write with a hidden target
- fix *(rmdir)* Gate the operand locus, like every other destroy
- fix *(regions)* Stop a grant relocating the trust root
- fix *(regions)* A home-anchored node must protect the absolute spelling too
- fix *(engine)* Three defects in the rebind face, found reviewing it
- fix *(cli)* Default --root to --cwd, as the hook already does
- fix *(regions)* A freeze must survive a raised level, not just a grant
- fix *(targets)* Claude permission files are trust for Claude only
- fix *(pathgate)* Hand a colon-bearing value to the executor gate
- fix *(engine)* A URL is never an executor
- fix *(pathgate)* Judge a declared flag value instead of pre-filtering it
- fix *(pathgate)* Drop the positional pre-filter too, and delete it
- fix *(fuzz)* Silence the config diagnostic under cargo fuzz
- fix *(cli)* The CLI is the Claude persona, so it honors Claude grants
- fix *(cli)* Decide as the hook decides, coverage included
- other *(copy)* Write the shipped copy in sentences, not dashes
- other *(regions)* Canonicalize at the choke point, not per caller
- other *(pathgate)* Hide the fuzz-only judge seams from the public API
- other *(todo)* Correct the find "scale gap" entry — it was a misreading
- other *(todo)* Re-verify the exec-gate class, and correct two stale headings
- other *(pulumi)* Replace the doc-guessed config research with measured facts
- other *(pulumi)* The config blocker rested on a wrong premise — config is a local FILE
- other *(pulumi)* RESOLVE the config set question — the backend is ambient
- other *(todo)* Record three structural classes probed clean, and the one real gap
- other *(design)* Spec the refusal copy, keyed to emission rather than harness
- other *(design)* Add ten worked examples to the refusal-copy spec, and a style rule
- other *(design)* Revise the refusal examples on review, and record a UX inconsistency
- other *(design)* Spec acknowledged grants so a user statement can cut through
- other *(design)* A grant should cover what it names, not require an acknowledgement
- other *(design)* Record partial-implementation risks for both specs
- other *(design)* Enumerate every carve-out kind and rule on each
- other *(design)* Decide system-integrity is absolute, correcting a false argument
- other *(design)* Record what is settled and what still needs checking
- other *(design)* Draft the user-facing docs change for grants
- other *(design)* Record a blocker in the grants plan, and close two checks
- other Document that a grant covers what it names
- other *(regions)* Remove a doc comment stranded by the peer shield removal
- other Say what write = true on a credential store actually allows
- other Record what safe-chains cannot see, and the ~ decision
- other *(todo)* Record what this stack defers, with the evidence
- other *(todo)* Clear the nightly slow-units, and record how to measure them
- other *(registry)* Guard the command TREE, not just its contents
- other *(fuzz)* Replay every target per push, and test for drift