Security
Build and Release Integrity
DBCode’s source is closed. The process that turns it into the package you install is not: every release is built by a public GitHub Actions workflow you can read and watch run. This page walks the pipeline and shows how to verify a release yourself. Every release from v1.36.6 onward is built and attested through this pipeline; earlier releases were built by the previous, private release process.
The pipeline, in public
Section titled “The pipeline, in public”Releases are built by
build-and-publish.yml
in the public repository, and every run is visible in the
Actions history
with full logs. The workflow:
- Checks out the private source at an exact commit with a read-only
deploy key, then verifies that commit matches the release tag and the
version in
package.json. A dispatch that does not match the tag fails the run. - Stamps provenance into the package. The source repository, source
commit, version, and a link to the workflow run are written into
build-provenance.jsoninside the package, so the artifact records what produced it. - Builds and packages from a committed lockfile. Nothing resolves at release time.
- Scans the package with two antivirus engines before anything ships: ClamAV with heuristics and PUA detection, and Windows Defender configured with cloud-delivered protection, sample submission, and PUA blocking. Any detection blocks the release for investigation. There is no allowlist step.
- Attests the package with Sigstore, via GitHub artifact attestations. This runs only after both scans pass, so only clean artifacts are signed. Sigstore log entries are public and permanent.
- Publishes the same bytes everywhere: the GitHub release (with the SBOM attached), the VS Code Marketplace, and Open VSX.
Verify a release yourself
Section titled “Verify a release yourself”You need the GitHub CLI. Download any release’s
.vsix and run:
gh attestation verify dbcode-<version>.vsix --repo dbcodeio/publicVerification succeeds for every release from v1.36.6 onward and reports the
workflow that built the file:
dbcodeio/public/.github/workflows/build-and-publish.yml. Run it against an
older release and it fails, because GitHub has no attestation on record for a
file the previous, private process built. That failure is expected, not an
incident.
The verification proves the exact file you hold was produced by this repository’s workflow, at a recorded commit, on GitHub’s runners, and has not been altered since. If verification fails for a release that should carry an attestation, treat it as an incident and tell us: security@dbcode.io.
Static analysis
Section titled “Static analysis”DBCode’s extension source is closed, so you cannot watch these runs the way
you can watch the build pipeline above. Static analysis still gates every
release: CodeQL, configured through GitHub’s advanced setup (a workflow we
own, not GitHub’s default), scans the actions, javascript-typescript, and
python languages present in the private source repository, using the
standard CodeQL query suite. Only the test tree, which is not part of the
shipped package, is excluded.
The analysis runs as the first step of every release, and the release refuses to start while any CodeQL alert is open, so nothing ships with an unresolved finding. An alert is cleared by fixing it, or by dismissing it with a recorded reason. The scanning action itself is pinned to a commit SHA and kept current by Dependabot.
Supply chain hygiene
Section titled “Supply chain hygiene”- Dependencies are pinned by a committed lockfile and installed with
--frozen-lockfileeverywhere, including the release build. - New dependency versions must age for 7 days before they can be installed, which blunts compromised-package releases.
- Every GitHub Actions step is pinned to a full commit SHA, not a mutable tag.
- Secret scanning (gitleaks) runs on every pull request across the full history, with a pre-commit hook scanning staged content locally.
- Every pull request is checked by Socket, which scores each dependency for malware, install scripts, obfuscated code and typosquats. It is a required check, so a flagged dependency cannot merge.
- Every pull request is also checked against the OSV vulnerability database, and a known vulnerability in a production dependency blocks the merge. A weekly scheduled scan repeats the check, which catches CVEs disclosed against dependencies nobody has touched recently. Exceptions are tracked with expiry dates instead of being silenced permanently.
What this does and does not prove
Section titled “What this does and does not prove”Attestation proves where the bytes came from and that they were not modified. It does not prove the source is defect-free, and closed source means you cannot read it. The rest of the security story is built for that gap: the egress table tells you what the extension can do on the wire and how to check it, and the SBOM tells you what is inside.