|
1 | 1 | # @aliou/pi-guardrails |
2 | 2 |
|
| 3 | +## 0.17.0 |
| 4 | + |
| 5 | +### Minor Changes |
| 6 | + |
| 7 | +- ffc7ca7: path-access: filter non-path bash arguments by shape and filesystem |
| 8 | + plausibility instead of per-command allow-lists. |
| 9 | + |
| 10 | + Arguments that look like paths but are not (Context7 library IDs such as |
| 11 | + `/websites/apisix`, Go package patterns like `./...`, URLs, `user@host:` remote |
| 12 | + targets, `docker -v /src:/dst` volume specs) no longer trigger outside-workspace |
| 13 | + prompts, for every CLI rather than an enumerated list. |
| 14 | + |
| 15 | + Filtering never applies to redirect targets, interpreter programs, commands |
| 16 | + that create missing parent directories, or tokens holding an unexpanded shell |
| 17 | + reference, so real outside-workspace access is still surfaced. |
| 18 | + |
| 19 | + The `awk`, `sed`, `grep`, `jq`, and `go` classifiers are removed as redundant. |
| 20 | + Interpreter, `find`, and delimiter (`cut`/`sort`/`tr`) handling is unchanged. |
| 21 | + |
| 22 | +### Patch Changes |
| 23 | + |
| 24 | +- dcd815b: Make Pi documentation path grants optional so the extension loads in Oh My Pi. |
| 25 | + |
| 26 | + `extensions/path-access/dynamic-resources.ts` no longer statically imports named `getReadmePath`, `getDocsPath`, and `getExamplesPath` helpers from `@earendil-works/pi-coding-agent`. When those helpers are unavailable (e.g. under Oh My Pi), documentation grants are skipped instead of failing extension validation. |
| 27 | + |
| 28 | +- ad2c8d7: Adopt @aliou/pi-utils-settings 0.19.1 and switch migrations to package semver versions. |
| 29 | +- 0a15f3f: Fix secret-files (and other `onlyIfExists`) policies being bypassed when a bash |
| 30 | + target path contains an unexpanded shell expansion such as `$VAR`, `${VAR}`, |
| 31 | + `$(...)`, `$((...))`, or process substitution. |
| 32 | + |
| 33 | + Previously, a command like `head "$SC/.env"` extracted the literal target |
| 34 | + `$SC/.env`. The `.env` basename matched the policy, but the policy's |
| 35 | + `onlyIfExists` check then `stat()`'d `<cwd>/$SC/.env` — a path that never |
| 36 | + exists — and let the read through. |
| 37 | + |
| 38 | + Target extraction now marks such paths as unresolved, and the policy check no |
| 39 | + longer applies `onlyIfExists` to them: a path we can't resolve can't be used to |
| 40 | + prove a file doesn't exist. This follows ShellCheck's stance that shell |
| 41 | + indirection is "known to be unsolvable in the most general case" — unresolved |
| 42 | + references are treated conservatively rather than optimistically. |
| 43 | + |
3 | 44 | ## 0.16.2 |
4 | 45 |
|
5 | 46 | ### Patch Changes |
|
0 commit comments