Repository navigation
feat(website): a session cookie per site, and conformance levels (FD-4683) - #444
Merged
Merged
Conversation
williamloo-scale
marked this pull request as ready for review
November 3, 2026 00:24
williamloo-scale
force-pushed
the
wloo/website-gateway-auth
branch
from
November 3, 2026 21:50
8dcebd1 to
4c1fcc1
Compare
williamloo-scale
force-pushed
the
wloo/website-sdk-followups
branch
from
November 3, 2026 21:50
8090f3e to
2d64812
Compare
williamloo-scale
force-pushed
the
wloo/website-gateway-auth
branch
from
November 3, 2026 22:52
4c1fcc1 to
22947c3
Compare
williamloo-scale
force-pushed
the
wloo/website-sdk-followups
branch
2 times, most recently
from
November 3, 2026 23:47
0ef31b9 to
615d6a0
Compare
williamloo-scale
force-pushed
the
wloo/website-gateway-auth
branch
from
November 3, 2026 23:47
22947c3 to
253eaec
Compare
williamloo-scale
force-pushed
the
wloo/website-sdk-followups
branch
from
November 4, 2026 03:37
718dbb1 to
65a1c8e
Compare
williamloo-scale
force-pushed
the
wloo/website-gateway-auth
branch
from
November 4, 2026 03:37
253eaec to
18b1b98
Compare
williamloo-scale
force-pushed
the
wloo/website-gateway-auth
branch
from
November 4, 2026 03:56
18b1b98 to
d95702e
Compare
williamloo-scale
force-pushed
the
wloo/website-sdk-followups
branch
from
November 4, 2026 03:56
65a1c8e to
0f672be
Compare
williamloo-scale
force-pushed
the
wloo/website-gateway-auth
branch
from
November 4, 2026 04:40
d95702e to
8389f76
Compare
williamloo-scale
force-pushed
the
wloo/website-sdk-followups
branch
from
November 4, 2026 04:40
0f672be to
3184f79
Compare
earakely-scale
force-pushed
the
wloo/website-gateway-auth
branch
from
November 5, 2026 06:42
8389f76 to
c7f214b
Compare
earakely-scale
force-pushed
the
wloo/website-sdk-followups
branch
from
November 6, 2026 00:26
e759024 to
f4ac35d
Compare
…4683) - Session cookie per site: agentenv_session_<name>, the name the card gives (a name a cookie name can't hold is spelled safely, with a hash), named on the card, so two sites a browser reaches under one gateway host (/website/a/, /website/b/) don't overwrite each other's sign-in. A site still reads the shared agentenv_session for one release. - Conformance: required vs recommended. What website/v1 requires of any server fails a run: any host, readiness, no page at the reserved paths (new), and the data-plane round trip when the card advertises one. The card's details, X-Universe-Now, the clock, forwarded headers and cookies (including the session path setting the card's cookie) are warned; --strict fails on a warning. Lifted onto main from the follow-ups branch. The clock-rate change is left out (main's site clock reads the gateway clock per request, so it no longer extrapolates), and models= is held for a design note (it read and wrote through the store main removed). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
earakely-scale
force-pushed
the
wloo/website-sdk-followups
branch
from
November 6, 2026 00:27
f4ac35d to
190bfd1
Compare
With them recommended, a server answering pages and /api/health with no card and no data plane passed every required check, though agentenv resets, seeds and reads a site through them. A card listing no data plane now fails too, rather than skipping the round trip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… a site reads only its own session cookie (FD-4683) - A check's required or recommended level sits beside the check, not in a separate list of names, so a new check can't fall back to recommended by being left off it. - The shared agentenv_session is no longer read: a website browser's cookies last one run, every site in a run is built from one image, and nothing sends the shared cookie. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
earakely-scale
added a commit
that referenced
this pull request
Nov 6, 2026
…the mcp check is required
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.
Website SDK follow-ups, lifted onto main (after #428's final rounds rewrote the SDK and #429 landed).
agentenv_session_<name>, from the name the card gives (a name a cookie name can't hold is spelled safely, with a hash), and named on the card, so two sites a browser reaches under one gateway host (/website/a/,/website/b/) don't overwrite each other's sign-in. The sharedagentenv_sessionis no longer read: a website browser's cookies last one run and every site in a run is built from one image.X-Universe-Now, the clock, forwarded headers and cookies (now also: the session path sets the card's cookie) arewarned, main's existing status;--strictfails on a warning. Each line says(required)or(recommended). A page plus/api/healthwith no card or data plane fails, as on main.Left out
virtual_seconds_per_real_second): main's site clock reads the gateway's clock once per request, so it no longer extrapolates and has no rate to learn.models=: it read and wrote through the store main removed (sites keep their own data behind data hooks now), so it waits for a design note. Thedb/SQLAlchemy extra goes with it.Test
tst/unit/env/gateway,env/envs,bundle: 2,600 passed, 2 failed; the 2 (test_disk_recipe.py, the disk launcher) fail the same on unchanged main on this Mac./website/a/and/website/b/: on main, signing in as ben onais undone by openingb(one shared cookie, whichbcan't read and replaces); with this change each keeps its own cookie (agentenv_session_notes-a,agentenv_session_notes-b) andastays ben.E2E (agent-environments-admin VM, real gateway, local sandbox)
Two Notes sites (
notes-a,notes-b) in one multi env with the run's Playwright website browser, driven through the gateway's MCP as an agent does, both athttp://gateway:18765/website/<name>/:agentenv_session_notes-a/-b, and each site sets its own cookie. Signed in as ben onnotes-a, thennotes-bopened (ann),notes-ais still ben.agentenv_session, andnotes-ais back to ann afternotes-bis opened./svc/notes-a: 9 passed, also with--strict(before the card and data plane became required; the Notes image passes 9/9 with them required). Through/website/notes-athe required readiness check fails, as the gateway keeps the card off a site's route.about:blankin a new browser context, so its cookies and sign-ins are gone, while the sites still know the sessions (a plain client stays signed in).🤖 Generated with Claude Code


Confidence Score: 5/5
The reviewed changes appear safe to merge, with legacy-cookie compatibility supplied by PR #445.Summary
This PR gives each website its own session cookie and separates required checks from recommended checks.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart TD A[Run each check] --> B{Required?} B -->|Yes, check fails| C[failed] B -->|No, check fails| D[warned] C --> E[Run fails] D --> F{strict?} F -->|Yes| E F -->|No| G[Warning does not fail run]Reviews (19) · Last reviewed commit: "refactor(website): each conformance chec..." · Reviewed by Greptile