23.0.0 (2026-07-24)
⚠ BREAKING CHANGES
- pi-permission-system: path values embedded in
--opt=valuebash tokens are now extracted and gated by thepathandexternal_directorysurfaces. Previously they were invisible to both, so a permissivebashrule such asgrep *allowed them. Add an allow pattern onexternal_directoryorpathfor an intended target. - pi-permission-system: bash commands referencing existing bare-named files or in-project symlinks are now gated by
pathrules (matched against the canonical, symlink-resolved form) and byexternal_directorywhen they resolve outside the working directory. Previously a permissivebashallow rule such ascat *bypassed both. A bare token naming no file is still dropped, sogit status-style commands are unaffected. To restore prior behavior for an intended target, add an allow pattern onexternal_directory(for outside-CWD paths) or onpath.
Bug Fixes
- pi-permission-system: classify path values embedded in --opt=value tokens (0be19fd), closes #645
- pi-permission-system: gate existing bare-named files and symlinks in bash commands (9467858), closes #645