From cee276a956c9067330b7683881791629bb546796 Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 2 Nov 2026 14:16:15 +0000 Subject: [PATCH 1/3] docs(setup-browser-cookies): warn that the bundled Chromium still trusts the eMudhra intermediates (#3338) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- changelog.d/garrytan-gsta-84-cookie-import-trust-note.md | 4 ++++ setup-browser-cookies/SKILL.md | 2 ++ setup-browser-cookies/SKILL.md.tmpl | 2 ++ test/helpers/manual-judge-review-fixture.ts | 8 ++++++++ 4 files changed, 16 insertions(+) create mode 100644 changelog.d/garrytan-gsta-84-cookie-import-trust-note.md diff --git a/changelog.d/garrytan-gsta-84-cookie-import-trust-note.md b/changelog.d/garrytan-gsta-84-cookie-import-trust-note.md new file mode 100644 index 000000000..d1c702e3a --- /dev/null +++ b/changelog.d/garrytan-gsta-84-cookie-import-trust-note.md @@ -0,0 +1,4 @@ +**/setup-browser-cookies now warns that the fallback browser still trusts the compromised eMudhra intermediates (#3338).** BROWSER.md carried this warning since v1.91.239.0, but the cookie import skill did not, so an agent importing signed-in cookies into the bundled Chromium never told the user. + +### Changed +- **`setup-browser-cookies/SKILL.md.tmpl`**: before the import, the agent tells the user once that gstack's bundled Chromium still accepts certificates from those intermediates, says not to use the imported sessions on a network they do not trust until the Playwright bump, and points to `BROWSER.md`, **TLS trust: the bundled Chromium's root store**. diff --git a/setup-browser-cookies/SKILL.md b/setup-browser-cookies/SKILL.md index c193d6c3f..6fda4ea47 100644 --- a/setup-browser-cookies/SKILL.md +++ b/setup-browser-cookies/SKILL.md @@ -175,6 +175,8 @@ Use the picker when any of answers 1-2 is still open; it asks for them. Use dire $B goto "" ``` +Tell the user once, before the import: this browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. + ## 4. Import Picker (the user confirms the browser, profile and domains there, ticks verification if they asked for it, then tells you when done; the link works once, for five minutes, so rerun the command if it expires): diff --git a/setup-browser-cookies/SKILL.md.tmpl b/setup-browser-cookies/SKILL.md.tmpl index b8c81bfa1..e7e4a2f99 100644 --- a/setup-browser-cookies/SKILL.md.tmpl +++ b/setup-browser-cookies/SKILL.md.tmpl @@ -51,6 +51,8 @@ Use the picker when any of answers 1-2 is still open; it asks for them. Use dire $B goto "" ``` +Tell the user once, before the import: this browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. + ## 4. Import Picker (the user confirms the browser, profile and domains there, ticks verification if they asked for it, then tells you when done; the link works once, for five minutes, so rerun the command if it expires): diff --git a/test/helpers/manual-judge-review-fixture.ts b/test/helpers/manual-judge-review-fixture.ts index b5f610f52..ca1ae4e31 100644 --- a/test/helpers/manual-judge-review-fixture.ts +++ b/test/helpers/manual-judge-review-fixture.ts @@ -61,10 +61,18 @@ const LATER_COOKIE_ORDER_EDITS: Array<[string, string]> = [ ["# view the page; only --verify-auth proves sign-in", "# confirm the intended account"], ]; +// The #3338 trust warning (GSTA-84) added one paragraph after step 3's goto +// (two lines longer). Removing it first lets the GSTA-49 reversal match. +const LATER_TRUST_PARAGRAPH = "Tell the user once, before the import: this browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check.\n\n"; + export function approvedCookieWorkflowSource(source: string): string { let removedLines = 0; let removedEntrypointLines = 0; let reordered = source; + if (reordered.includes(LATER_TRUST_PARAGRAPH)) { + removedEntrypointLines += LATER_TRUST_PARAGRAPH.split('\n').length - 1; + reordered = reordered.replace(LATER_TRUST_PARAGRAPH, ''); + } for (const [later, earlier] of LATER_COOKIE_ORDER_EDITS) { if (!reordered.includes(later)) continue; removedEntrypointLines += later.split('\n').length - earlier.split('\n').length; From 0a35685a9c9d9b842ace035e713e4362fef2209c Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 2 Nov 2026 14:21:56 +0000 Subject: [PATCH 2/3] fix: pre-landing review fixes Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- setup-browser-cookies/SKILL.md | 2 +- setup-browser-cookies/SKILL.md.tmpl | 2 +- test/helpers/manual-judge-review-fixture.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/setup-browser-cookies/SKILL.md b/setup-browser-cookies/SKILL.md index 6fda4ea47..df8377e71 100644 --- a/setup-browser-cookies/SKILL.md +++ b/setup-browser-cookies/SKILL.md @@ -175,7 +175,7 @@ Use the picker when any of answers 1-2 is still open; it asks for them. Use dire $B goto "" ``` -Tell the user once, before the import: this browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. +Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. ## 4. Import diff --git a/setup-browser-cookies/SKILL.md.tmpl b/setup-browser-cookies/SKILL.md.tmpl index e7e4a2f99..64c40a49c 100644 --- a/setup-browser-cookies/SKILL.md.tmpl +++ b/setup-browser-cookies/SKILL.md.tmpl @@ -51,7 +51,7 @@ Use the picker when any of answers 1-2 is still open; it asks for them. Use dire $B goto "" ``` -Tell the user once, before the import: this browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. +Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. ## 4. Import diff --git a/test/helpers/manual-judge-review-fixture.ts b/test/helpers/manual-judge-review-fixture.ts index ca1ae4e31..edf9f6478 100644 --- a/test/helpers/manual-judge-review-fixture.ts +++ b/test/helpers/manual-judge-review-fixture.ts @@ -63,7 +63,7 @@ const LATER_COOKIE_ORDER_EDITS: Array<[string, string]> = [ // The #3338 trust warning (GSTA-84) added one paragraph after step 3's goto // (two lines longer). Removing it first lets the GSTA-49 reversal match. -const LATER_TRUST_PARAGRAPH = "Tell the user once, before the import: this browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check.\n\n"; +const LATER_TRUST_PARAGRAPH = "Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check.\n\n"; export function approvedCookieWorkflowSource(source: string): string { let removedLines = 0; From 0aa93fa92720f0c8c20e5f6908f17165101bf36f Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 2 Nov 2026 14:50:49 +0000 Subject: [PATCH 3/3] fix: drop the issue number from model-read skill text (archaeology lint) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- setup-browser-cookies/SKILL.md | 2 +- setup-browser-cookies/SKILL.md.tmpl | 2 +- test/helpers/manual-judge-review-fixture.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/setup-browser-cookies/SKILL.md b/setup-browser-cookies/SKILL.md index df8377e71..003faa78f 100644 --- a/setup-browser-cookies/SKILL.md +++ b/setup-browser-cookies/SKILL.md @@ -175,7 +175,7 @@ Use the picker when any of answers 1-2 is still open; it asks for them. Use dire $B goto "" ``` -Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. +Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates. Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. ## 4. Import diff --git a/setup-browser-cookies/SKILL.md.tmpl b/setup-browser-cookies/SKILL.md.tmpl index 64c40a49c..eddad8ae4 100644 --- a/setup-browser-cookies/SKILL.md.tmpl +++ b/setup-browser-cookies/SKILL.md.tmpl @@ -51,7 +51,7 @@ Use the picker when any of answers 1-2 is still open; it asks for them. Use dire $B goto "" ``` -Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. +Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates. Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check. ## 4. Import diff --git a/test/helpers/manual-judge-review-fixture.ts b/test/helpers/manual-judge-review-fixture.ts index edf9f6478..7a7874cd5 100644 --- a/test/helpers/manual-judge-review-fixture.ts +++ b/test/helpers/manual-judge-review-fixture.ts @@ -63,7 +63,7 @@ const LATER_COOKIE_ORDER_EDITS: Array<[string, string]> = [ // The #3338 trust warning (GSTA-84) added one paragraph after step 3's goto // (two lines longer). Removing it first lets the GSTA-49 reversal match. -const LATER_TRUST_PARAGRAPH = "Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates ([#3338](https://github.com/garrytan/gstack/issues/3338)). Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check.\n\n"; +const LATER_TRUST_PARAGRAPH = "Tell the user once, before the import: gstack's headless browser trusts the root store built into gstack's bundled Chromium, which still accepts certificates from the compromised eMudhra intermediates. Until gstack moves to a Playwright release that drops them, don't use the imported sessions on a network the user does not trust. That same root's `BROWSER.md`, **TLS trust: the bundled Chromium's root store**, has the details and the check.\n\n"; export function approvedCookieWorkflowSource(source: string): string { let removedLines = 0;