ci: route publish dependency installs through Socket Firewall - #55
Open
peakematt wants to merge 4 commits into
Open
ci: route publish dependency installs through Socket Firewall#55peakematt wants to merge 4 commits into
peakematt wants to merge 4 commits into
Conversation
Wrap the release publish job's pnpm install with the WorkOS Socket Firewall setup and restore public registry access via the same-SHA teardown before publication. Preserves provenance, OIDC, tags, and publish semantics.
peakematt
marked this pull request as ready for review
September 8, 2026 20:33
Comment on lines
+34
to
+37
| - name: Configure Socket Firewall | ||
| uses: workos/setup-socket-firewall@ca93dd8aa351f54f4729fe3377a9be23c631c25d # v1 | ||
| with: | ||
| token: ${{ secrets.PUBLIC_SOCKET_FIREWALL_TOKEN }} |
Contributor
There was a problem hiding this comment.
🔴 Release installs lose firewall authentication
In release jobs, setup-node replaces NPM_CONFIG_USERCONFIG after the firewall writes its token. pnpm install selects the firewall registry but reads credentials from the replacement file. The publish job fails on an unauthorized dependency download.
Prompt for agents
The publish job configures Socket Firewall before actions/setup-node. setup-node receives registry-url and then creates RUNNER_TEMP/.npmrc, exports NPM_CONFIG_USERCONFIG to that file, and adds only its npm registry placeholder. Socket Firewall configured the token in HOME/.npmrc because NPM_CONFIG_USERCONFIG did not exist yet. The later pnpm install retains PNPM_CONFIG_REGISTRY pointing at Socket Firewall but loads credentials from setup-node's temporary file, so the firewall token is unavailable. Reorder or repeat configuration so Socket Firewall writes authentication into the final NPM_CONFIG_USERCONFIG while still protecting the pnpm/action-setup bootstrap, then preserve the teardown before publication.
Was this helpful? React with 👍 or 👎 to provide feedback.
Contributor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The release workflow and regular CI both download public npm packages before code runs or publishes. This change routes those public package downloads through WorkOS Socket Firewall, including the
pnpm/action-setupbootstrap and the projectpnpm installsteps.CI remains safe for external fork pull requests: workflow permissions are read-only, checkout does not persist credentials, and Socket Firewall enables the validated external-fork fallback only in those ordinary
pull_requestjobs. The same jobs stay fail-closed when the public token is available on trusted push, same-repository pull request, or Dependabot runs. The title-checkpull_request_targetworkflow still does not checkout or execute repository code.The release publish job stays fail-closed with no fork fallback. Socket Firewall now starts before pnpm setup and
actions/setup-node, then teardown restores the public registry immediately after the last dependency download and before the local build andpnpm publish. Release Please, tag selection, public access, provenance, OpenID Connect, and the publish commands are unchanged.Manual verification: read the workflow order in
.github/workflows/ci.ymland.github/workflows/release.yml, then check the latest pull request checks. CI and Lint PR Title pass on the current head. The release workflow is still main-only and was not manually dispatched.