Skip to content

chore(claude+deps): programmatic-Claude lockdown rule + skill + pnpm v11.0.0 GA bump#630

Open
John-David Dalton (jdalton) wants to merge 3 commits intomainfrom
chore/programmatic-claude-lockdown
Open

chore(claude+deps): programmatic-Claude lockdown rule + skill + pnpm v11.0.0 GA bump#630
John-David Dalton (jdalton) wants to merge 3 commits intomainfrom
chore/programmatic-claude-lockdown

Conversation

@jdalton
Copy link
Copy Markdown
Contributor

@jdalton John-David Dalton (jdalton) commented Apr 28, 2026

Summary

  • CLAUDE.md — adds one bullet alongside the existing security 🚨 rules requiring all four lockdown flags on any programmatic Claude callsite (--tools/tools, --allowedTools/allowedTools, --disallowedTools/disallowedTools, --permission-mode dontAsk/permissionMode: 'dontAsk').
  • .claude/skills/programmatic-claude-lockdown/SKILL.md — new fleet-canonical skill (cascaded from socket-repo-template) holding the four-flag table, both recipes (read-only and Bash-needing), the never-do list, and the reference impl pointer.
  • package.json — packageManager pnpm@11.0.0-rc.5pnpm@11.0.0 (GA); engines.pnpm >=11.0.0-rc.0>=11.0.0
  • external-tools.json — pnpm version + 6 platform sha256s bumped to v11.0.0 release tarballs

Why (lockdown)

Following https://code.claude.com/docs/en/agent-sdk/permissions: permissionMode: 'default' in headless contexts falls through to a missing canUseTool callback, which is undefined behavior. The doc's prescribed lockdown recipe is 'dontAsk' paired with tools (definition-level base set the model is told about), allowedTools (auto-approve) and disallowedTools (deny-first defense-in-depth that wins even against bypassPermissions).

Reference impl: socket-lib/tools/prim/src/disambiguate.mts (SDK form, with source-text test guards in tools/prim/test/disambiguate.test.mts that fail the build if BASE_TOOLS widens, if tools: BASE_TOOLS is unwired, or if permissionMode drifts from 'dontAsk'). socket-registry/.github/workflows/weekly-update.yml uses the Bash-needing CLI form (narrowed Bash(...) allowlist for pnpm/git/jq; explicit Bash(curl:*)/Bash(wget:*)/Bash(rm -rf*)/Bash(sudo:*)/Bash(npx:*) denials).

Why (pnpm v11.0.0 GA)

pnpm v11 is now stable: https://github.com/pnpm/pnpm/releases/tag/v11.0.0
This repo's pnpm-workspace.yaml is already on the v11 idioms (allowBuilds, pmOnFail, minimumReleaseAge); lockfile shape unchanged from rc.5.

Test plan

  • CI passes

Cascaded from socket-repo-template. CLAUDE.md gains one bullet
alongside the other security 🚨 rules; the skill at
.claude/skills/programmatic-claude-lockdown/SKILL.md holds the
four-flag table (`tools`/`allowedTools`/`disallowedTools`/
`permissionMode: 'dontAsk'`), both recipes (read-only and
Bash-needing), and the never-do list.

Reference impl: socket-lib/tools/prim/src/disambiguate.mts (SDK form);
socket-registry weekly-update.yml uses the Bash-needing CLI form.
pnpm v11 is now stable: https://github.com/pnpm/pnpm/releases/tag/v11.0.0

- package.json: packageManager pin "pnpm@11.0.0-rc.5" → "pnpm@11.0.0";
  engines.pnpm ">=11.0.0-rc.0" → ">=11.0.0".
- external-tools.json: bump version + 6 platform sha256s (darwin
  arm64/x64, linux arm64/x64, win arm64/x64). Hashes computed locally
  from the v11.0.0 release tarballs.

pnpm-workspace.yaml already on the v11 idioms (allowBuilds,
pmOnFail, minimumReleaseAge); lockfile shape unchanged.
@jdalton John-David Dalton (jdalton) changed the title docs(claude): add programmatic-Claude lockdown rule + skill chore(claude+deps): programmatic-Claude lockdown rule + skill + pnpm v11.0.0 GA bump Apr 28, 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