UX Spec: Classification Markings
Overview
This spec defines the end-to-end user experience for Classification Markings in Mattermost. The feature enables defense, intelligence, and allied-nation customers to visually mark their Mattermost environment and channels with the correct security classification level.
What’s in scope:
A simple, flexible data model for classification levels (text, color, rank)
Prepackaged country/framework presets (Tier 1: US DoD, UK, Canada, Australia. and NATO)
Fully custom classification level creation for admins
Persistent global classification banner (top and/or bottom, admin-configured)
Channel-level classification banners (configured per channel)
Consistent rendering across web, desktop, and mobile clients
Goals
Regulatory compliance: Meet the visual marking requirements of STIG V-222643/V-6146, DoDM 5200.01 Vol. 2, ISOO marking standards, UK GSCP, Australian PSPF Policy 8, Canadian security policy, and NATO STANAG 4774/4778. Ensure customers can achieve and maintain their ATO and equivalent certifications.
Competitive differentiation: ship native, multi-national classification marking out of the box, across all clients.
Admin simplicity: A system admin with no developer expertise can select a country preset, configure the global banner, and have classification markings live in under 15 minutes.
Extensibility: The data model and UX must accommodate custom organizational taxonomies and future phases (team classification, smart markings, ABAC) without requiring architectural rework.
Terminology
Term | Definition |
|---|---|
Classification Level | A single classification marking that can be applied to resources. Each level has a text label, a color (background), and a rank determined by its position in the ordered list. Dissemination controls or caveats can be embedded directly in the level text if needed (e.g., "SECRET//NOFORN"). |
Classification Preset | A prepackaged set of classification levels shipped with Mattermost that provides the standard classification levels and color codes for a specific country or framework. Presets auto-fill the classification levels table and are fully editable after selection. |
Global Classification Banner | A persistent, fixed-position banner displayed at the top of the Mattermost application on every view. Indicates the overall classification level of the system. Configured exclusively by the system admin via the System Console. |
Channel Classification Banner | A banner displayed at the top of a channel view indicating the classification level assigned to that channel. Configured per channel in the channel configuration settings. Extends to threads and displays the same channel classification banner when viewing a specific conversation/thread. |
Admin Console UX (System Console)
The Classification Markings feature lives under the Site Configuration section in the System Console sidebar, as shown in the mockup:
We will serve a notice as per the below mockup to highlight to users that classification markings are for display purposes only at this time. Once this changes we will need to remove this notice from being displayed.
Enable Classification Markings
How: A True/False radio button toggle at the top of the page.
Label: "Enable classification markings"
Help text: "Use this to enable classification markings as banners at the system and channel level. You can pre-select text and colors for your banner, as well as set a default option for consistency."
When set to False, the rest of the page is hidden or disabled.
Classification preset
A dropdown selector at the top of the section. Options include country presets (e.g., "United States", "NATO", "UK", "Canada", "Australia") and "Custom classification levels". Help text: "Select a classification preset from the dropdown menu based on your country affiliation. This will help tailor the options to your specific needs. You can also create set custom classification levels."
When a preset is selected, the classification levels table below is auto-filled with the preset's levels.
Classification Levels
Classification Level Object
Each classification level is a simple object with three user-facing properties: text, color, and rank. Rank is automatically derived from the order of levels in the table (position 1 = rank 1, etc.).
Classification Level Table Elements
Column | Description |
|---|---|
Drag handle (only visible if custom selected) | Allows reordering rows via drag-and-drop (reordering updates rank) for custom classification markings only |
Text | The classification level text (e.g., "UNCLASSIFIED", "CUI", "CONFIDENTIAL") |
Color | A color swatch and hex value (e.g., |
Rank | Automatically assigned based on row position (1, 2, 3, ...) |
Delete | A red trash icon to permanently delete the level from the table |
Below the table: an "+ Add level" button to add a new classification level row.
Behavior when the table is modified: If the admin adds a new level, edits any text or color, deletes a level, or reorders levels, the classification preset dropdown automatically switches to "Custom classification markings". This indicates that the configuration no longer matches a standard preset. To revert to the original preset, the admin can re-select the country from the dropdown.
Hierarchy Enforcement Rules (Nice-to-have)
Global classification level is the absolute ceiling. No channel can be classified above the global level (if one is set).
Channel classification can be independently set at any level ≤ global level.
Upward reclassification is allowed up to the global classification level set for the server: a channel can be increased from UNCLASSIFIED → CONFIDENTIAL so long as the server’s global classification level is set to CONFIDENTIAL or higher.
Downward reclassification is blocked once messages exist: if messages were posted under a classification of SECRET, the channel cannot be downgraded below SECRET. This prevents inadvertent declassification of existing content.
Classification at channel creation is optional, channels may be created without a classification.
Country Presets & Custom Classification Levels
Tier 1 Presets (Ship in V1)
These are prepackaged classification level sets shipped with the product. Each preset is a starting template, fully editable after selection. Selecting a preset auto-fills the classification levels table.
United States
Source: https://www.astrouxds.com/components/classification-markings/
Text | color | Rank |
|---|---|---|
UNCLASSIFIED |
| 1 |
CUI |
| 2 |
CONFIDENTIAL |
| 3 |
SECRET |
| 4 |
TOP SECRET |
| 5 |
TOP SECRET//SCI |
| 6 |
NATO
Source: https://cyberintelsystems.com/classification-codes/
Text | color | Rank |
|---|---|---|
NATO UNCLASSIFIED |
| 1 |
NATO RESTRICTED |
| 2 |
NATO CONFIDENTIAL |
| 3 |
NATO SECRET |
| 4 |
COSMIC TOP SECRET |
| 5 |
UK (GSCP)
Source: https://cyberintelsystems.com/classification-codes/
Text | color | Rank |
|---|---|---|
OFFICIAL |
| 1 |
OFFICIAL-SENSITIVE |
| 2 |
SECRET |
| 3 |
TOP SECRET |
| 4 |
Canada
Source: https://cyberintelsystems.com/classification-codes/
Text | color | Rank |
|---|---|---|
PROTECTED A |
| 1 |
PROTECTED B |
| 2 |
PROTECTED C |
| 3 |
CONFIDENTIAL |
| 4 |
SECRET |
| 5 |
TOP SECRET |
| 6 |
Australia (PSPF)
Source: Classification Codes
Text | color | Rank |
|---|---|---|
UNOFFICIAL |
| 1 |
OFFICIAL |
| 2 |
OFFICIAL:Sensitive |
| 3 |
PROTECTED |
| 4 |
SECRET |
| 5 |
TOP SECRET |
| 6 |
Preset Auto-Fill and Custom Levels Behavior
When an admin selects a preset from the Classification preset dropdown:
The classification levels table is auto-filled with the preset's levels (text, color, rank order).
The admin can immediately see all levels populated in the table.
The ability to reorder the classification levels is disabled
Custom Classification Levels
Admins can create a fully custom set of classification levels from scratch by selecting "Custom classification levels" from the preset dropdown, or by starting from a preset and modifying it. Each level requires only a text label and a color. The rank is determined by the row order in the table.
Retention of custom classification markings: Custom classification levels are retained in the system even if the admin switches to a different preset and saves. This means if an admin has built a custom set of levels, switches to a country preset, saves, and later wants to return to their custom configuration, the custom levels are preserved and can be restored by selecting "Custom classification markings" from the preset dropdown.
Global Classification Banner
The global classification banner fulfills the requirements that applications processing classified information must display a persistent classification banner indicating the highest classification level of information the system is authorized to process.
As per different requirements, the banner marking must be displayed conspicuously at the top of the interface or at both the top and bottom of the interface depending on the users selection choice for the banner visibility option.
The global classification banner is configured under the "Global Classification Indicators" section of the Classification Markings page in the System Console, and is different from the current announcement banner we have today:
Global Classification Banner: Radio buttons for setting whether the global classification banner is visible for the entire Mattermost environment.
Banner visibility: Radio buttons for setting whether the global classification banner is visible only at the top or across both the top and bottom of the application.
Global classification level: A dropdown to select the classification level for the global classification banner. The dropdown shows all enabled classification levels from the levels table, with their associated color swatch.
Both global classification banners and channel classification banners (when both enabled) are always visible simultaneously. They are never hidden, collapsed, or dismissed. This is a regulatory requirement, not a user preference. Additionally these banners extend to threads, showing the corresponding classification banner for the channel where that thread originates from.
Relationship to Channel Classification Banner
The global classification banner and the channel classification banner are independent visual elements displayed simultaneously.
The global classification banner is present on every view; the channel classification banner is present only within a classified channel, and on any thread a user is looking at.
A channel's classification level rank cannot exceed the global classification level rank.
Channel Classification Banner vs. Channel Classification Label
This work may be out of scope for the MVP but is documented here for future understanding.
Users can specify during initial channel setup or via the channel settings (documented below) whether they want a channel to utilize a
channel classification banneror achannel classification label. The below mockups display the difference between the two implementations. The underlying component driving the label is thelabel tagcomponent.
Edge case: Announcements
Announcement banners will display alongside global classification banners and channel classification banners, persisting below these banners as they are by definition content of either the Mattermost environment or the channel itself.
Channel Classification Banner
Once classification markings are enabled in the System Console, the option to set a classification level becomes available in the Channel Settings dialog under the Configuration tab for existing channels. Additionally, the option to add a channel classification banner is shown when creating a new channel as demonstrated in the mockup below.
Creating a new channel → Channel Banner configuration
As shown in the mockup above, the channel classification banner options appear within the modal displayed during new channel creation.
Channel classification: A toggle switch (on/off). Help text: "When enabled, classification markings will appear for this channel."
Classification level: A dropdown showing all enabled classification levels with their color swatch (e.g., "UNCLASSIFIED" with a green swatch). Only levels with a rank ≤ the global classification level are shown.
Banner text: A text field that auto-populates based on the selected classification level. The admin or channel admin can edit this to customize the banner text (e.g., adding dissemination controls: "UNCLASSIFIED").
Classification indicator: A radio button pair where a user can select either
Channel Header LabelorChannel Banner(this work is potentially not part of MVP delivery)
Channel Settings → Configuration → Channel classification
As shown in the mockup above, the channel classification settings appear within the Configuration section of Channel Settings:
Channel classification: A toggle switch (on/off). Help text: "When enabled, classification markings will appear for this channel."
Warning notice: A warning notice stating that, “Classification markings are information only.” Help text: “Markings are not tied to access control decisions at this time and are for display purposes only.”
Classification level: A dropdown showing all enabled classification levels with their color swatch (e.g., "UNCLASSIFIED" with a green swatch). Only levels with a rank ≤ the global classification level are shown. (future functionality)
The remaining controls are driven by the channel banner section, which becomes enabled due to the use of the channel classification settings.
Banner text: A text field that auto-populates based on the selected classification level. The admin or channel admin can edit this to customize the banner text (e.g., adding dissemination controls: "UNCLASSIFIED").
Banner color: This field is disabled as the color value for channel classifications is externally managed.
Behavior
Selecting a classification level from the dropdown auto-populates the banner text and banner color fields.
The admin/channel admin can override the banner text if needed (e.g., to add "//NOFORN" to the text).
Disabling the channel banner toggle hides the classification dropdown, text, color fields, and .
The dropdown only shows classification levels that are enabled (visible) in the System Console and with a rank ≤ the global classification level.
Downgrade protection (nice-to-have): If the channel has messages posted under the current classification, the dropdown disables all levels with a lower rank. A tooltip on the disabled options reads: "Cannot downgrade since messages exist at [CURRENT LEVEL] classification."
Channel Settings → Configuration → Channel banner
As shown in the mockup above, a user can still utilize the channel banner functionality so long as the classification functionality is in a disabled state.
Reclassification Rules
Action | Allowed? | Conditions |
|---|---|---|
Set classification on an unclassified channel | ✅ Yes | Must be ≤ global classification level (if set) |
Increase classification (e.g., UNCLASSIFIED → CONFIDENTIAL) | ✅ Yes | New level must be ≤ global classification level |
Decrease classification | ⚠️ Conditional | Blocked if messages have been posted at the current or higher classification. If no messages exist at the current level, downgrade is allowed. (future functionality) |
Remove classification entirely | ⚠️ Conditional | Same rule as decrease — blocked if any messages exist under a classification. (future functionality) |
When a downgrade is blocked, the UI shows:
"This channel's classification cannot be reduced below [LEVEL] because messages have been posted at this classification level. Contact your system administrator for assistance."
Threads
The channel classification banner applies to the entire channel, including the thread panel.
When the thread RHS is open or in the threads inbox, the channel banner should be displayed.
Mobile
Below are mockups which represent the various ways a global classification banner, channel classification banner, and channel classification label can appear on mobile.
The global classification banner on mobile has been adjusted to be 20px in height and uses the Body 75 - Semibold - 12px/16px font token. We also intend for the global classification color to the top bar / status bar area as well.
Resources
Classification marking sources:
https://www.astrouxds.com/components/classification-markings/ (US Space Force Design System)