Repository navigation
Release Aiden Agent 0.61.0: security updates (Electron 43.8.3, MCP SDK 1.32.1, CI Node 22.23.4) - #584
Conversation
…isories - Electron ^43.1.1 -> ^43.8.3 (Chromium 150.0.7871.114 -> .250, backported Chromium/V8 security fixes, five Electron GHSAs fixed after 43.6.0) - @modelcontextprotocol/sdk 1.30.0 -> 1.32.1 (OAuth credential steering, cross-origin redirect header leaks, server auth fixes) - yauzl 3.2.0 -> 3.4.0 - In-range npm audit fixes (undici, hono, fast-uri, proxy-addr, qs, ip-address, seroval, shell-quote, vite and others); electron-builder stays at 26.15.3 for the guarded keychain patch - CI node-version 22.22.3 -> 22.23.4 (Node's October 21 security release) - Gemini Live declaration test checks the Electron 43 major, not 43.1.1 - Docs: CLI and root README Node guidance, plan pin, .memory note Electron has not yet shipped Node 24.22.1; a follow-up bump is needed when it does. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EUbjALmfAUbbvazRGDFaoi
Hermes Review BotConfidence: 5 Engine: SummaryReleases Aiden Agent 0.61.0, upgrading Electron to 43.8.3 (Chromium 150.0.7871.250), Confidence Score: 5/5One line justifying: Every changed file, dependency diff, CI workflow pin, glob worker traversal edge case, and release script was inspected and verified end-to-end against repository contracts and security baselines. 📁 Important Files Changed
FindingsNo findings. 📊 Sequence DiagramUnchanged or not applicable for this change. Machine-Readable Findings[]
|
|
The Generated by Claude Code |
Bump package.json and package-lock.json so the Release desktop workflow publishes v0.60.1 with the October security updates, and record #559, #579 and #581 as shipping in 0.60.1 in the plan index. The release also carries #567, #580 and #582 from main. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EUbjALmfAUbbvazRGDFaoi
There was a problem hiding this comment.
Important
The Electron update breaks the required foreground file-tools smoke check. Reconcile the glob compatibility assertion before merging the 0.60.1 release.
Reviewed changes across both commits, including dependency integrity, runtime compatibility, CI configuration and release metadata.
- Runtime dependencies: Electron 43.8.3, MCP SDK 1.32.1, yauzl 3.4.0 and transitive security updates, with the guarded electron-builder version retained.
- CI and contracts: Node 22.23.4 workflow pins and the Gemini Live declaration check's move from an exact Electron patch to major 43.
- Release and documentation: Version 0.60.1, updated plan release statuses and Node security guidance, including the outstanding embedded-Node follow-up.
- Validation: Fresh
npm ci, TypeScript, MCP, ACP, CI-policy, Gemini Live and release-metadata tests pass. The identical foreground smoke passes on Electron 43.1.1 and fails on 43.8.3 under a local isolated Linux harness; hosted macOS CI reports the same assertion failure. Full packaging and macOS E2E were not run locally.
gpt-6.1-sol | 𝕏
Electron 43.8.3 bundles Node 24.22.0, whose fs.glob no longer steps into a symlink after `**`. The foreground glob worker mirrored the older rule, so the Electron smoke that compares it with Electron's native glob failed on `**/*`. Follow the newer rule on every runtime, give the five patterns whose answer differs between Node lines fixed expectations in the unit test, and note the rule in THIRD_PARTY_NOTICES.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EUbjALmfAUbbvazRGDFaoi
The owner chose a minor version for this release because it also ships the features merged since 0.60.0 (#559, #567, #579-#582), not only the October security updates. Bump package.json and package-lock.json to 0.61.0 and update the plan index to match. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EUbjALmfAUbbvazRGDFaoi
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes since 4c94e6e2, covering the glob compatibility fix and the revised 0.61.0 release metadata.
- Aligned glob traversal: Updated the worker's globstar transition to match Electron's embedded Node
24.22.0without changing the smoke's symlink, cancellation, deadline or cleanup assertions. - Added runtime-independent expectations: Gave the five version-sensitive glob patterns fixed fixture results while retaining native comparisons for the remaining patterns, and documented the traversal rule.
- Renamed the release: Changed the manifest, both lockfile version fields and plan release references from
0.60.1to0.61.0. - Verified the fix: Passed all 70 coding-tool tests, TypeScript, six release-metadata tests and the unchanged Electron
43.8.3foreground smoke under Xvfb with a test-process-only sandbox override. Release selection returnsv0.61.0; hosted CI is still running, and macOS packaging/E2E were not run locally.
gpt-6.1-sol | 𝕏
|
iOS build and simulator tests failed on ffc1f69 (run 39819936715). Every other job passed, including Desktop build and diagnostics with the glob fix. Two XCTests timed out:
These failures don't come from this PR. It changes no Swift code and nothing the iOS app loads. The only thing it changes in the iOS job is the Node pin used for the policy checks before XCTest, and both failures are timing waits on a busy simulator. iOS is green on Generated by Claude Code |

Requested by sbt · project thread
This PR is also the 0.61.0 release. The owner asked to ship these fixes right away as 0.61.0. Merging it bumps
package.json/package-lock.jsonto 0.61.0, and the Release desktop workflow then publishesv0.61.0. The release is cut frommain, so it also ships everything merged since 0.60.0: #559 (Bot hand-offs, rules, pause, Bot computers), #567, #579–#581 (dictation speed and the Metal engine) and #582.Why
A check against the October 21, 2026 disclosures (PHP2Shell, the Linux PwnEscape kernel bug and the Node.js security release) found that PHP and the Linux bugs don't apply to Aiden. Node.js does, and the app had also drifted well behind on Electron. Write-up: https://claude.ai/artifact/GoQkap7rVYw31ivQcjJiib
What changes
Shipped app
^43.1.1→^43.8.3. The previous lock was 43.1.1 from July 14 (Chromium 150.0.7871.114, Node 24.18.0). 43.8.3 (Oct 21) carries Chromium 150.0.7871.250 with 23 releases' worth of backported Chromium/V8 fixes. It also clears five Electron advisories fixed after 43.6.0 (GHSA-gr2m-v5gq-v685, GHSA-j84w-jfhq-vhvj, GHSA-qmv3-fv6v-rmhq, GHSA-9qh4-3jw8-366w, GHSA-fw47-9c62-h3vw). Same major version and same Node ABI (148).@modelcontextprotocol/sdk1.30.0 → 1.32.1. Five high advisories, including OAuth credentials sent to an authorization server the MCP server picks (GHSA-6qxp-vccf-f47h) and headers re-sent on cross-origin redirects (GHSA-6prh-2h8m-c8cw). It also pulls in fixedhono, theexpressdeps (proxy-addr,qs),fast-uriandip-address.yauzl3.2.0 → 3.4.0 (GHSA-gmq8-994r-jv83). Used only by the Antigravity installer, which opens a pinned and hash-checked archive.npm audit fix:undici7.30.1 (OpenAI SDK),seroval,brace-expansion,source-map-jsandnanoid. Dev tools:vite8.3.5,shell-quote,axios,follow-redirectsand@xmldom/xmldom.electron-builderstays at 26.15.3 becausescripts/patch-electron-builder-keychain.mjsrefuses any otherapp-builder-lib.fs.globno longer steps into a symlink after**(Node 22.23.4 and 24.18.0 still do). The coding-tool glob worker mirrored the old rule, so the Electron foreground smoke (which compares it with Electron's native glob) failed on**/*. The worker now never follows a link after**, on every runtime.coding-tools.test.tsgives the five patterns whose answer differs between Node lines (**/*,**/*/*.ts,**/*/**/c.ts,**/*/,{src,link}/**/*) fixed expectations; the other patterns still use the native oracle.THIRD_PARTY_NOTICES.mdnotes the rule.Build and test machines
node-versiongoes from 22.22.3 (May 13) to 22.23.4, the Node 22 security release from October 21.scripts/check-ci-policy.test.mjsfollows the pin.Release
package.jsonandpackage-lock.jsonmove to 0.61.0 (first drafted as 0.60.1; the owner chose a minor version because the release also carries new features).docs/plans/README.mdrecords what 0.61.0 ships and marks Bots: hand-offs, sign-in, rules, pause and Bot computers #559, feat(voice): make on-device dictation start and finish faster #579 and feat(voice): Parakeet on Metal and live dictation words (dictation phase 2) #581 as shipped.Tests and docs
main/services/gemini-live/sdk-contract.test.tsnow checks the Electron 43 major instead of exactly 43.1.1. The real oracle stays the same: the installedelectron.d.tsmust declare the display-media handler, exact-frame request and system picker.packages/cli/README.mdandREADME.mdtell users to keep Node on the newest release of its line, since the CLI runs on the user's own Node.docs/plans/peer-mobile-reliability-plan.mdgets the new CI pin, and.memory/security-updates-2026-10.mdrecords the follow-up and the glob rule.Not in this PR
oxfmt/tinypool,katex/remark-math, and theelectron-builderdowngrade. All of these are dev-only or low severity.Local verification (cloud container)
npm run type-check: passeslint .: passnpm run test:ci-policy: 68/68npm run test:mcp: 345/345npm run test:acp(covers the yauzl installer path): 150/150npm run test:gemini-live: 7 + 186 + 103 passmain/services/coding-tools.test.ts: 70/70 on Node 22.23.4; the two foreground glob tests also pass on Node 24.22.0npm run test:foreground-file-tools:electronon Electron 43.8.3 (Node 24.22.0) under Xvfb: passed, all 13 glob patterns match nativefs.glob(run with--no-sandboxbecause the container runs as root)prepare-ci-release,check-release-consumers,check-ci-policy): 23/23vite build,build:visual-viewer,build:electron:productionandcheck-renderer-bundle-budget: passbuild:native:ccould not run here because the container has no libsecret. Electron E2E and packaging run in hosted CI.Flaky tests seen on this PR
iOS build and simulator tests, run 39819936715 attempt 1 on ffc1f69. Two specs timed out:
AidenChatTests, one of the two "first roster read held" tests (testARunRegisteredAfterTheOpeningLookupIsAttachedWhenTheFirstRosterArrivesortestARunThatEndedBeforeTheFirstRosterArrivedIsReadFromTheTranscript): "Asynchronous wait failed: Exceeded timeout of 3 seconds".AidenMessageVisualSnapshotLayoutTests.testVisualSnapshotKeepsItsHeightAlongsideAnImageDeck: "(0) is not equal to (269) +/- 3 - the snapshot was squeezed instead of drawn at its own height". It flaked before on Open chat visuals full screen on iOS and Android (Remote revision 35) #514 and Bot hand-offs follow-ups: owner answers 2b–6a, Remote rev 38 #583.This PR changes no Swift code. Failed jobs were re-run once (attempt 2) and passed, so all 26 checks are green on ffc1f69.
🤖 Generated with Claude Code
https://claude.ai/code/session_01EUbjALmfAUbbvazRGDFaoi