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
bug(release): production dependency audit blocks macOS release builds #965
Release macOS App (.github/workflows/release.yml), dispatched on main with publish_release=false, runs through to packaging and produces the arm64 and x64 .dmg/.zip artifacts. This is the gate before signing and notarization can be tested with the new Apple Developer account.
Actual
The build-app job's Audit production dependencies step (npm run audit:production = npm audit --omit=dev --audit-level=high) exits 1 against main's lockfile. The step runs before Prepare bundled runtime tools, Build app and the whole package-macos job, so no packaging, structural verification or smoke test runs.
Two high advisories, both in transitive production dependencies with in-range fixes:
The same audit also reports moderate advisories in hono, @hono/node-server and qs, all with in-range fixes. These do not fail the gate.
Reproduction / evidence
git show origin/main:package.json and git show origin/main:package-lock.json (at d12cd347) into an empty directory, then npm audit --omit=dev --audit-level=high --package-lock-only: exit 1, summary {"moderate":6,"high":2}.
Confirmed in CI: run 34739188324 on d12cd347 passed install, type-check, Workflow MCP tests and the integration/renderer tests on macos-latest, then failed at Audit production dependencies with 8 vulnerabilities (6 moderate, 2 high), exit code 1. package-macos was skipped. Fix: #966.
Second blocker, found once the audit passed on the fix branch. Run 34739476044 passed type-check, tests, audit, runtime-tool preparation and the app build, then Package macOS artifacts failed with ⨯ /Users/runner/work/agent-code/agent-code not a file.
Cause: release.yml passes ${{ secrets.CSC_LINK }}, which is "" when the secret is missing. electron-builder's getCscLink accepts an empty string as a set value and resolves it as a certificate path (the repo root). scripts/package-mac.mjs chose the unsigned branch but left the empty variable in the child env. Fixed in #966 by deleting empty CSC_LINK/CSC_NAME/CSC_KEY_PASSWORD first.
Third blocker, found once packaging ran. Run 34739982565 built both .app bundles, then verify-packaged-mac failed with required packaged executable missing or not executable: …/out/main/runtime/hotkey-helper/AgentCodeDictationHotkeyHelper.
Cause: build-app hands out/ to package-macos through actions/upload-artifact, which zips without file modes (every file comes back 644, per its README). The hotkey helper, and the bundled tmux/cloudflared/mitmproxy binaries behind it, lose the execute bit before packaging. Fixed in #966: out/ is now uploaded as a tar and unpacked in package-macos.
Activity
Juliusolsson05 commentedon Sep 13, 2026
Confirmed in CI: run 34739188324 on
d12cd347passed install, type-check, Workflow MCP tests and the integration/renderer tests onmacos-latest, then failed at Audit production dependencies with8 vulnerabilities (6 moderate, 2 high), exit code 1.package-macoswas skipped. Fix: #966.fix(release): treat empty signing secrets as unset when packaging
Juliusolsson05 commentedon Sep 13, 2026
Second blocker, found once the audit passed on the fix branch. Run 34739476044 passed type-check, tests, audit, runtime-tool preparation and the app build, then
Package macOS artifactsfailed with⨯ /Users/runner/work/agent-code/agent-code not a file.Cause:
release.ymlpasses${{ secrets.CSC_LINK }}, which is""when the secret is missing. electron-builder'sgetCscLinkaccepts an empty string as a set value and resolves it as a certificate path (the repo root).scripts/package-mac.mjschose the unsigned branch but left the empty variable in the child env. Fixed in #966 by deleting emptyCSC_LINK/CSC_NAME/CSC_KEY_PASSWORDfirst.fix(release): keep executable bits across the build/package job handoff
Juliusolsson05 commentedon Sep 13, 2026
Third blocker, found once packaging ran. Run 34739982565 built both
.appbundles, thenverify-packaged-macfailed withrequired packaged executable missing or not executable: …/out/main/runtime/hotkey-helper/AgentCodeDictationHotkeyHelper.Cause:
build-apphandsout/topackage-macosthroughactions/upload-artifact, which zips without file modes (every file comes back644, per its README). The hotkey helper, and the bundledtmux/cloudflared/mitmproxybinaries behind it, lose the execute bit before packaging. Fixed in #966:out/is now uploaded as a tar and unpacked inpackage-macos.Juliusolsson05 commentedon Sep 13, 2026
With all three fixes in #966, release run 34740689235 (
980865b6,publish_release=false, unsigned) succeeds end to end:.dmg/.zipare packaged.verify-packaged-macreports OK for both architectures, and[packaging-smoke] OK arm64 0.0.2-beta.1.macos-unsigned-devartifact is uploaded.Signing and notarization remain untested until the Developer ID secrets exist.