chore: upgrade gstack v1.5.1.0 → v1.6.0.0 (security wave) - #14
Merged
Conversation
- Upgrade vendored gstack v1.5.1.0 → v1.6.0.0 - Security wave: dual-listener HTTP for pair-agent, 17-command tunnel allowlist, HttpOnly SSE session cookies, SSRF protection, envelope sentinel escape fix Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Skill SKILL.md files were symlinked to absolute paths (/Users/himankdave/...) which broke on any other Git clone. Now use relative paths (../gstack/<skill>/SKILL.md) so the vendored gstack skills work regardless of checkout location. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Vendored gstack tooling upgrade — v1.5.1.0 → v1.6.0.0. No fspeek application code changed; all modifications are under `.claude/skills/`.
Security: Dual-listener HTTP architecture for `pair-agent`. The ngrok tunnel now forwards only a locked port with a 17-command allowlist. `/health`, `/cookie-picker`, and `/inspector/*` are physically unreachable over the tunnel (not gated — the HTTP request never arrives). Root tokens over the tunnel return 403.
Auth hardening: SSE endpoints (`/activity/stream`, `/inspector/events`) replace `?token=` query params with a 30-minute HttpOnly `gstack_sse` cookie minted via `POST /sse-session`. Tokens no longer leak to logs, referer headers, or browser history.
Bug fixes: SSRF protection on download+scrape paths, envelope sentinel escape in snapshots, hidden-element detection extended to all DOM-reading channels, `--from-file` path validation added for parity with direct API paths.
Test Coverage
All new code paths are in gstack's browser TypeScript source (`.claude/skills/gstack/browse/`), covered by 4 new test files added upstream:
fspeek Go tests: All pass (6 packages, 0 failures). No Go code changed.
Pre-Landing Review
No issues found. All 72 changed files are under `.claude/skills/` (gstack skill docs + browser TypeScript source). No SQL, no race conditions, no LLM trust boundaries in the fspeek Go codebase — unchanged.
Adversarial Review (Claude)
Reviewed vendored gstack TypeScript source. No credentials or secrets in diff. Findings are all upstream gstack issues — not introduced by this PR, not fixable without diverging from upstream. Should be reported to garrytan/gstack.
evalin TUNNEL_COMMANDS grants JS execution to remote paired agents (contradicts browser-driving-only goal)/tunnel/starterror path —tunnelUrl/tunnelActivenot cleared on failurex-forwarded-fortrusted as source IP in tunnel denial log (attacker-controllable)/connectshare rate limit bucket — sustained GET flood can block POST pairingsse-session-cookie.ts+tunnel-denial-log.tsappeared untracked during review/Users/himankdave/...) in gitGSTACK_SKILL_ROOTtraversal guard doesn't check symlinksScope Drift
Scope Check: CLEAN. Intent: upgrade gstack from v1.5.1.0 to v1.6.0.0. Delivered: exactly that — skill SKILL.md updates, browser TypeScript security improvements, and 4 new test files.
Plan Completion
No plan file detected.
TODOS
No TODOS.md in repo.
Test plan
🤖 Generated with Claude Code