You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 35a52d6
Browse filesBrowse the repository at this point in the historyBrowse files
* mono - chore: defense - harden GitHub Actions
Pin every action to a commit SHA, wrap installs with Socket Firewall,
lint workflows with zizmor, require frozen lockfiles, and drop
credential persistence on read-only checkouts.
Co-authored-by: Jared Wray <me@jaredwray.com>
* mono - chore: defense - record PR #1701 on Actions items
Co-authored-by: Jared Wray <me@jaredwray.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
-[ ] Lockfile committed; CI installs with `pnpm install --frozen-lockfile` (PR #1701 pending)
22
22
-[x] No `.github/dependabot.yml`; other dependency-update tools (if any) open PRs only — never auto-merge — verified 2026-08-24
23
23
24
24
## 4. GitHub Actions
25
25
-[x]`permissions: contents: read` (or `{}` + per-job grants) on every workflow — verified 2026-08-24
26
26
-[x] No `contents: write` except jobs whose purpose is mutating the repo (GitHub Release, Changesets version PR); generated output is a workflow artifact, never committed back from CI — verified 2026-08-24
27
-
-[ ] Every action pinned to a full commit SHA (`npx actions-up`)
28
-
-[ ] Every job installs Socket Firewall (`SocketDev/action` SHA-pinned, `firewall-version` pinned); `pnpm install` / `npm install` run as `sfw pnpm install` / `sfw npm install`
29
-
-[ ]`.github/workflows/check-workflows.yaml` lints workflows with zizmor on every PR
30
-
-[ ] Workflow `name:` and job `name:` contain no spaces (kebab-case) so they can be set as required status checks
31
-
-[ ]`persist-credentials: false` on checkouts that don't push
27
+
-[ ] Every action pinned to a full commit SHA (`npx actions-up`) (PR #1701 pending)
28
+
-[ ] Every job installs Socket Firewall (`SocketDev/action` SHA-pinned, `firewall-version` pinned); `pnpm install` / `npm install` run as `sfw pnpm install` / `sfw npm install` (PR #1701 pending)
29
+
-[ ]`.github/workflows/check-workflows.yaml` lints workflows with zizmor on every PR (PR #1701 pending)
30
+
-[ ] Workflow `name:` and job `name:` contain no spaces (kebab-case) so they can be set as required status checks (PR #1701 pending)
31
+
-[ ]`persist-credentials: false` on checkouts that don't push (PR #1701 pending)
32
32
-[x] No `pull_request_target` on workflows that run untrusted PR code — verified 2026-08-24
Copy file name to clipboardExpand all lines: SECURITY.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ We will acknowledge receipt, work with you on a coordinated disclosure timeline,
23
23
This repository follows the [defense-in-depth](https://github.com/jaredwray/agentic/blob/main/skills/security/defense-in-depth-nodejs/SKILL.md)
24
24
hardening checklist; progress is tracked in [DEFENSE_IN_DEPTH.md](./DEFENSE_IN_DEPTH.md). Measures currently in place:
25
25
26
-
- CI workflows default to read-only `contents: read` permissions.
26
+
- CI workflows default to read-only `contents: read` permissions; generated output is never committed back from CI; every action is pinned to a full commit SHA; Socket Firewall (`sfw`) wraps `pnpm install`; workflows are security-linted with zizmor on every PR.
27
27
- npm publishing authenticates with OIDC trusted publishing; there are no npm tokens in Actions secrets.
28
28
- pnpm is pinned via `packageManager` (`pnpm@11.5.1`), and the lockfile is committed.
29
29
- Dependencies install through pnpm with a 7-day cooldown on new versions, lifecycle scripts blocked by default, and `trustPolicy: no-downgrade`.
0 commit comments