-
Notifications
You must be signed in to change notification settings - Fork 0
SSO-gated install: bootstrap any host without a shared token #41
Copy link
Copy link
Open
0 / 10 of 1 issue completedOpen
0 / 10 of 1 issue completed
Copy link
Labels
area: authAuthentication, authorization, sessions, or identity.Authentication, authorization, sessions, or identity.component: securitySecurity, permissions, secrets, or vulnerability handling.Security, permissions, secrets, or vulnerability handling.priority: P2Medium; normal planned work.Medium; normal planned work.status: blockedCannot move forward until an external dependency is resolved.Cannot move forward until an external dependency is resolved.type: featureNew user-facing or operator-facing capability.New user-facing or operator-facing capability.
Description
Activity
Metadata
Metadata
Assignees
Labels
area: authAuthentication, authorization, sessions, or identity.Authentication, authorization, sessions, or identity.component: securitySecurity, permissions, secrets, or vulnerability handling.Security, permissions, secrets, or vulnerability handling.priority: P2Medium; normal planned work.Medium; normal planned work.status: blockedCannot move forward until an external dependency is resolved.Cannot move forward until an external dependency is resolved.type: featureNew user-facing or operator-facing capability.New user-facing or operator-facing capability.
What to build
An SSO-gated way to bootstrap the estate agent setup on any host, so getting a
new machine to parity is a login rather than a token pasted from somewhere.
Today the install path is a
curlatknowledge-apicarryingKB_BEARER_TOKEN— a long-lived shared secret in~/.claude.jsonon everymachine that ever ran it, which is exactly what the knowledge retirement is
trying to end. The public asset host replaces the transport for content that
is not secret, but it deliberately has no identity: it serves the same bytes
to anyone.
What is missing is a per-host, per-user step for the parts that are
secret: the memory server's API key, the Overleaf session cookie, and
whatever the GitHub MCP server needs. Those cannot live on a public asset
host, and they should not be a shared token either.
The estate already has the pieces: auth-api issues OIDC, several services run
their own client (
outline,hermes,grafana), andDOWNSTREAM_CLIENT_PERMISSIONSmaps a client to aServicePermission. So aninstall endpoint behind SSO can mint short-lived per-host credentials and hand
back a config the setup script consumes.
Design questions this ticket has to answer, not assume:
session yet) or a copy-paste of a short-lived token from a logged-in
browser.
shared bearer token cannot express at all.
Acceptance criteria
no pre-shared secret.
revoking one and watching it stop working.
setup-workstation.shconsumes the result without a second manual step.Children
Repair or report the failing github MCP server #48 (moved here from
Epic: fix what setup-workstation.sh leaves broken #44 on 2026-09-14 — the 400 is a credential problem, not a script defect)
Blocked by