Skip to content

ci: align security jobs with the house standard - #2

Closed
owen0x6f wants to merge 1 commit into
fix/identifier-allowlistfrom
ci/align-with-house-standard
Closed

ci: align security jobs with the house standard#2
owen0x6f wants to merge 1 commit into
fix/identifier-allowlistfrom
ci/align-with-house-standard

Conversation

@owen0x6f

@owen0x6f owen0x6f commented Aug 4, 2026

Copy link
Copy Markdown

Aligns this repo's security CI with coco-dashboard, per Owen's instruction to follow that pattern and use no paid services.

Stacked on PR #1 (base is fix/identifier-allowlist, not main) so it does not conflict with the allowlist/secret-scan fixes still under review there.

Added — the two jobs coco-dashboard has that this repo lacked:

  • Semgrepsemgrep/semgrep container, --config auto --error --severity ERROR, same invocation as coco-dashboard/.github/workflows/sast.yml.
  • Dependency auditnpm audit --audit-level=high. This package declares no dependencies and ships no lockfile, so it passes trivially today. Wired up regardless so the audit becomes real and blocking the moment a dependency appears, rather than being something someone must remember to add later.

Not added — OSV-Scanner. It scans a lockfile; with zero dependencies and no lockfile there is nothing for it to report on. A job that always reports "nothing found" because it is looking at nothing is worse than no job: it reads as coverage. Worth revisiting the moment this package gains dependencies.

CodeQL kept, not replaced — measured, not assumed. It is free on public repositories, and it caught a real high-severity ReDoS in this repo's own guard script. I ran Semgrep --config auto (200 rules) against that exact pattern in isolation: 0 findings. So Semgrep would not have caught it, and swapping CodeQL out for consistency would have traded a control that has already proven itself for one that missed this class.

Correction to something I reported earlier. I said gitleaks detect "only scans history, not the working tree," implying the coco-dashboard invocation has a blind spot. That over-reached: in CI with fetch-depth: 0 the checkout's tree is committed content, so history mode covers everything in the PR. The tree-vs-history distinction matters for local or pre-commit use, not for a CI checkout. The two-step scan in PR #1 is still slightly more robust (it also covers generated or untracked files) but the house pattern was not broken.

Adds the two security jobs coco-dashboard runs that this repo lacked:

- Semgrep (semgrep/semgrep container, --config auto --error --severity ERROR)
- dependency audit via npm audit --audit-level=high

CodeQL is kept rather than replaced. It is free on public repositories, and it
caught a high-severity ReDoS in this repo's own guard script that Semgrep's 200
auto rules did not flag when run against the same pattern -- so the two are
complementary and dropping either would lose coverage.

OSV-Scanner is not included: it scans a lockfile, and this package declares no
dependencies and ships no lockfile, so the job would report on nothing.
@boot-coco
boot-coco deleted the branch fix/identifier-allowlist August 4, 2026 11:23
@boot-coco boot-coco closed this Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants