Repository navigation
docs(specs): Spec 118 profile pin as the visibility boundary for agent tokens - #1688
Conversation
…t tokens Related #1686 Records the maintainer decision (Option A, 2026-10-20): the operator-set profile pin bounds what a pinned agent token may learn exists on every REST and SSE read door, computed by the one shared enumeration predicate, failing closed on a missing or empty profile, with parity to the MCP surface which already applies the pin.
Deploying mcpproxy-docs with
|
| Latest commit: |
47821ce
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7eb5d8ce.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://118-pin-visibility-boundary.mcpproxy-docs.pages.dev |
Related #1686 Cross-review amendments: a pinned token may select only its own pin on ?profile= and the profile doors (MCP parity); /profiles/{name}/effective-tools, /profiles/active, the activity and tool-call grant-as-filter doors and their usage cache key, /diagnostics, /doctor, /catalog/search and the security scan routes join the door table; FR-005 is a same-code-path refusal rule instead of a cost claim; FR-014 is a non-normative design note; FR-019/FR-020 and A6 added.
|
Review amendments pushed (zcode was unavailable, Z.AI login expired; findings came from a Sonnet reader checked against main): pinned tokens may select only their own pin on |
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 39436569665 --repo smart-mcp-proxy/mcpproxy-go
|
Related #1686 Six verified findings: /profiles/active parity (one FR-004 exception), visible reach as the condition for every own-pin disclosure, own-pin view-as refused without visible reach, FR-007 reconciled with the coalesced servers.changed / attention.changed exception (hidden-only frames dropped, timing residual recorded), /security/overview and /security/queue reclassified as deployment-wide 403 denials, and switchable_to cleared for a pinned caller.
Related #1686 Carry the FR-004 /profiles/active exception through Compatibility, SC-003 and FR-018; use a disjoint profile in the active-profile example; state the servers.changed snapshot residual in FR-007 rather than claiming hidden-only suppression.
|
Parallel opencode gpt-6.1-sol chunked pass (4 chunks, 17 findings, 0 high / 14 medium / 3 low) merged on top of rounds 1-3 as |
What this covers
Spec 118 (docs only:
specs/118-pin-visibility-boundary/spec.mdand its requirements checklist) records the maintainer decision on #1686, Option A: the operator-set profile pin is a visibility boundary for agent tokens on every read surface, not only on dispatch.allowed_servers∩ the pinned profile's effective servers, computed in the one shared enumeration predicate every REST read door, SSE embed and derived count answers from.?profile=view-as andset_profilestay ergonomic narrowings and can never widen.switchable_toservers ∩ grant (REST keeps rejecting client credentials; the rule binds the MCP surface)./toolsand fix(httpapi): hold profile-pinned agent tokens to their pin on GET /api/v1/servers #1684/serversper-endpoint filters are replaced by the shared predicate or proven equivalent.scope_subtree.goheader doctrine ("profile is ergonomic, grant is the boundary") is superseded and must be rewritten;docs/features/agent-tokens.mdstates the rule.Doors covered:
/status,/events(embed, status frames, server-named events),/annotations/coverage,/review,/attention(+ embed),/profiles,/profiles/{name}, every per-server subtree route.No code in this PR. Next:
/speckit.plan.Related #1686