Releases: alexverify/eyebrow
Releases · alexverify/eyebrow
Release list
v0.3.0
Changelog
- b101406: small fixes (@alexverify)
- 457812d: lint fixes (@alexverify)
- 08d5aa9: dashboard: split server into handlers, security, and view files (@alexverify)
- 026db99: ci: gate golangci-lint on pull requests with only-new-issues (@alexverify)
- 910f19e: fix: close proxy-test response bodies and run cleanup before exit (@alexverify)
- 4521642: cli: route command errors through a shared fail helper (@alexverify)
- e4cb16d: dashboard: split dto.go into wire types and the buildscan assembler (@alexverify)
- c1cb17e: add SECURITY.md vulnerability disclosure policy (@alexverify)
- 2986bc4: make: pin local lint to the CI golangci-lint version (@alexverify)
- 62855a4: ci: add dependabot for gomod, actions, and the web tree (@alexverify)
- 1cc004e: test: cover finding severity ranking and Max (@alexverify)
- 5babd24: test: cover artifact MakeID stability and MaxSeverity (@alexverify)
- 5e69028: test: cover hash determinism, sorting, and .git exclusion (@alexverify)
- 9ef0238: test: cover lockstore round-trip, missing file, and Exists (@alexverify)
- b03f075: test: cover JSON and text reporters for scan, verify, list (@alexverify)
- 0ca2c30: fix: surface Close errors on append-only write paths (@alexverify)
- bcd07b8: test: cover analyzer chain concatenation and error handling (@alexverify)
- f4e0a81: test: cover resolve router, local/inline resolvers, and git helpers (@alexverify)
- 6f00f2b: test: cover policystore load and save error paths (@alexverify)
- 9aac22e: test: cover semgrep severity mapping, OWASP, and relToRoot (@alexverify)
- 5664f0b: test: cover repstore read, parse, and null-corpus paths (@alexverify)
- 09cf941: test: cover sbom component type, version, and purl helpers (@alexverify)
- 1fd7509: test: cover notify default-client fallback and transport error (@alexverify)
- cbff603: test: cover cpstore corrupt-file handling and safeName sanitizing (@alexverify)
- 469987c: test: cover verify signature and signed-approval policy gates (@alexverify)
- ade7263: test: cover scan defaults, enrich error paths, and run failures (@alexverify)
- 93e5c18: test: cover client Gate and server-error fallback across endpoints (@alexverify)
- 2fc0793: test: cover provenance anchoring across all source kinds (@alexverify)
- 6fc8072: test: cover cli list, diff, freeze, and fleet export/show commands (@alexverify)
- b747349: test: cover cli key dispatch, sbom file output, and verify --server fallback (@alexverify)
- 82bd3ac: test: cover serve token errors, lifecycle, alerts guard, and server policy (@alexverify)
- 901ee4f: test: cover dashboard startup, keyring wiring, and graceful shutdown (@alexverify)
- 3eb0f98: test: pin trust scoring helpers across every weight ladder (@alexverify)
- c5ae6d0: test: cover posture approved-set rules and drift phrasing (@alexverify)
- c131b88: test: cover client transport and decode error paths (@alexverify)
- b82dea7: test: cover cli env/hostname/topN helpers and default fleet owner (@alexverify)
- 370ecae: test: cover audit push empty-log and bad-since guards (@alexverify)
- 1628a2d: test: exercise dashboard read endpoints end to end (@alexverify)
- 1528948: test: cover lockfile approval-signing and finding-safe helpers (@alexverify)
- 5359118: test: cover strict JSON parser (@alexverify)
- fbb5915: test: cover control-plane reputation endpoint (@alexverify)
- 25a0f73: feat(reputation): build and merge trust corpora from local approvals (@alexverify)
- c0e047f: feat(cli): add reputation export to build a corpus from approvals (@alexverify)
- a5bf050: feat(cli): add completion command for bash, zsh, and fish (@alexverify)
- c2ad8f9: feat(doctor): model an environment health-check report (@alexverify)
- f302c72: feat(cli): add doctor command reporting tools and lockfile state (@alexverify)
- 8002f88: feat(doctor): report OS sandbox availability (@alexverify)
- 54c0329: feat(doctor): report usage-telemetry hook installation status (@alexverify)
- 1150ebe: feat(doctor): check control-plane reachability when configured (@alexverify)
- 7391191: feat(doctor): add a JSON wire shape for the report (@alexverify)
- 3ac9f58: feat(cli): add doctor --json for machine-readable output (@alexverify)
- 777cd53: feat(sbom): render the lockfile as an SPDX 2.3 document (@alexverify)
- 3d7b7ae: feat(cli): add sbom --format to choose CycloneDX or SPDX (@alexverify)
- c8d407d: feat(discover): add a Claude Desktop MCP-server discoverer (@alexverify)
- 0f7ee6f: feat(discover): register Claude Desktop in the default tool set (@alexverify)
- 87f3187: feat(doctor): warn on quarantined artifacts and note frozen pins (@alexverify)
- 9b708df: feat(doctor): add --strict to exit non-zero on warnings for CI (@alexverify)
- 78c33cb: fix(cli): offer doctor in shell completion and refresh sbom description (@alexverify)
- e36ec75: test: cross-check shell completion against the help command list (@alexverify)
- 37769d5: feat(doctor): report local signing-key availability (@alexverify)
- b4bb77e: feat(artifact): add Types and IsType for type validation (@alexverify)
- 0c50cb7: feat(cli): filter list output by --tool and --type (@alexverify)
- efd5abc: refactor(digest): extract a structured digest report from the renderer (@alexverify)
- 225e265: feat(cli): add digest --json for machine-readable review summaries (@alexverify)
- 7e8b3a2: ci(release): attest build provenance for release artifacts (@alexverify)
v0.2.0
Changelog
- c609591: feat(analyze): wire semgrep runner with starter rules pack (@alexverify)
- be87ef5: feat(approve): approve --all for bulk onboarding (@alexverify)
- b0e3f6f: feat(shim): jsonrpc message model and tools/call tracker (@alexverify)
- fa1761a: feat(shim): audit event model and jsonl sink (@alexverify)
- cf20c46: feat(shim): byte-transparent mcp relay with tool-call auditing (@alexverify)
- 65abf57: feat(shim): agentguard mcp-shim command spawning and auditing the real server (@alexverify)
- f8dc835: feat(wrap): mcp config rewrite adapter (wrap/unwrap/status) (@alexverify)
- 99be165: feat(wrap): wrap, unwrap, and wrap --status commands (@alexverify)
- 5b5f219: feat(wrap): discovery sees through shimmed servers, wrap causes no drift (@alexverify)
- dd1ee88: feat(policy): per-server mcp tool rules with glob matching (@alexverify)
- 7b4959f: feat(shim): enforce mcp tool policy in the relay, deny with jsonrpc error (@alexverify)
- 52d2861: feat(shim): --policy flag, enforcement docs (@alexverify)
- 0dcf73b: feat(secrets): credential shape detection and redaction (@alexverify)
- 21ddb98: feat(policy): per-server egress host rules (@alexverify)
- eee70dd: feat(proxy): egress proxy with host rules, body redaction, and audit (@alexverify)
- ed24231: feat(shim): inject egress proxy into wrapped servers (@alexverify)
- 9211a57: feat(sandbox): seatbelt and bwrap profile generation (@alexverify)
- 32521e9: feat(sandbox): backend selection by platform with identity fallback (@alexverify)
- 44dc37e: feat(sandbox): confine wrapped servers via mcp-shim, --no-sandbox/--workspace (@alexverify)
- e3c6823: test(sandbox): prove off-proxy egress is blocked under confinement (@alexverify)
- 5a296ee: feat(audit): read, filter, and summarize the audit log (@alexverify)
- 9fd2b62: feat(audit): agentguard audit command with summary, list, and filters (@alexverify)
- 498b2c1: feat(approve): sign and verify approvals over artifact id + content hash (@alexverify)
- 48f44bb: feat(approve): approve --sign and requireSignedApproval verify gate (@alexverify)
- 988097f: feat(wrap): --global to wrap the user-level ~/.claude.json config (@alexverify)
- 62ed8aa: feat(discover): windsurf and copilot cli discovery adapters (@alexverify)
- 24e073f: ci: add windows to the test matrix and release targets (@alexverify)
- 1eca3b8: fix(windows): force LF on checkout so gofmt and hashing are stable (@alexverify)
- 4b8136e: test(windows): portable shell, home redirect, and skip unix-only assertions (@alexverify)
- 3fd7fb4: fix(windows): override pre-existing proxy env vars when injecting the egress proxy (@alexverify)
- 84d6fcf: test(windows): add control var and stderr to egress-proxy diagnostic (@alexverify)
- ee6958c: windows: gate proxy-value check to unix, surface sandbox absence, document platforms (@alexverify)
- e3b2d4e: feat(dashboard): local read-only web dashboard served on loopback (@alexverify)
- f739e99: feat(dashboard): next.js frontend, static-exported and embedded in the binary (@alexverify)
- 1b2df5a: feat(dashboard): adopt the dev-dashboard-creation design (mock data, static-exported) (@alexverify)
- 4855807: feat(dashboard): /api/scan assembles live inventory+drift in the UI shape (@alexverify)
- fc32651: feat(dashboard): wire the UI to live /api/scan, fall back to mock in dev (@alexverify)
- 3c2685f: feat(dashboard): per-artifact detail data, real mtime and keyring-verified approvals (@alexverify)
- bfea54c: feat(dashboard): per-artifact detail drawer (provenance, integrity, capabilities, findings, files, activity) (@alexverify)
- f48215f: feat(lockfile): classify drift as updated/mutated/broken (@alexverify)
- 7303d37: feat(lockfile): diff declared capabilities across snapshots (@alexverify)
- f5fbc39: feat(trust): additive per-artifact trust verdict (@alexverify)
- d16a7a6: feat(dashboard): surface trust verdict, drift class, capability diff in API (@alexverify)
- 6c94a30: feat(dashboard-web): types and styles for verdict and capability diff (@alexverify)
- 3cffa9a: feat(dashboard-web): verdict badge, posture cards, updated-vs-drifted split (@alexverify)
- 9dd6312: feat(dashboard-web): trust breakdown and capability expansion in drawer (@alexverify)
- bb557be: feat(report): baseline trust verdict column in list output (@alexverify)
- 3e8c611: build: re-embed dashboard with trust and drift UI (@alexverify)
- 183584f: feat(advisory): flag known-malicious artifacts from an offline feed (@alexverify)
- faa2b03: feat(cli): add digest command summarizing changes since the lockfile (@alexverify)
- f07a98b: feat(dashboard-web): changes view, activity timeline, advisory banner (@alexverify)
- c180ded: build: re-embed dashboard with changes, activity, and advisory UI (@alexverify)
- a919e66: feat(policy): enforce quarantine and freeze in the gate (@alexverify)
- 6ecce9c: feat(cli): add quarantine and freeze commands (@alexverify)
- 27e594e: feat(provenance): grade source verifiability as a ladder (@alexverify)
- 4167c24: feat(dashboard): surface quarantine/freeze state and provenance ladder (@alexverify)
- 4932d2c: feat(dashboard-web): provenance ladder and quarantine/freeze state in drawer (@alexverify)
- 3dfa43b: build: re-embed dashboard with quarantine and provenance UI (@alexverify)
- 80d7b46: feat(policy): allow/block lists for publishers and artifacts (@alexverify)
- 6ca1138: feat(cli): post the digest to a webhook with --notify (@alexverify)
- 97cde64: feat(dashboard): token-guarded approve/quarantine/freeze write endpoints (@alexverify)
- f20eef6: feat(dashboard-web): approve/quarantine/freeze action buttons in drawer (@alexverify)
- aa9dd89: feat(dashboard-web): egress map grouping audit egress by host (@alexverify)
- 4b39b22: build: re-embed dashboard with action buttons and egress map (@alexverify)
- e3e064f: feat(provenance): verify npm build-provenance to satisfy the publisher rung (@alexverify)
- 2c48b46: feat(cli): export the lockfile as a CycloneDX SBOM (@alexverify)
- 612aabd: rename agentguard for assay (@alexverify)
- 04b2960: ci: exclude secret-detector fixtures from GitHub secret scanning (@alexverify)
- 4673182: feat(provenance): verify git commit signatures and cosign container images (@alexverify)
- 8ab2951: feat(policy): muted findings with rationale and a policy file writer (@alexverify)
- 0c5e237: feat(dashboard): shadow-extension detection and policy/mute/egress write endpoints (@alexverify)
- 405da58: feat(posture): first-run verdict, history trend, and /api/history (@alexverify)
- bf3cfe2: feat(dashboard-web): policy tab, finding mute, egress allowlist, shadow banner, posture trend (@alexverify)
- 26a1657: license: relicense from Apache-2.0 to MIT (@alexverify)
- d68c63c: feat(dashboard): file-manifest diff for drifted artifacts (H1) (@alexverify)
- 3c5b5f2: fix theme-toggle (@alexverify)
- c918214: feat(dashboard): per-artifact usage telemetry and dormant-then-active sleeper (F1, F2) (@alexverify)
- eed6dc6: feat(dashboard): per-artifact event timeline ribbon (F4) (@alexverify)
- 1db50fe: feat(dashboard): capability × usage risk fusion for findings (F3) (@alexverify)
- 32e7963: feat(fleet): team blast-radius from committed snapshots (G1) (@alexverify)
- 7a0a45c: feat(fleet): artifacts × developers inventory heatmap (G2) (@alexverify)
- 02a4b05...
v0.1.0
Changelog
- 36f3d7b: feat(action): composite verify --ci action with checksum-verified install (alexverify alexverify@proton.me)
- 5235ed8: fix: track cmd/agentguard, gitignore matched the directory (alexverify alexverify@proton.me)
- fb9f617: feat(release): goreleaser cross-platform binaries on tag push (alexverify alexverify@proton.me)
- 679631e: ci: gofmt/vet/test/build gate on linux and macos (alexverify alexverify@proton.me)
- fe525e0: feat(trust): agentguard key show/trust and trusted-keys verify gate (alexverify alexverify@proton.me)
- f2b89d1: feat(trust): keyring of trusted ed25519 keys for lockfile verification (alexverify alexverify@proton.me)
- c46583f: feat(sign): agentguard sign + requireSignature verify gate (alexverify alexverify@proton.me)
- 8d1568a: feat(sign): lockfile signing, verification, and persistent local key (alexverify alexverify@proton.me)
- 69abae0: feat(policy): configurable verify --ci gate (threshold, ignore rules, approvals) (alexverify alexverify@proton.me)
- 80a4b18: feat(policy): pure policy model and gate evaluation (alexverify alexverify@proton.me)
- 836ef3f: feat(analyze): detect SSRF, exfil hosts, reverse shells, encoded exec, wallet theft (alexverify alexverify@proton.me)
- 10c11a2: feat(discover): Codex CLI via TOML config (adds BurntSushi/toml) (alexverify alexverify@proton.me)
- e6721b4: feat(discover): OpenCode MCP servers (alexverify alexverify@proton.me)
- 81ace04: feat(analyze): scan inline content so dangerous hooks are flagged (alexverify alexverify@proton.me)
- cdbcdc1: feat(discover): Claude Code hooks, subagents, and context files (alexverify alexverify@proton.me)
- 978f28a: feat(discover): enable Cursor and Gemini across tools (alexverify alexverify@proton.me)
- 0ae8fa8: feat(discover): Gemini CLI MCP servers (alexverify alexverify@proton.me)
- a40ba58: feat(discover): Cursor MCP servers and rules (alexverify alexverify@proton.me)
- 10e5d7d: refactor(discover): extract shared mcp/skills/rules helpers (alexverify alexverify@proton.me)
- 2be1c50: feat(parse): tolerant JSONC parser (comments + trailing commas) (alexverify alexverify@proton.me)
- 10d1779: fix(analyze): skip vendored dependency dirs to cut false positives (alexverify alexverify@proton.me)
- b19f2d4: feat(resolve): wire npm/git/url resolvers into the router (alexverify alexverify@proton.me)
- 8bbf00a: feat(resolve): url resolver pins remote TLS certificate (SPKI) (alexverify alexverify@proton.me)
- 6f98747: feat(resolve): git resolver pins refs to commit SHAs (alexverify alexverify@proton.me)
- 2c162f3: feat(resolve): npm resolver pins version, integrity, and fetches code (alexverify alexverify@proton.me)
- dac87ef: feat(resolve): add zip-slip-guarded tar.gz extraction (alexverify alexverify@proton.me)
- 429a81d: feat(resolve): parse npm package specs and npm view output (alexverify alexverify@proton.me)
- f629ac9: feat(resolve): add command-runner abstraction for shelling out (alexverify alexverify@proton.me)
- e07ff4e: first commit (alexverify alexverify@proton.me)