this is how the strip renders above the room header

Classification banner builder

Rocket.Chat

Compose the ABAC_Classification_Banners_Config document for Rocket.Chat. Add the attributes your rooms carry (e.g. from Virtru or LDAP), map each raw value to a display label and color, and the strip at the top renders live — exactly what members of a matching ABAC room will see. “Load example” shows the complete US-Government configuration from the design prototype. Pick the Rocket.Chat version you target: 9.0 adds banners for rooms that are not ABAC managed.

Banner options

Global settings for the strip itself — how segments are joined, colored and typeset.

Attributes

One entry per room attribute that should appear in the banner. Segments render in list order, joined by the delimiter. An attribute produces a segment when the room carries at least one value for it; values without an explicit mapping render as their raw value.

Non-ABAC rooms

Banners for rooms that are not ABAC managed: DMs, group DMs, discussions, federated rooms and regular channels. The first enabled entry whose room match fits is shown; when none fits, the first enabled entry that applies to any room is the default. With no entries these rooms show no banner. Omnichannel rooms never show a banner.

Simulated room values

A pretend room for the live preview only — not part of the JSON. Choose the kind of room; for an ABAC room, pick which raw values it carries per attribute, like assigning ABAC attributes to a room in Rocket.Chat. Type a value not in the mapping to see how unmapped values render raw.

Configuration JSON

Paste into Admin → ABAC → Settings → Classification banners → configuration (JSON) and enable the toggle.

Classification banners (ABAC)

Renders a US-Government-style classification banner above the room header, driven by a JSON configuration stored in the ABAC_Classification_Banners_Config admin setting (Admin → ABAC → Settings), toggled by ABAC_Classification_Banners_Enabled. Rocket.Chat 8.8 and 8.9 show it in ABAC-managed rooms only; 9.0 adds optional banners for every other room.

In 8.8 and 8.9 the configuration is a public setting: it syncs to every logged-in client, and the banner is computed client-side from the room's abacAttributes, so any logged-in user can read the full configuration (all source keys and value→label/color mappings). In 9.0 the setting is private: the server computes the banner and sends only the result with the room (rooms.info).

Configuration schema

Both versions use version 1 of the configuration, described by the JSON Schema with $id: https://rocket.chat/schemas/classification-banners/v1.json (published in the Rocket.Chat repository at ee/packages/abac/docs/classification-banners.schema.json). Rocket.Chat checks the document against it when the setting is saved.

9.0 adds the optional nonAbacBanner list without a version bump, so every 8.8 document stays valid in 9.0. The reverse does not hold: the schema forbids unknown properties, so an 8.8 or 8.9 server rejects a document that carries nonAbacBanner. Pick the target version with the toggle in the header; in 8.8 / 8.9 mode the builder leaves nonAbacBanner out of the JSON.

Semantics

Cross-field rules

These rules are part of the v1 contract but cannot be expressed in the JSON Schema, so Rocket.Chat does not check them on save. This builder does:

Example

The bundled example reproduces the design prototype's default state. For a room with clearance.level = [TS], access.programs = [SAP-1042, SAP-2271, SAP-3380], dissem.relto = [USA] it renders TOP SECRET // SAR-APPLES/BANANAS/ORANGES // RELTO USA on the Top Secret orange. In 9.0+ it also gives federated rooms an UNCLASSIFIED // EXTERNAL banner and every other non-ABAC room an UNCLASSIFIED one. Use Load example to open it in the builder and copy its JSON.

Replace your current work?

Import configuration