From 39bc1c34f68b96b19a2287be5fb54c685f712981 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 14 Aug 2026 12:43:30 -0700 Subject: [PATCH] chore: regenerate pair-agent SKILL.md for cluster B (consent gate) Co-Authored-By: Claude Fable 5 --- pair-agent/SKILL.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pair-agent/SKILL.md b/pair-agent/SKILL.md index 19218eba8..c5294d7ce 100644 --- a/pair-agent/SKILL.md +++ b/pair-agent/SKILL.md @@ -930,7 +930,27 @@ using the generic remote flow instead. ### If different machine (option B): -First, detect ngrok status: +**Consent gate (once per machine).** The tunnel exposes this browser beyond +the machine, so it is OFF until the user opts in — the daemon refuses +`/tunnel/start` and `BROWSE_TUNNEL=1` otherwise. Check the standing consent: + +```bash +~/.claude/skills/gstack/bin/gstack-config get pair_agent 2>/dev/null || echo "unset" +``` + +If the value is not `on`, ask via AskUserQuestion (one-way-door posture — +this opens a path from the internet to the local browser): + +> "Remote pairing runs an ngrok tunnel from the internet to this machine's +> browser (locked to a 26-command allowlist + scoped token, but still an +> exposure). Enable pair-agent on this machine?" + +Options: A) Enable — run `~/.claude/skills/gstack/bin/gstack-config set pair_agent on`, confirm it reads back `on`, and continue. B) No — stop here; local pairing (option A above) still works. + +If the value is already `on`, say nothing and continue — consent stands until +`gstack-config set pair_agent off`. + +Then detect ngrok status: ```bash which ngrok 2>/dev/null && echo "NGROK_INSTALLED" || echo "NGROK_NOT_INSTALLED"