- fix(provider): keep reasoning effort pass-through consistent (#283) (f0029184)
- feat(provider): keep reasoning effort consistent across Anthropic paths (#283) (c9809a4c)
- feat(provider): forward reasoning effort to OpenAI-compatible models (#283) (a2c438e7)
- fix(analyzer): align file-size guard with character semantics (#284) (494a0ac4)
- fix(analyzer): reduce cupynumeric false positives (b3840e76)
- fix(analyzer): reduce security-pattern false positives (450f623a)
- fix(analyzer): scope passwd mount and rm detection (4cb73a29)
- fix: mask release command failures (564870a1)
- ci: validate default branch pushes (8092a9e7)
- Fix Sonar finding in YARA rule materialization (a7bb3d4d)
- feat(provider): allow scoped LLM provider injection (#243) (fa07d56b)
- fix emoji zwj prompt injection false positive (bd9a6630)
- fix(analyzer): keep executable doc calls outside suppression (#251) (8b7569fe)
- fix(analyzer): keep inline block comments out of doc gating (#251) (e87c0896)
- fix(analyzer): classify docs from the finding line (#251) (5b696557)
- fix(analyzer): keep config-file findings outside doc gating (#251) (c4a9f0c2)
- fix(analyzer): gate documentation false positives for PE3/RA1/TM1/AR2 (#251) (7fae683f)
- fix(cli): preserve full per-skill JSON payload in recursive scans (#228) (624edc35)
- fix(yara): skip malformed unicode encoded rules (#236) (5d5275ae)
- fix(yara): reduce packaged malware-signature false positives (#236) (878ee050)
- fix(sc7): exclude --disable-content-trust=false to keep content-trust-enabled pulls clean (4a4eed7c)
- fix(analyzer): rely on runner for SC7 example filtering to close executable bypass (79ebb0bb)
- feat(analyzer): detect untrusted container image pull as SC7 (5af944be)
- fix(report): preserve exact SARIF severity metadata (#229) (b903836c)
- fix(report): preserve remaining SARIF finding fields (#229) (b0691ded)
- fix(report): preserve full finding metadata in SARIF output (#229) (2adabfb2)
- Format: ruff lint and format fixes (f97ac489)
- Add unit tests for run_async utility function (32c2b624)
- Fix: remove unused asyncio import from meta_analyzer.py (d3c48b61)
- Fix: Allow running in environments with existing event loop (bc27b71d)
- fix: mask release command secrets (d00fa2d5)
- docs: correct MCP fixture expectations (84da0b8e)
- fix(mcp): prove stdio initialize compatibility (#199) (59242513)
- fix: trim batch scan README command whitespace (374a81de)
- rename contrib/multilingual to contrib/batch_scan and update README usage (ea2b2b48)
- ci: align GitHub CI with deterministic checks (a76f1319)
- refactor: centralize cleanup and risk threshold (f7868378)
- docs: finalize PR #100 review — docs, tests, world-class polish (18d46dcb)
- fix: wire ApiKeyPool into llm_analyzer_base graph path (464eaddc)
- fix: add SPDX headers, from future annotations, conftest.py to all test files - Add SPDX license header to 8 test files - Add from future import annotations to 8 test files - Fix Unicode stdout crash in test_pool_wiring.py on Windows - Add conftest.py with pytest markers registration - 120 tests passing Co-Authored-By: Claude noreply@anthropic.com (59e34c34)
- docs: reorganize into core guides and process archive (c48ee723)
- docs: add CONTRIBUTING guide, rejected alternatives, gap-fill selection criteria (0abe875b)
- fix: add Windows Unicode stdout support for CJK output (319d6618)
- fix: add SPDX headers, cross-platform cleanup, and comprehensive documentation (5487a8d2)
- docs: organize documentation, translate to English, add NVIDIA convention audit (39f9f140)
- fix: suppress asyncio noise, sanitize meta-analyzer output quirks (8f4870fa)
- fix: resolve LLM race condition, JSON parsing, and connection timeout (7cf7488c)
- add contrib multilingual batch scanner (29d8d016)
- test: restore LLM-backed graph integration coverage (d32b915a)
- test: keep graph integration scans offline (5f3ef93f)
- style: format MCP least-privilege analyzer (9625f495)
- docs: correct stale analyzer status and dangling references (d4cc4a5a)
- feat(providers): local agent-CLI providers (claude/codex/gemini), no API key (cc8e82b8)
- feat(ossf-scorecard): add ossf-scorecard github action integration (63b5f68b)
- fix(mcp): feed allowed-tools into LP1 under-declaration check (19fc38af)
- fix(mcp): treat allowed-tools as a permission declaration for LP3 (77bf29e8)
- test(input): add SSRF gate coverage for scp-extracted hosts (97f3b8fc)
- fix(cli): preserve empty string from _result_body when sarif_report absent (9261d9b5)
- Support Python 3.14 (afd19edb)
- feat(analyzer): detect privileged Kubernetes workload deployment as TM4 (ed78c4f9)
- test(input): clarify scp_private_ip test covers allowlist gate (f83d375d)
- fix(cli): write concatenated multi-skill report to --output for non-JSON formats (a029f974)
- fix(input): support scp-style SSH Git URLs in host validation (ced95dc5)
- style: fix merge-ref lint failures (c2675824)
- style: format chat model provider warning (2092bcff)
- fix: address non-blocking reviewer nits from #178 and #179 (25828190)
- revert: restore provider CI failure policy (b69c59f9)
- ci: make live provider validation non-blocking (425ebf93)
- style: complete GitHub PR 194 formatting for PR 125 (7cf23c79)
- style: complete GitHub PR 194 formatting for PR 122 (fcc7d2bc)
- style: apply GitHub PR 194 lint fix to PR 178 import (3899f397)
- style: apply GitHub PR 194 lint fix to PR 172 import (cb2526fa)
- style: apply GitHub PR 194 lint fix to PR 125 import (58a91564)
- style: apply GitHub PR 194 lint fix to PR 122 import (97626561)
- feat: add AWS Bedrock provider for Claude via SigV4 (5bd6b642)
- fix: address non-blocking reviewer nits from #140, #141, #143 (5a6d2681)
- feat(analyzer): detect cloud-storage exfiltration as E5 (89c3b6b2)
- docs(mcp): clarify setup before users choose stdio (8a30c436)
- feat(analyzer): detect privileged container execution and escape primitives as PE5 (e9f46353)
- docs(mcp): document HTTP transport trust model (3493632d)
- fix(report): strip ANSI/control bytes from report output (1d97d455)
- fix(behavioral): detect builtins.* and importlib.import_module sink evasions (173a56cd)
- feat: per-slot model env overrides and model validation (4b9e8f91)
- fix(P2): narrow emoji tag carve-out to ISO-3166-2 codes (close smuggling bypass) (8ebac993)
- fix(P2): detect Unicode Tag-block "ASCII smuggling" hidden instructions (99481670)
- feat(analyzer): implement MCP rug-pull detection (RP1-RP3) (348ca12c)
- fix(scoring): apply 1.3x multiplier only to findings from executable files (78db5356)
- feat(scripts): add PR review agent automation tooling (8c618e07)
- feat(analyzer): detect SSRF (cloud metadata, internal-network, dynamic-host requests) (d5c77535)
- feat(analyzer): add anti-refusal statement detection (AR1-AR3) (aa676942)
- address review feedback on #106 (6ca3b023)
- feat(report): add baseline / false-positive suppression (0767452f)
- style: format meta analyzer regression test (94579243)
- test: align meta analyzer drop cases with severity floor (ef192e77)
- style: format static runner filtering changes (8e96c144)
- style: format MP2 regex backtracking test (cdfa268b)
- Fix Windows path separators and console encoding (a80d45f5)
- fix(llm): isolate batch failures in Stage 2 and keep unanalysed findings (248bc87f)
- test(scoring): add regression test for input-order-dependent severity sort (d0234c72)
- fix(scoring): document confidence scaling, sort by severity within rule bucket (e6895df5)
- fix(patterns): fix lint and whitespace-bearing stuffing false negative (8a5f7d8a)
- fix(patterns): skip single-char repetitions in MP2 to avoid separator false positives (2bef07a6)
- fix(patterns): anchor MP2 regex to prevent catastrophic backtracking (c46c389e)
- ci: fix DCO check bypass and harden the CI workflow (de9aabaa)
- ci: add GitHub Actions CI/CD workflow (0f395273)
- fix(static-runner): remove .svg from binary extensions (6de794bc)
- fix(static-runner): exempt SKILL.md from PE3 .env doc filter (b50edd3e)
- fix(static-runner): skip binary/PDF files and filter PE3 .env doc references (ddf7d703)
- fix(security)(skillspector): unsafe deserialization via yaml load (b5c20b9f)
- fix(security)(skillspector): potential information disclosure via error message (bf2678c8)
- fix(analyzer): deduplicate PE4 findings per line to avoid double-reporting (cfeabd34)
- feat(analyzer): detect Docker socket access as PE4 privilege escalation (426a3348)
- feat(mcp): expose SkillSpector as an MCP server with scan_skill tool (2ad41c29)
- test(meta_analyzer): add regression tests for static findings with end_line=None (5720122d)
- fix(supply_chain): scan [build-system].requires in pyproject.toml (34a881d6)
- security(meta_analyzer): add severity-gated floor to apply_filter (45196904)
- chore(oss): exclude changelog from public snapshots (a035fb5e)
- test: align agent snooping same-line expectation (e17285ca)
- test: pin nv_build provider default expectation (d0337d91)
- style: format behavioral AST getattr detection (8c983330)
- style: format input handler SSRF changes (c5c091d4)
- test: remove unused sarif pytest import (5b9cd0f8)
- style: format meta analyzer fallback tests (dcf2da48)
- test: avoid duplicate agent snooping test class name (9cec5537)
- feat(report): add analysis_completeness field to JSON output (befa577e)
- fix(schemas): normalize confidence from 0-100 scale before Pydantic validation (f42d2062)
- chore: add perseus-ctx and mimir-mcp to popular PyPI packages (d653513c)
- feat(pi): add SkillSpector scan tool (d817291f)
- fix(static-patterns): restrict code-example hard-drop to non-executable files (bfda8a14)
- fix(multi-skill): address review nits - typing, dead code, help text, findings source (cbd464eb)
- fix(dedup): apply deduplication to score computation only, preserve all findings in report (664a9742)
- feat: support uv tool install and document in README (b6e15eea)
- fix(behavioral-ast): detect reflective exec via getattr() literal (AST9) (bf2142bc)
- fix(input-handler): disable HTTP redirect following to close SSRF bypass (180e798f)
- fix(report): filter empty LLM findings and add SARIF rules[] array (39edc051)
- fix(meta-analyzer): add severity floor, downweight instead of drop, fail-closed on LLM error (3ca60615)
- fix(static-patterns): filter false positives from documentation and code examples (8ac1a7ca)
- feat(cli): add --recursive flag for multi-skill directory scanning (261c47ac)
- fix(findings): deduplicate cross-analyzer findings before scoring (805ba8ec)
- fix(input-handler): validate git/download URLs against SSRF and add zip-slip protection (c6ff6a91)
- fix(meta-analyzer): add heuristic fallback filter for --no-llm mode (afb0206b)
- docs: document the integration contract and trust model (c5535334)
- fix(supply-chain): exclude pyproject metadata keys from dependency extraction (5f638465)
- feat: implement MCP rug pull analyzer and unit tests (69fff902)
- fix(sc4): pass version to OSV for all requirement operators, not just == and <= (96ca0728)
- fix: use OpenAI default model for OpenAI fallback (718ef1e3)
- feat(analyzer): detect skills snooping on the agent ecosystem (96f67f0b)
- docs: correct stale analyzer status and dangling references (01362fff)
- Revert "Merge branch 'keshavp/codex/revert-mr-43' into 'main'" (aff60d73)
- Revert "Merge branch 'github/pr-119' into 'main'" (a89979b4)
- feat(release): auto-generate CHANGELOG.md on each release (9e6f5590)
- style: format lint fixes for PR 156 (d24fedca)
- fix(yara): use content hash for rule cache invalidation (a47c7f76)
- fix(scoring): prevent risk score saturation via per-rule diminishing returns (b286cf0f)
- fix(meta-analyzer): keep LLM-confirmed findings when model returns end_line (47170c06)
- add openai project header (c7437d2d)
- fix(yara): reduce remote bootstrap false positives (20fb4045)
- feat(yara): add agent skill abuse signatures (c77a5e93)
- style: format OSV fallback changes (069e7721)
- style: format agent snooping analyzer (e07d48a1)
- style: format taint tracking tests (29a7d77c)
- style: format supply chain analyzer (128306dd)
- fix: avoid literal bidi controls in tests (73e14193)
- style: format anthropic proxy provider (1899b926)
- fix: reduce anthropic proxy sonar duplication (7a809c1d)
- feat: drop ge/le schema bounds on LLM finding confidence and start_line (14818cb3)
- fix(build_context): use forward-slash component paths (cross-platform) (01452ec1)
- fix(sc4): add global _last_query_ok declaration, validate env var, derive fallback count (d1d65395)
- fix(sc4): surface OSV.dev fallback warnings and add configurable timeout (1e601ec2)
- fix(supply-chain): require relative edit distance for SC6 typosquat detection (5b9a5dd3)
- feat(analyzer): add agent snooping detector (AS1/AS2/AS3) (d3b19633)
- fix(P2): add bidi control character detection (CVE-2021-42574 / Trojan Source) (2c672795)
- fix(meta_analyzer): parse stringified findings array from LLM (6d6d684a)
- fix(mcp): anchor TP3 loopback URL exemption to a host boundary (b9d7415c)
- fix(analyzers): resolve import aliases in AST and taint analyzers (5de942ec)
- fix: validate trusted source hosts for SC2 (86ffe27f)
- fix: restrict Python version to <3.14 due to jsonschema-rs/PyO3 incompatibility (6d2952f3)
- feat(provider): add anthropic_proxy provider for Vertex-style raw-predict endpoints (cc7bc744)
- chore: refresh uv lock for python 3.14 (0f544153)
- chore: widen python range to <3.15 and bump version to 2.2.1 (156dac75)
- Fixing â Release failed: uv.lock exists, but is not installed or is not on PATH (295f0539)
- Create native LangChain chat models per provider (3f1182f8)
- Revert "test: preserve default graph invocation in PR 45 import" (95e90724)
- test: preserve default graph invocation in PR 45 import (b4f94617)
- Reject invalid skill paths (c327071a)
- fix: add explicit returns in docker smoke test functions (69600455)
- docs: fix model registry path (f368b3f5)
- ci: extract Docker smoke suite (ec75bf3b)
- ci: add Docker GitHub URL smoke test (94ae8438)
- fix(docker): install git for repository scans (2311abc9)
- ci: add Docker smoke test (23d86bde)
- chore: add Docker build ignore file (832cbf29)
- docs: simplify Docker usage examples (71635d6a)
- fix: use official Python Docker base (6e619356)
- feat: adds dockerfile to run it without installing python (ea1f5de1)
- Revert "chore: bump version to 2.1.3" (e5eddfb4)
- Constrain supported Python versions (926bd038)
- Fix uv venv py-version (e010aada)
- fix: refresh uv lock during release (040cf3e0)
- Add contribution flow diagrams (6461595d)
- Make contribution sync flows explicit (276b3217)
- Remove copy-pr-bot references (50a877b7)
- Clarify external PR import docs (f7f233cc)
- Reorganize GitHub release docs (82c34f16)
- Add GitHub PR import skill (a314914e)
- Revert "chore: bump version to 2.1.2" (0ad91c2b)
- fix(mcp): make TP3 (and parameter-scoped TP1/TP2) reachable on real scans (ae7999c9)
- Add SkillSpector GitHub release skill (a19a79b3)
- Skip eval dataset prose in static scans (f88878f2)
- chore: add security policy (ad4306ff)
- chore: drop guardrail integration files (4f4ced8b)
- chore(oss): strip OSS_RELEASE.md and the release script from snapshots (2a77d9a4)
- chore(oss): switch release script to orphan branch (b1469aa8)
- Revert "docs(cli): drop nv_inference from scan --help" (403a0e30)
- docs(cli): drop nv_inference from scan --help (815a7ffa)
- docs(oss): sanitize internal references from user-facing files (424814d0)
- chore(oss): drop broken make typecheck target (138a601e)
- test(oss): mark SDI fixture tests as integration; fix nv_inference detection (461966f8)
- docs(oss): trim OSS_RELEASE.md to the how-to section only (fa6a4c85)
- chore(oss): rename make-public.sh to create-oss-release.sh, auto-name + pull main (2fe3be79)
- chore(oss): split Makefile + consolidate internal-only files (eff85296)
- feat(providers): selectable provider + per-provider model defaults (3a2735d9)
- refactor(providers): per-package layout with bundled YAML registries (f718d112)
- chore: remove agent metadata from OSS config (daf46789)
- refactor(providers): isolate NVIDIA-specific code behind a single registration (0d0bbbb9)
- chore(oss): prepare branch for public OSS release (ef9af648)
- feat(llm): generalize credential resolution for OSS-default endpoints (d3585465)
- refactor(metadata): introduce ModelMetadataProvider abstraction (cc3d8a5b)
- feat(tracing): support LANGCHAIN_TAGS_EXTRA env var for LangSmith tags (2ba416cb)
- feat(tracing): support LANGCHAIN_TAGS_EXTRA env var for LangSmith tags (b4a1f07a)
- feat(mcp): MCP analyzers, Apache 2.0 license migration, and OSS compliance (b365956c)
- LangSmith Tracing + Integration Test Fixes (4338a727)
- docs(mcp): address review nitpicks on B.3.1 and B.3.2 docs (ea356a7e)
- docs(mcp): add detailed documentation for B.3.1 and B.3.2 analyzers (fb91c3d4)
- fix(mcp): move noqa directive to correct line for ruff S603 suppression (33f4b56f)
- fix(mcp): address CodeRabbit review feedback (79b46a9e)
- test(mcp): add full-pipeline integration tests for SARIF and end-to-end (92b2fd6b)
- feat(mcp): implement B.3.2 TP4 LLM description-behavior mismatch (f01eff3b)
- feat(mcp): implement B.3.2 TP1-TP3 static metadata poisoning detection (385fc1dd)
- feat(mcp): implement B.3.1 mcp_least_privilege (LP1-LP4) (af966514)
- feat(mcp): add MCP pattern categories, LP/TP rule registry entries, and test fixtures (d1b5aa0c)
- Detects markdown code blocks (```), code-comment indicators (// â, // â, // GOOD:, // BAD:), and documentation keywords (2693ce1f)
- Reduce false positives for Dockerfile idioms and CI/CD docs (21d63934)
- Removed duplicate tests (fac3a542)
- TM1 (Tool Parameter Abuse) - 19 false positives fixed: (0f89749a)
- Move skillspector-specific safe patterns and LLM key checks from nv-base into skillspector (881fb4c8)
- feat: added yara based analyzer (c86747d6)
- feat: implement data-flow analyzer: sources -> sinks (20415b6c)
- Implement
semantic_developer_intentanalyzer (SADD B.4.2) (f8033c91) - Replace hardcoded CVE lists with live OSV.dev vulnerability lookups (SC4) (40bdf9d6)
- Implement semantic_security_discovery analyzer (SADD B.4.1) (8515f36a)
- Implement
semantic_quality_policyanalyzer (SADD B.4.3) and fix meta_analyzer finding duplication bug (80e921aa) - Implement static analyzers (EA, OH, P6-P8, MP, TM, RA) and extend supply chain (SC4-SC6, TR1-TR3) (6bc171b6)
- Ignore .claude/ (84260e98)
- Revert "chore: bump version to 0.3.1" (29c367de)
- Revert "chore: bump version to 0.3.2" (04e681ed)
- feat: LLMAnalyzerBase — reusable base class for LLM-powered analyzer nodes (14e611ff)
- feat: implemented analyzer for dangerous execution chains (b14945cc)
- Restore dev changes: guardrails, typer compatibility, docs, and finding output shape (2743a7b0)
- Revert to state at d74cbf9: undo merge keshavp/dev, guardrail update, typer downgrade, docs, finding output (10265b5b)
- Update guardrail version (d8ee92b6)
- downgrade typer version for compatibility with nv-base (6b6b6cb2)
- docs: clarify venv setup and uv/pip fallback in Makefile and docs (542b20d0)
- feat: full finding output shape and Finding model cleanup (b3a21d51)
- Revert "chore: bump version to 0.4.0" (3bdd8037)
- add Skillspector v2 LangGraph workflow scaffold (e2fd3849)
- Replace generic LLM unavailable message with pattern-specific explanations (43d93a4b)
- Unify LLM access via NVIDIA Inference Hub (6acbbeae)
- docs: condense RELEASE.md for clarity (3924841e)
- Integration with NV-BASE (7bc31c25)
- docs: update installation and release management instructions (afbb25bb)
- chore: add Makefile with development and build targets (23d82b78)
- feat: add Poetry auth.toml credential support to release script (2a1ca938)
- feat: add release script for nv-shared-pypi publishing (a508243f)
- Update GitLab Issues link to new demos space (f2eaad9a)
- Initial commit (ebf1418d)
- Add all 15 vulnerability patterns and author info (4d79c612)
- Initial commit: SkillSpector security scanner for AI agent skills (d2940d39)
- Initial commit (558c5be3)