This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+14 more
Affected surfaces
Summary
AI summaryFixed two paths that could run caller-supplied JavaScript on an unauthorized tab.
Full changelog
Fixed
Two paths could run caller-supplied JavaScript on a tab this session does not own.
The atomic identity guard — the only check that does not depend on how the tab index was resolved — was built at a single call site instead of where the script is assembled. Two targeted paths went without it:
runJS's ghost-recovery retry dropped the prefix. That retry fires after the index has already proven wrong, which made the least trustworthy path the only unchecked one.runJSLargenever carried it at all — that issafari_upload_fileandsafari_paste_image, the largest payloads in the toolset.
The guard now lives in _tabIdentityGuard() and every tab-targeted path uses it. runJSLarge fails closed instead of retrying: re-running a file payload on a freshly re-resolved tab is the exact guess the guard exists to prevent. (#64)
Security
Transitive dependency bumps clearing the production audit gate — fast-uri 3.1.4 (2× high, host confusion), hono 4.12.31, @hono/node-server 1.19.14.
Security Fixes
- Fixed `runJS` ghost-recovery retry and `runJSLarge` (safari_upload_file, safari_paste_image) missing atomic identity guard preventing unauthorized script execution.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About achiya-automation/safari-mcp
Native Safari browser automation for AI agents with 80+ tools. No Chrome dependency, optimized for Apple Silicon with 60% less CPU overhead.
Related context
Earlier breaking changes
- v2.10.5 npm audit gate now fails build on high or critical advisories.
Beta — feedback welcome: [email protected]