From fdc00fdbbec338eeea57759af143a6305a2ef233 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 24 Aug 2026 23:09:59 +0000 Subject: [PATCH 1/2] mono - chore: defense - mark CODEOWNERS item as merged Reconcile DEFENSE_IN_DEPTH.md after #1704 landed and mention the CODEOWNERS file in the public SECURITY.md summary. Co-authored-by: Jared Wray --- DEFENSE_IN_DEPTH.md | 2 +- SECURITY.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/DEFENSE_IN_DEPTH.md b/DEFENSE_IN_DEPTH.md index eb152cfa..ea964219 100644 --- a/DEFENSE_IN_DEPTH.md +++ b/DEFENSE_IN_DEPTH.md @@ -9,7 +9,7 @@ Profile: npm library · public - [x] `DEFENSE_IN_DEPTH.md` present (this file) — PR #1698 ## 2. CODEOWNERS and cloud bootstrap -- [ ] `.github/CODEOWNERS` covers `/.github/`, `/.cursor/`, `/.devcontainer/`, `/scripts/` with owners the maintainer names (PR #1704 pending) +- [x] `.github/CODEOWNERS` covers `/.github/`, `/.cursor/`, `/.devcontainer/`, `/scripts/` with owners the maintainer names — PR #1704 - [x] Codespaces and Cursor Cloud Agents bootstrap Aikido Safe Chain via scripts/setup-cloud-environment.sh (--ci shims, frozen lockfile) — PR #1699 ## 3. Dependencies (pnpm) diff --git a/SECURITY.md b/SECURITY.md index 19cd3d1b..6226bc7b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -30,3 +30,4 @@ hardening checklist; progress is tracked in [DEFENSE_IN_DEPTH.md](./DEFENSE_IN_D - There is no `.github/dependabot.yml`. - Codespaces and Cursor Cloud Agents install through Aikido Safe Chain; package-manager shims must not be bypassed. - Socket reviews every dependency change; Aikido scans every build. +- `.github/CODEOWNERS` names owners for `/.github/`, `/.cursor/`, `/.devcontainer/`, and `/scripts/`. From a8883342f679ed146db45970a597e61d3e5bf3df Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 24 Aug 2026 23:10:48 +0000 Subject: [PATCH 2/2] mono - chore: defense - record lockdown-repo.sh apply MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Check off § 7 after the admin apply and list the live GitHub settings in SECURITY.md. Account 2FA and npm registry manuals stay open. Co-authored-by: Jared Wray --- DEFENSE_IN_DEPTH.md | 2 +- SECURITY.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/DEFENSE_IN_DEPTH.md b/DEFENSE_IN_DEPTH.md index ea964219..f1808e4c 100644 --- a/DEFENSE_IN_DEPTH.md +++ b/DEFENSE_IN_DEPTH.md @@ -49,4 +49,4 @@ Profile: npm library · public ## 7. Repository lockdown - [ ] Phishing-resistant 2FA (passkeys / hardware keys) on the GitHub and npm accounts (manual) - [ ] Recovery codes stored offline in a password manager (manual) -- [ ] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) +- [x] `lockdown-repo.sh` applied by a repo admin (never committed to this repo); `--check` with `--required-checks` and `--allowed-actions` passes (PRs required on the default branch, merges blocked unless required status checks pass, tag ruleset, immutable releases, fork-PR approval (public repos), read-only workflow tokens, Actions allowlist, secret scanning, Dependabot disabled, private vulnerability reporting (public repos)) — PR #1705 diff --git a/SECURITY.md b/SECURITY.md index 6226bc7b..79ac219b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,6 +23,9 @@ We will acknowledge receipt, work with you on a coordinated disclosure timeline, This repository follows the [defense-in-depth](https://github.com/jaredwray/agentic/blob/main/skills/security/defense-in-depth-nodejs/SKILL.md) hardening checklist; progress is tracked in [DEFENSE_IN_DEPTH.md](./DEFENSE_IN_DEPTH.md). Measures currently in place: +- All changes land through pull requests — direct pushes to `main` are blocked, and merging requires passing status checks. +- Tags can only be created by repository admins; published GitHub Releases are immutable (assets and tags cannot be changed after publish). +- Workflow runs from outside collaborators always require maintainer approval, and only allowlisted GitHub Actions can run. - 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. - npm publishing authenticates with OIDC trusted publishing; there are no npm tokens in Actions secrets. CI packs tarballs and stages them with `pnpm stage publish`; a maintainer promotes the staged version. The release job `needs` a passing Aikido `scan-release`. - pnpm is pinned via `packageManager` (`pnpm@11.5.1`), and the lockfile is committed.