You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- release.yml: close GitHub Actions script-injection vector via
attacker-controlled git tag name (CWE-78). Bind workflow context to
job-level env (TAG/REPO/COMMIT_SHA), add a fail-closed semver
tag-format gate as the first step, remove all ${{ }} interpolation
from run: blocks, quote shell expansions.
- config.ts: enforce 0o700/0o600 via explicit chmod after write in
saveConfig and clearConfig — writeFileSync/mkdirSync mode is
create-only, so a pre-existing config kept loose perms and could
leak the plaintext API key on a multi-user host.
- segments.ts: validate --filter-sets is a JSON array (matches the
documented contract and buildImportBody); add regression test.
- profiles.ts: document the intentional GET-with-body profile-search
contract so it is not "fixed" to POST (would break the Formo API).
Build (tsc), lint (eslint), and 88 tests pass.
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments