gstack/browse
Eshan Thanvi 08a5c9378e fix(browse): grant Windows ACLs by SID to avoid owner lockout
restrictFilePermissions/restrictDirectoryPermissions granted icacls
permissions by bare username (os.userInfo().username). On machines where
the username collides with another account object — most commonly when
the machine name equals the username — LookupAccountName resolves the
bare name to the machine's domain SID (S-1-5-21-... with no RID),
producing an ACL that denies even the owner. ~/.gstack becomes
inaccessible and browse fails with EPERM on mkdir.

Resolve the current user's SID via %SystemRoot%\System32\whoami.exe
(absolute path — a bare 'whoami' can hit GNU coreutils' whoami from the
Git for Windows PATH, which rejects /user) and grant *<SID>:(F), which
is unambiguous. Fall back to USERDOMAIN\USERNAME if SID resolution
fails.

Note: dist/browse.exe and dist/server-node.mjs embed this module, so a
dist rebuild is required for the fix to take effect in releases.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 05:00:20 +04:00
..
bin feat: multi-agent support — gstack works on Codex, Gemini CLI, and Cursor (v0.9.0) (#226) 2026-03-19 18:20:50 -07:00
scripts fix: ngrok Windows build + close CI error-swallowing gap (v0.18.0.1) (#1024) 2026-04-16 13:49:04 -07:00
src fix(browse): grant Windows ACLs by SID to avoid owner lockout 2026-07-04 05:00:20 +04:00
test fix(browse): grant Windows ACLs by SID to avoid owner lockout 2026-07-04 05:00:20 +04:00
PLAN-snapshot-dropdown-interactive.md fix: snapshot -i auto-detects dropdown/popover interactive elements (#845) 2026-04-05 22:57:45 -07:00
SKILL.md v1.58.5.0 feat: first-run activation scaffold + gstack router front door (#2078) 2026-06-25 09:42:45 -07:00
SKILL.md.tmpl v1.57.8.0 feat: browse js/eval --out render-to-file (canonical Chromium for offline rendering) (#1929) 2026-06-09 21:02:30 -07:00