Releases: justi/claude-code-project-boundary
Releases · justi/claude-code-project-boundary
v1.8.0 — install/rsync walker bypass closures
Security — closes 3 bypass categories in install / rsync walkers
- A.
installPOSIX double-dash bypass — walker treated--as just another flag-looking token; quoted"--"(or bare--) followed by an outside-project target slipped through. Fixed inb460e57. - B.
rsyncPOSIX double-dash bypass — same shape as A in thersyncwalker (fix in5b11dbe;ce011afstrips quotes before the--test so"--"/'--'cannot smuggle the marker past). - C.
installmode/user_group flag-skip bypass —-m MODE/-o OWNER/-g GROUPskip consumed the next token unvalidated; an outside-project path supplied as the "value" left the real target unscanned. Fixed inbab3ffe.
Hardening — Codex review follow-ups
- Surgical flag-skip with quote-aware comparison; settled shape (
f76ec34) keeps strip_quotes view for both--test and-*flag-skip, routes attached--name=PATHthrough path validation only whennameis on the write-target white-list.--mode=,--owner=,--group=,-mPATHetc. deliberately not path-validated. - Replaced the
=/heuristic with an explicit write-target option white-list (00d7300), eliminating false positives on read-only options that take an absolute path. - Added rsync
--write-batch=FILE/--only-write-batch=FILEto the white-list (8141400).
Quality of life
session_hint.mdnow documents$VAR/${VAR}fail-closed (only$HOMEallowed). Was only mentioning$(...); agents repeatedly burned tool calls onP=...; grep "$P"style invocations.tests/test_bash_advanced.sh§50 (22 cases) pins the variable-expansion contract.tests/test_bypass_reproducers_recent.sh§27 (14 cases) pins attached-flag behavior so future doc drift is caught by the suite.
Refactor
hooks/guard.shdecomposed into detector clusters (#16) and split into modules (#15).tests/test_bypass_reproducers.shsplit into_core.sh+_recent.sh(was past 1000 lines).
Tests
821 passed / 0 failed. All 3 closures land via the project TDD flow: one bypass per commit, reproducer fails first, fix commit follows.
Notes
plugin.jsonbumped to1.8.0. Per project invariant,v1.1.0remains marketplace-latest; this tag is a release marker, not a marketplace publish.- Full v1.8.0 changelog in CHANGELOG.md.