b141fb3511
fix(pair-agent): tunnel activation is consent-gated — and the receipt's consent claim is now real
...
The tunnel egress receipts have claimed consent: 'pair_agent=on' since v1.63
while no such key or gate existed — ngrok installed+authed was enough for
the CLI to auto-start an internet-facing tunnel. isPairAgentEnabled() (fail-
closed, env-overridable) now gates all three activation points: CLI
auto-start, POST /tunnel/start (refuses with the enable hint), and the
BROWSE_TUNNEL=1 startup bind. Consent-on-first-use, not silent breakage:
the /pair-agent skill asks once (one-way-door posture), sets pair_agent via
gstack-config (registered with on|off validation, default off), and never
asks again; direct API callers get the same hint in the refusal.
Adapted from the fork's gate: their reader targeted config.json, which on
main would have made the gate silently un-enableable — ours reads the
canonical ~/.gstack/config.yaml with the JSON shape as fallback, pinned by
tests either way (11 cases, gate wiring tripwires included).
Ported from time-attack/gstack (GStack 2), store adaptation ours.
Co-authored-by: Sina Matian <sina@time-attack.dev >
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-14 12:43:24 -07:00
..
2026-04-23 10:23:40 -07:00
2026-03-26 11:15:24 -06:00
2026-03-28 08:35:24 -06:00
2026-04-07 00:23:36 -07:00
2026-05-07 20:14:59 -07:00
2026-05-09 08:06:47 -07:00
2026-05-13 12:22:30 -04:00
2026-06-18 10:45:05 -07:00
2026-05-24 01:43:51 -07:00
2026-04-28 20:08:04 -07:00
2026-05-14 21:55:29 -07:00
2026-04-28 20:08:04 -07:00
2026-05-14 21:46:50 -07:00
2026-04-16 13:49:04 -07:00
2026-03-20 12:22:11 -07:00
2026-04-28 20:08:04 -07:00
2026-04-28 20:08:04 -07:00
2026-05-27 16:09:38 -07:00
2026-04-28 20:08:04 -07:00
2026-05-27 16:09:38 -07:00
2026-05-01 07:21:28 -07:00
2026-05-21 21:21:07 -07:00
2026-05-24 01:43:51 -07:00
2026-06-09 21:02:30 -07:00
2026-04-07 00:23:36 -07:00
2026-05-13 12:22:30 -04:00
2026-07-10 14:39:32 -07:00
2026-03-23 22:15:23 -07:00
2026-04-17 00:45:13 -07:00
2026-05-07 20:14:59 -07:00
2026-04-08 00:41:55 -07:00
2026-05-09 08:06:47 -07:00
2026-05-09 08:06:47 -07:00
2026-08-14 09:28:56 -07:00
2026-04-18 23:25:33 +08:00
2026-04-10 17:13:15 -10:00
2026-08-14 09:28:56 -07:00
2026-03-26 11:15:24 -06:00
2026-05-09 08:06:47 -07:00
2026-05-20 07:35:01 -07:00
2026-05-25 10:57:15 -07:00
2026-04-21 21:58:27 -07:00
2026-07-10 11:21:19 -07:00
2026-05-13 13:37:31 -04:00
2026-04-07 00:23:36 -07:00
2026-04-06 00:47:04 -07:00
2026-05-27 16:09:38 -07:00
2026-05-27 16:09:38 -07:00
2026-08-14 09:28:56 -07:00
2026-08-14 12:43:24 -07:00
2026-04-28 00:57:28 -07:00
2026-04-06 00:47:04 -07:00
2026-04-20 13:20:30 +08:00
2026-03-20 12:22:11 -07:00
2026-05-07 20:14:59 -07:00
2026-05-07 20:14:59 -07:00
2026-05-20 07:35:01 -07:00
2026-05-24 01:43:51 -07:00
2026-05-20 06:56:41 -07:00
2026-05-30 14:57:07 -07:00
2026-05-14 21:46:50 -07:00
2026-05-20 07:35:01 -07:00
2026-04-25 22:52:15 -07:00
2026-04-23 10:23:40 -07:00
2026-04-25 22:52:15 -07:00
2026-04-23 10:23:40 -07:00
2026-04-23 10:23:40 -07:00
2026-04-23 10:23:40 -07:00
2026-04-20 22:18:37 +08:00
2026-05-20 06:56:41 -07:00
2026-05-13 12:22:30 -04:00
2026-04-20 22:18:37 +08:00
2026-04-23 10:23:40 -07:00
2026-04-20 22:18:37 +08:00
2026-04-20 22:18:37 +08:00
2026-05-20 07:35:01 -07:00
2026-04-20 22:18:37 +08:00
2026-04-20 22:18:37 +08:00
2026-05-09 08:06:47 -07:00
2026-08-14 09:28:56 -07:00
2026-05-24 01:43:51 -07:00
2026-05-21 22:15:37 -07:00
2026-05-09 08:06:47 -07:00
2026-05-13 12:22:30 -04:00
2026-05-07 20:14:59 -07:00
2026-05-24 01:43:51 -07:00
2026-05-27 16:09:38 -07:00
2026-05-09 08:06:47 -07:00
2026-04-21 21:58:27 -07:00
2026-04-20 22:18:37 +08:00
2026-05-11 12:16:26 -07:00
2026-03-26 22:07:03 -06:00
2026-05-21 22:15:37 -07:00
2026-05-24 01:43:51 -07:00
2026-05-24 01:43:51 -07:00
2026-05-24 01:43:51 -07:00
2026-05-14 21:55:29 -07:00
2026-04-07 00:23:36 -07:00
2026-05-07 20:14:59 -07:00
2026-05-27 16:09:38 -07:00
2026-04-21 21:58:27 -07:00
2026-03-28 08:35:24 -06:00
2026-06-18 10:45:05 -07:00
2026-06-18 10:45:05 -07:00
2026-06-18 10:45:05 -07:00
2026-04-25 22:52:15 -07:00
2026-05-27 16:09:38 -07:00
2026-04-28 20:08:04 -07:00
2026-05-09 08:06:47 -07:00
2026-04-28 20:08:04 -07:00
2026-05-24 01:43:51 -07:00
2026-04-25 22:52:15 -07:00
2026-05-24 01:43:51 -07:00
2026-05-24 01:43:51 -07:00
2026-05-24 01:43:51 -07:00
2026-05-24 01:43:51 -07:00
2026-05-24 01:43:51 -07:00
2026-05-24 01:43:51 -07:00
2026-04-25 22:52:15 -07:00
2026-03-13 00:31:41 -07:00
2026-05-14 21:55:29 -07:00
2026-06-09 21:02:30 -07:00
2026-05-11 12:16:26 -07:00
2026-03-26 11:15:24 -06:00
2026-04-17 00:45:13 -07:00
2026-04-04 10:17:05 -07:00
2026-05-07 20:14:59 -07:00