Adds a configurable exit code for API / infrastructure failures (timeouts,
network errors, unexpected exceptions), so CI pipelines can distinguish them
from blocking security findings (exit 1):
socketcli --exit-code-on-api-error 100 ...
Default is 3 (the code the CLI already used for these errors), so default
behavior is unchanged — the exit code only changes when you pass the flag.
Set it to a Buildkite soft_fail code, or to 0 to swallow infra errors.
Interaction to be aware of: --disable-blocking forces exit 0 for all
outcomes and therefore overrides --exit-code-on-api-error. Use the new flag
without --disable-blocking if you want a custom infra-error code to take
effect. See the exit-code reference in the README.
A future
3.0release is planned to make infrastructure errors exit non-zero even under--disable-blocking(so outages stop being silently swallowed). That is a breaking change and is intentionally not in this release.
--commit-message values longer than 200 characters are now automatically
truncated before being sent to the API, preventing HTTP 413 errors from
oversized URL query parameters (common with AI-generated commit messages or
$BUILDKITE_MESSAGE).
When running inside a Buildkite job (BUILDKITE=true), infrastructure errors
emit Buildkite log section markers (^^^ +++ / --- :warning:) so the error
section auto-expands in the BK UI, plus a soft_fail hint. No effect on other
CI platforms.
--timeoutis now honored end-to-end: it was only applied to the localCliClient, but the full-scan diff comparison uses the Socket SDK instance, which was constructed without the CLI timeout and defaulted to 1200s.--exclude-license-detailsnow propagates to the full-scan diff comparison request (it was only applied to full-scan params / report URLs before).
- Bundled twelve Dependabot dependency updates:
urllib3,gitpython,python-dotenv,pytest,uv,cryptography,pygments,requests, andidna(main app), plusaxios,requests, andflask(e2e fixtures).idna3.11 → 3.15 includes the fix for CVE-2026-45409. - Added
.github/dependabot.ymlwith grouped weekly updates, a 7-day cooldown, and e2e fixtures excluded. - Added a
dependabot-reviewworkflow that runs Socket Firewall (sfw) install checks on Dependabot PRs with no API token required. - Added a
uv.lockdrift check, an import smoke test, andpip-auditto the test workflow; skipped e2e tests on Dependabot PRs. - Tidied
.gitignoreand backfilled missing CHANGELOG entries for2.2.81,2.2.85,2.2.86,2.2.88,2.2.89,2.2.91, and2.2.92.
- Fixed dependency-overview rendering for unmapped alert types: alert types the SDK
has no metadata for now fall back to a humanized Title-Cased label (e.g.
gptDidYouMean-> "Possible typosquat attack (GPT)",SQLInjection-> "SQL Injection") instead of surfacing the raw camelCase identifier.
- Added legal/compliance artifact presets (
--legal) and FOSSA-compatible output shapes (--legal-format fossa) for license and SBOM reporting.
- Migrated license enrichment PURL lookup to the org-scoped endpoint (
POST /v0/orgs/{slug}/purl) from the deprecated global endpoint (POST /v0/purl).
- Added
uv.lockto the version-incrementation CI check so apyproject.toml/__init__.pyversion bump without a matching lockfile sync no longer slips through. - Updated the local Python pre-commit hook to keep
uv.lockin sync withpyproject.tomlandsocketsecurity/__init__.pyversion changes automatically.
- Added
bun.lock,bun.lockb, andvlt-lock.jsonto the recognized manifest files for Socket scanning, with matching unit-test coverage.
- Bumped
socketdevto>=3.0.33,<4.0.0to pick up the SDK fix for unknown alert categories (the SDK previously crashed while deserializing diff alerts when the API returned a category like"other"). - Normalized diff artifacts with
score=Noneto an empty score map in the CLI model layer; PR-comment dependency-overview rendering no longer crashes on missing or partial score data. - Defaulted missing badge values to a valid
100%fallback rather than producing invalid badge URLs.
- Added four hidden
--reach-continue-on-*flags in preparation for Coana CLI v15:--reach-continue-on-analysis-errors,--reach-continue-on-install-errors,--reach-continue-on-missing-lock-files,--reach-continue-on-no-source-files. Each forwards to the matching Coana flag and opts out of one of Coana v15's new halt-by-default behaviors. No-op against today's default Coana version; will take effect automatically once Coana v15 becomes the default.
- Fixed branch detection in detached-HEAD CI checkouts. When
git name-rev --name-only HEADreturned an output with a suffix operator (e.g.remotes/origin/master~1,master^0), the~N/^Nwas previously passed through as the branch name and rejected by the Socket API as an invalid Git ref. The suffix is now stripped before the prefix split, producing the bare branch name.
- Fixed GitLab security report schema compliance: corrected schema validation errors so Socket-produced reports parse cleanly under GitLab's dependency-scanning ingestion.
- Populated scan alert data in the GitLab security report so previously-empty alert sections now carry the expected findings.
- Hardened GitHub Actions workflows.
- Fixed broken links on PyPI page.
- Updated minimum required Python version.
- Tweaked CI checks.
- Fixed reachability filtering.
- Added config file support.
- Fixed
has_manifest_filesfailing to match root-level manifest files.
- Added SARIF file output support.
- Improved reachability filtering.
- Fixed
workspaceflag regression by updating SDK dependency.
- Added
--workspaceflag to CLI args. - Added GitLab branch protection flag.
- Added e2e tests for full scans and full scans with reachability.
- Bumped dependencies:
cryptography,virtualenv,filelock,urllib3.
- Added
straceto the Docker image for debugging purposes.
- Set the scan to
'socket_tier1'when using the--reachflag. This ensures Tier 1 scans are properly integrated into the organization-wide alerts.
- Added
--reach-enable-analysis-splittingflag to enable analysis splitting (disabled by default). - Added
--reach-detailed-analysis-log-fileflag to print detailed analysis log file path. - Added
--reach-lazy-modeflag to enable lazy mode for reachability analysis. - Changed default behavior: analysis splitting is now disabled by default. The old
--reach-disable-analysis-splittingflag is kept as a hidden no-op for backwards compatibility.
- Included PyPy in the Docker image.
- Fixed Dockerfile to set
GOROOTto/usr/lib/gowhen using system Go (GO_VERSION=system) instead of always using/usr/local/go.
- Removed process timeout from reachability analysis subprocess. Timeouts are now only passed to the Coana CLI via the
--analysis-timeoutflag.