Skip to content

Releases: justi/claude-code-project-boundary

v1.8.0 — install/rsync walker bypass closures

27 Apr 14:15
26ce94e

Choose a tag to compare

Security — closes 3 bypass categories in install / rsync walkers

  • A. install POSIX double-dash bypass — walker treated -- as just another flag-looking token; quoted "--" (or bare --) followed by an outside-project target slipped through. Fixed in b460e57.
  • B. rsync POSIX double-dash bypass — same shape as A in the rsync walker (fix in 5b11dbe; ce011af strips quotes before the -- test so "--" / '--' cannot smuggle the marker past).
  • C. install mode/user_group flag-skip bypass-m MODE / -o OWNER / -g GROUP skip consumed the next token unvalidated; an outside-project path supplied as the "value" left the real target unscanned. Fixed in bab3ffe.

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=PATH through path validation only when name is on the write-target white-list. --mode=, --owner=, --group=, -mPATH etc. 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=FILE to the white-list (8141400).

Quality of life

  • session_hint.md now documents $VAR / ${VAR} fail-closed (only $HOME allowed). Was only mentioning $(...); agents repeatedly burned tool calls on P=...; 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.sh decomposed into detector clusters (#16) and split into modules (#15).
  • tests/test_bypass_reproducers.sh split 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.json bumped to 1.8.0. Per project invariant, v1.1.0 remains marketplace-latest; this tag is a release marker, not a marketplace publish.
  • Full v1.8.0 changelog in CHANGELOG.md.

v1.1.0

22 Apr 23:41

Choose a tag to compare

Current plugin release on main. Install: claude --plugin-dir /path/to/claude-code-project-boundary or via davepoon/buildwithclaude marketplace. See README for details.