Repository navigation
Tighten the Relay bind warning, frame cookies, device codes, and the Hosted release check - #1533
Merged
Merged
Conversation
… and state Local networks only by address range A Relay started by hand with an https: origin and no DORMOUSE_BIND_HOST now says at startup that plain HTTP listens on every interface. The default stays, for containers. The published rows state what each promise rests on: the installers for the plaintext port, and address ranges for Local networks only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t frames share Frame origins sit under one domain, so a page could leave cookies there for its siblings. The bootstrap page now expires those it can see before the frame's page loads, leaving that origin's own. The security docs state what remains until the domain is on the Public Suffix List, and that a frame closes when its surface leaves the page's origin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A device code is now expiry, random bytes, and a truncated HMAC of both under its purpose's key, in the same 32-byte bearer shape. A poll answers `expired` on a bad tag before the database, so begin still writes nothing. A code begun for one purpose is no code for the other. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The verify job took npm's verdict on each pgstencil package, leaving the signer identity, source commit, and audit result to that night's audit. It now reads them itself before deploy: the Fulcio SAN and source digest, the signed payload, the commit on pgstencil main, and its security-audit check runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ookies too One tested script now holds the Hosted release to npm's verdict as well, so the workflow holds no inline gate or second package list. The device code reuses the shared byte helpers. The frame bootstrap also expires a partitioned cookie, a jar of its own that the first delete missed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deploying mouseterm with
|
| Latest commit: |
06e699e
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://3c8a7300.mouseterm.pages.dev |
| Branch Preview URL: | https://relay-and-hosted-tightening.mouseterm.pages.dev |
dormouse-bot
reviewed
Nov 3, 2026
dormouse-bot
left a comment
Collaborator
There was a problem hiding this comment.
The nameless-cookie case the new test covers doesn't actually expire anything in a browser. Inline below.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A nameless cookie is cleared by a value with no `=`, since a browser drops an empty name and value without touching it. The bootstrap now always clears the nameless cookie, whose value can also read as a name, and its test models how a browser files a write rather than recording the string. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Nov 3, 2026
The Settings line goes back to "networks you choose", with its original wrapping. The published guarantee and docs/specs/security.md keep the precise statement. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Nov 3, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Nov 3, 2026
dormouse-bot
approved these changes
Nov 3, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Nov 3, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Nov 3, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dormouse-bot
approved these changes
Nov 3, 2026
This was referenced Nov 3, 2026
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.
Tightens five behaviors across the Relay, Hosted, and the frame origin, and makes the published guarantees say what each one rests on.
What changes
https:origin and noDORMOUSE_BIND_HOSTnow warns at startup that plain HTTP listens on every interface. The unset default stays, for containers (S219). The published row now says the promise holds under a self-host installer.docs/specs/security.mdstates that the level checks addresses, not which network holds them. The Settings copy is unchanged.docs/specs/security.md-> "Known gaps" states what remains until the domain is on the Public Suffix List. A frame's closing is now worded per origin, as the code does it.expiry || random || truncated HMACunder its purpose's key, in the same 32-byte bearer shape. A poll answersexpiredon a bad tag before the database, and begin still writes nothing.verifyjob now reads each pgstencil package's signer, source commit, and signed payload, then that commit's place on pgstencilmainand itssecurity-auditruns. One tested script,hosted/scripts/pgstencil-provenance.mjs, now holds these checks and npm's verdict, replacing the inlinejq.Before merging or deploying
expired, which every shipped Burrow already handles. Enrollment started within ten minutes before the deploy has to begin again.verifyappliesS120as written, so any failedsecurity-auditrun on the installed commit refuses the deploy until that run is rerun or a new release ships.Hosted production releasewithpromoteoff once before relying on it.Testing
pnpm test: everything passes exceptlib/src/lib/lath/group-drop.test.ts, which timed out at 5 seconds at a load average above 50. It passes with a longer timeout, and this branch doesn't touch Lath.pnpm --filter dormouse-hosted testpasses, as dotsc -binlibandtsc --noEmitinstandaloneandhosted.🤖 Generated with Claude Code