Guide: MSP_ADMIN can read Architect + Claude tabs (should be BCOS_ADMIN only) #16
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
On the Guide (bcos.dev only — not deployed to production), a user with role
MSP_ADMINreceives the full body of every Architect and Claude tab. These tabs contain internal architecture: source file paths, DB table names, service ports, NGINX routes, and internal call flows. They are intended for BCOS staff only.Reproduction (live, bcos.dev)
Login as
msp_a@msp1.bcos.dev(roleMSP_ADMIN), then:Bodies are served, not just listed in nav — this is a content leak, not a UI-hiding issue.
Root cause
MarkdownGuideService.visible()(backend/src/main/java/com/hiveops/guide/service/MarkdownGuideService.java:105-113):Every Architect and Claude doc is tagged
audience: dev. The tier name reads like "developers only", butdevis gated identically tointernal, which resolves toROLE_MSP_ADMIN || ROLE_BCOS_ADMIN(GuideController.isInternal()). Only thebcostier is genuinely BCOS-only. The documented ladder (customer < internal < dev < bcos) is not the ladder the code implements.Fix
Retag the 162 Architect/Claude docs from
audience: devtoaudience: bcos, which routes them throughincludeBcos(BCOS_ADMIN only). No code change, no blast radius on other tiers.Verified: all 162 Architect/Claude docs are currently
audience: dev— none are tagged otherwise, so the retag is complete by construction.Deliberately NOT changing the
devtier mapping in code.devalso tags 35 Overview and 15 Internal docs; remapping the tier would strip those from MSP_ADMIN too, andagent.*modules (tabs: Internal/Architect/Claude only) would end up with zero visible tabs and disappear from MSP's nav entirely.Out of scope (per Johannes): the 66
Testingtabs are alsoaudience: devand stay MSP_ADMIN-visible.Impact / urgency
Guide is bcos.dev only; it is not routed in production (
api.bcos.cloud/guide/*hits the nginx catch-all). So there is no live customer-facing exposure today. This must be fixed before the Guide is ever deployed to prod.Follow-up (separate issue)
The
devtier is a footgun: it is named for developers but gates at MSP_ADMIN. Any future doc taggedaudience: devwill silently be MSP-visible. Consider renaming the tier or adding a startup assertion.