Repository navigation
Releases
Releases · nisrulz/side-eye
v1.1.0
Changelog
A release focused on closing ways an untrusted repository could affect the machine or leak data during a scan.
Security
- No more reads outside the repository. Surface files like
.npmrcorscripts/*.shthat are symlinks pointing outside the scanned tree are now refused. Previously, with-llm, scanning an untrusted repo could follow such a link and send the file's contents, potentially your local credentials, to the model endpoint. - LLM review stays on your endpoint. Redirects that leave the configured host or scheme are no longer followed. A 307/308 redirect replays the request body, so a redirecting endpoint could previously send repository contents, and possibly your token, somewhere else.
- Shell-safe advice. The
git clonecommands side-eye prints are now shell-quoted. A remote URL containing;or$(...)can no longer turn the printed advice into an execution. - Correct files scanned on raw endpoints. A branch or tag containing
?or#is now escaped in raw file URLs, so a URL scan reads the right ref. - Harder-to-shape LLM prompt. The prompt's untrusted-data fence is drawn from
crypto/randper run, and every file-listing line is quoted, so crafted file names can no longer break out of the listing and read as instructions.
Reliability
- No hangs on hostile files. A FIFO or device named like a surface file used to block a scan forever while it waited for a writer. Both are now refused, and files over 8 MiB are treated as unreadable and skipped.
- Bounded ZIP scans. A ZIP archive with more than 100,000 entries now fails immediately with an explanatory error, instead of stalling the scan with unbounded memory use.
Install
- The installer fails closed without
gh. It used to print a warning and install an unverifiable binary anyway. Now it stops and explains the two ways forward: installgh, or setSIDE_EYE_INSTALL_SKIP_ATTESTATION=1for an air-gapped mirror. - HTTPS everywhere. Every download, including redirects, requires HTTPS with TLS 1.2 or later.
Under the hood
- Go 1.27.3 build. Clears the 9 standard-library vulnerabilities govulncheck reported for 1.27.1.
- Dependencies updated. All dependencies are at their latest versions.
- Security-conscious CI. CI now runs govulncheck on every push and PR, and the release workflow runs vet and tests before publishing any asset.
- Tags only from reviewed commits. Release tags can only be cut from commits pushed to
origin/main. - New developer targets.
make upgradeupdates all dependencies, andmake checkmirrors the full CI behavior.
Commits
- d9b7393 docs: cover the security fixes and tooling added since v1.0.1
- 903e199 chore(make): add upgrade target and make check mirror CI
- 2668562 fix(go): bump toolchain to 1.27.3 and deps to latest
- 6fd06d1 fix: refuse a ZIP archive with more entries than side-eye will index
- 72b1ab3 fix: shell-quote the clone command printed in remote-scan advice
- 473e76b fix: escape the whole branch or tag in raw file URLs
- 183ec25 fix: draw the LLM prompt fence from crypto/rand and quote listing lines
- 707f673 ci: run vet and tests before the release is published
- 5318953 ci: scope the test workflow token and run govulncheck
- 1a9e3b2 fix: release only the commit that main has on origin
- 7d3fd43 fix: make the installer fail closed without gh and pin curl to https
- cab0767 fix: stop the LLM client following redirects off the configured endpoint
- 4a99860 fix: confine repository file reads to the scanned tree
- 1446079 fix: refuse FIFOs, devices, and oversized files during a scan
v1.0.1
Changelog
- 19f94a3 add screenshot in readme
- 8bc1590 fix: run the shell and Android checks against ZIP and URL targets
- bb382a8 build: bump golang.org/x/sys to v0.44.0 for GO-2026-5024
- 51e8757 fix: verify build provenance in the installer, not just the checksum
- c31c8e9 fix: fence the LLM prompt and refuse cleartext endpoints
- 1efb420 fix: drop -token so a secret never reaches argv
- 47e9420 fix: keep include.path and core.hooksPath inside the scanned tree
- 3d44fba fix: marshal finding severity as a name, not an integer
- f247150 fix: strip terminal escape sequences from report output
v1.0.0
Changelog
- 8e08286 docs: add the banner image and logo assets
- 2645598 docs: link the remaining surface items to their own documented abuse
- 48524de docs: link each checked surface to a real exploit of it
- b129bce build: add a make release target
- 3ab8ac6 docs: make the README user focused and split LLM setup into its own page
- ceef454 docs: add developer docs for architecture, rules, and each scan path
- aff5e04 docs: add the README with the threat model and usage
- a879fac build: add cross-platform releases and an install script
- fd9ad78 ci: run vet and the full test suite on every push
- e64970d chore: add make targets for install, test, check, and scan
- 7f14397 test: cover ZIP, worktree, and LLM paths end to end
- a7cabc3 test: drive the built binary against real repositories
- d57e385 feat: add the CLI entry point that dispatches on target type
- b64de29 test: cover the LLM pass with a stub endpoint and the selection rules
- ec2009d feat: add an optional LLM review pass over the execution surface
- 711dc03 feat: scan a ZIP archive, including a bundled .git directory
- b4d20c3 test: cover URL parsing and the remote source contract
- 72a0524 feat: print findings as a table or JSON with per-target advice
- 4c5d515 feat: scan a remote repository over HTTPS without cloning
- 07996e5 feat: render findings in a fixed-width box table
- 20ec03c feat: add shared terminal styling, banner, and progress spinner
- be89675 test: cover Android build execution and shell script heuristics
- 7e46e67 test: cover config parsing, git rules, and worktree checks through fixtures
- b900823 feat: detect install hooks and Android build-time command execution
- 7b204ef feat: detect editor tasks and shell setup files that auto-run
- 1523ce7 feat: detect git config keys, hooks, and drivers that run commands
- 48f2992 feat: model findings, parse git config, and read the worktree
- b794650 chore: initialize Go module and ignore rules
- 03edbfb docs: add Apache 2.0 license
- 7a6c1fd init