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
On macOS, the active Vite+ Mach-O can become permanently invalid for that inode after VS Code rebuilds its Recent Documents list. Once this happens, every Vite+ shim that points to the same binary (vp, node, nr, npm, and others) is killed at exec with:
SIGKILL (Code Signature Invalid)
Reinstalling Vite+ fixes the commands only because the new installation uses a new inode. The original file remains byte-for-byte valid and still passes codesign --verify, but macOS continues to reject execution from its old inode.
This incident happened immediately after vp create, but the evidence below shows that vp create did not overwrite or modify the binary. The invalidation happened after code ., while VS Code/CoreServices was rebuilding bookmarks for Vite+ paths stored in Application Recent Documents.
Why this is actionable in Vite+:
All Unix shims resolve to one active, ad-hoc/linker-signed vp Mach-O, so one invalidated vnode breaks the whole managed runtime.
There is no non-Mach-O launcher or recovery path capable of replacing/retrying the invalid inode after exec starts failing.
Expected behavior: opening a project in VS Code, or restoring Vite+ paths from Recent Documents, must not make vp, node, and every other managed command unusable until reinstall/reboot.
I am not currently planning to submit a PR.
Reproduction
No project repository is needed — this is a machine-level Vite+ shim failure. The observed shell sequence and preserved runtime evidence are below.
Steps to reproduce
Observed stateful sequence:
Use Vite+ v0.2.4 on macOS 26.5.2 arm64.
Have Vite+ shim paths in VS Code's recent documents. On this machine, these had previously been opened:
VS Code's persisted com.microsoft.vscode.sfl4 resolved entries included:
$HOME/.vite-plus
$HOME/.vite-plus/0.2.4
Create a library and open it:
vp create
cd fe-qualitiy-share
code .
Run any Vite+ shim:
vp --version
node -v
nr
Each process is terminated by SIGKILL (Code Signature Invalid).
Important control: the same old vp inode executed successfully after vp create completed. It only became invalid during the subsequent VS Code Recent Documents rebuild.
The trigger depends on persisted VS Code/macOS Recent Documents state, so a clean-machine reproduction may first require seeding those Vite+ paths.
System Info
The global CLI was reinstalled to recover the shell. The affected v0.2.4 binary and inode are still preserved. Current full output:
10:28:32 vp create
10:29:39 the same old vp inode still executes successfully
10:29:46 code .
10:29:48.831 Code[44880:c85e7] CFURLCreateBookmarkData
10:29:48.831 kernel[0:c85e7] Invalidated flags, old 20020003 new 20020002
10:29:48.832 Code[44880:c85e7] inserts Recent Documents item
0F6552C6-674C-43E5-9EC6-A931997E96F6
10:29:49.616 kernel load_code_signature:
embedded signature doesn't match attached signature
10:29:49.616 kernel proc 44950:
load code signature error 2 for file "vp"
10:29:50.776 the user's nr invocation fails with the same error
The persisted VS Code Recent Documents archive maps item 0F6552C6-674C-43E5-9EC6-A931997E96F6 to:
/Users/jacobzha/.vite-plus/0.2.4
The kernel and VS Code entries have the same thread ID (c85e7). This was the only Invalidated flags event between 10:20 and 10:45. Every subsequent signature-load failure named vp.
The flags precisely show CS_VALID being cleared:
old 0x20020003:
CS_SIGNED 0x20000000
CS_LINKER_SIGNED 0x00020000
CS_ADHOC 0x00000002
CS_VALID 0x00000001
new 0x20020002:
CS_VALID removed
Commit message: fix: use timestamped local-dev dirs to avoid SIGKILL on macOS
It documents the same stale inode/code-signature mechanism for an in-place local bootstrap overwrite. v0.2.4 already contains that fix; the vp create vite:library call graph does not reach bootstrap, upgrade, installer, shim refresh, or any writer of the active Mach-O.
Describe the bug
On macOS, the active Vite+ Mach-O can become permanently invalid for that inode after VS Code rebuilds its Recent Documents list. Once this happens, every Vite+ shim that points to the same binary (
vp,node,nr,npm, and others) is killed at exec with:Reinstalling Vite+ fixes the commands only because the new installation uses a new inode. The original file remains byte-for-byte valid and still passes
codesign --verify, but macOS continues to reject execution from its old inode.This incident happened immediately after
vp create, but the evidence below shows thatvp createdid not overwrite or modify the binary. The invalidation happened aftercode ., while VS Code/CoreServices was rebuilding bookmarks for Vite+ paths stored in Application Recent Documents.Why this is actionable in Vite+:
vpMach-O, so one invalidated vnode breaks the whole managed runtime.Expected behavior: opening a project in VS Code, or restoring Vite+ paths from Recent Documents, must not make
vp,node, and every other managed command unusable until reinstall/reboot.I am not currently planning to submit a PR.
Reproduction
No project repository is needed — this is a machine-level Vite+ shim failure. The observed shell sequence and preserved runtime evidence are below.
Steps to reproduce
Observed stateful sequence:
Use Vite+ v0.2.4 on macOS 26.5.2 arm64.
Have Vite+ shim paths in VS Code's recent documents. On this machine, these had previously been opened:
VS Code's persisted
com.microsoft.vscode.sfl4resolved entries included:Create a library and open it:
Run any Vite+ shim:
Each process is terminated by
SIGKILL (Code Signature Invalid).Important control: the same old
vpinode executed successfully aftervp createcompleted. It only became invalid during the subsequent VS Code Recent Documents rebuild.The trigger depends on persisted VS Code/macOS Recent Documents state, so a clean-machine reproduction may first require seeding those Vite+ paths.
System Info
The global CLI was reinstalled to recover the shell. The affected v0.2.4 binary and inode are still preserved. Current full output:
Affected global runtime:
Used Package Manager
pnpm
Logs
Exact timeline:
The persisted VS Code Recent Documents archive maps item
0F6552C6-674C-43E5-9EC6-A931997E96F6to:The kernel and VS Code entries have the same thread ID (
c85e7). This was the onlyInvalidated flagsevent between 10:20 and 10:45. Every subsequent signature-load failure namedvp.The flags precisely show
CS_VALIDbeing cleared:This matches the binary:
Disk evidence:
The whole
~/.vite-plus/0.2.4tree had no ctime/mtime change during the incident.vp createonly installed pnpm under:Decisive copy experiment:
This matches XNU behavior:
csvnode_invalidate_flags()clearsCS_VALIDwhen a vnode may have been modified:https://github.com/apple-oss-distributions/xnu/blob/main/bsd/kern/kern_cs.c#L494-L545
https://github.com/apple-oss-distributions/xnu/blob/main/bsd/kern/ubc_subr.c#L5586-L5591
load_code_signature()emits the observed generic mismatch when an attached blob has lostCS_VALID:https://github.com/apple-oss-distributions/xnu/blob/main/bsd/kern/mach_loader.c#L3565-L3581
Related Vite+ precedent:
fix: use timestamped local-dev dirs to avoid SIGKILL on macOSvp create vite:librarycall graph does not reach bootstrap, upgrade, installer, shim refresh, or any writer of the active Mach-O.Validations