Background
Ableton beta 12.4.5b5 ships this fix:
Extensions SDK: Fixed an issue on macOS where accessing the tempDirectory would sometimes result in an ERR_ACCESS_DENIED exception being thrown.
This is the upstream fix for L12-BUG-5145 (the temp-tree startup race): the Extension Host canonicalizes its --allow-fs-write grant at node startup, but creates .../T/Ableton Extensions a few seconds later, so on the first Live launch after a reboot (macOS empties $TMPDIR on boot) the grant never registers and tempDirectory writes fail with ERR_ACCESS_DENIED until Live is relaunched.
This workaround was ported from the Sheet Music extension (commit 3c7affc, "fix: port the tempDirectory permission-race fallback from Sheet Music").
Workaround to investigate (this repo)
Write-side only (this extension writes to tempDirectory but does not read host-rendered files back, so there is no read-side workaround):
src/scratch-dir.ts: resolveScratchDir() and isAccessDenied(). Tries tempDirectory, falls back to storageDirectory/work on ERR_ACCESS_DENIED.
src/extension.ts (around line 166): builds the candidate list [tempDir(), storageDir()/work] and writes the UI HTML to whichever resolves.
src/scratch-dir.test.ts: reboot fallback test.
Minor: the comment in src/scratch-dir.ts references the internal feedback numbering ("Ableton SDK feedback #10"). If any comment survives the cleanup, switch it to the upstream ID L12-BUG-5145, which is the form used in committed code (the internal numbering is meaningless to outside readers).
Tasks
Supported-version floor: bumping to 12.4.5b5
Decision: we are bumping the documented supported floor to 12.4.5b5 (the first build that contains the fix), so the fix is present in every supported build and this cleanup is no longer blocked upstream. The README / CLAUDE.md version bump is being done separately.
Note: the b5 fix can't be confirmed from CI. Verifying it needs the manual repro (reboot the Mac, launch Live on 12.4.5b5, open the UI as the first action). Until that passes, treat removal as "unblocked, pending verification."
Background
Ableton beta 12.4.5b5 ships this fix:
This is the upstream fix for L12-BUG-5145 (the temp-tree startup race): the Extension Host canonicalizes its
--allow-fs-writegrant at node startup, but creates.../T/Ableton Extensionsa few seconds later, so on the first Live launch after a reboot (macOS empties$TMPDIRon boot) the grant never registers andtempDirectorywrites fail withERR_ACCESS_DENIEDuntil Live is relaunched.This workaround was ported from the Sheet Music extension (commit
3c7affc, "fix: port the tempDirectory permission-race fallback from Sheet Music").Workaround to investigate (this repo)
Write-side only (this extension writes to
tempDirectorybut does not read host-rendered files back, so there is no read-side workaround):src/scratch-dir.ts:resolveScratchDir()andisAccessDenied(). TriestempDirectory, falls back tostorageDirectory/workonERR_ACCESS_DENIED.src/extension.ts(around line 166): builds the candidate list[tempDir(), storageDir()/work]and writes the UI HTML to whichever resolves.src/scratch-dir.test.ts: reboot fallback test.Minor: the comment in
src/scratch-dir.tsreferences the internal feedback numbering ("Ableton SDK feedback #10"). If any comment survives the cleanup, switch it to the upstream ID L12-BUG-5145, which is the form used in committed code (the internal numbering is meaningless to outside readers).Tasks
tempDirectory).tempDirectorywrite now succeeds on first launch and thestorageDirectory/workfallback never fires.resolveScratchDir/isAccessDeniedand the fallback wiring if confirmed unneeded.src/scratch-dir.test.tsaccordingly.L12-BUG-5145.Supported-version floor: bumping to 12.4.5b5
Decision: we are bumping the documented supported floor to 12.4.5b5 (the first build that contains the fix), so the fix is present in every supported build and this cleanup is no longer blocked upstream. The README / CLAUDE.md version bump is being done separately.
Note: the b5 fix can't be confirmed from CI. Verifying it needs the manual repro (reboot the Mac, launch Live on 12.4.5b5, open the UI as the first action). Until that passes, treat removal as "unblocked, pending verification."