|Learn

System Messages

A classification framework for non-conversational messages in the Microsoft Copilot chat surface. Covers 4 categories, 5 visual types, content guidelines, behavior rules, and 16 scenario mappings.

Article02/23/202616 scenarios mapped

Overview

Definition

A system message is any message displayed within the chat surface that originates from the system — not from the user and not from Copilot. System messages sit outside the normal conversational flow and serve four distinct purposes:

Confirmations

A user or system action that changed the state of the conversation has completed.

e.g., Saved as agent, stopped responding, regenerated with a different model

State changes

A mode, session, or time period has started or ended, creating a structural break in the timeline.

e.g., Screen sharing ended, voice chat ended, date changed

Notices

A condition about ownership, permissions, visibility, or access — either conversation-wide or at a specific point in the timeline.

e.g., Someone shared this chat with you, this chat is read-only, messages beyond this point are only visible to you

Feedback

The system solicits user input about an experience, feature, or interaction quality.

e.g., How is Copilot performing? (1–5 scale), Rate this voice session

Not conversational

Never has a Copilot avatar, never appears in a chat bubble, and never implies Copilot is speaking.

Inline in the chat timeline

Positioned relative to the messages around them, contextual to where they appear.

Informational or structural

Confirms an action, marks a transition, establishes a boundary, or communicates a caveat.

Important

System messages are never attributed to Copilot. They have no avatar, no "Copilot" label, and no conversational framing. They are from the system, presented as neutral facts.

What is NOT a system message

Several patterns in the chat surface may look similar to system messages but serve different purposes and use different treatments.

ScenarioCorrect PatternWhy
Copilot performing an action visible in the main canvas (e.g., generating a document, editing a slide)Chat OutputThe action and its result are part of the conversational exchange. Copilot is responding to a user request.
System-level errors (e.g., "Copilot is unavailable," network failure)Message BarThese are application-level states that affect the entire surface, not specific to a point in the chat timeline.
UI state changes (e.g., suggestion chips collapsing, input field resizing)UI BehaviorThese are visual state transitions of interactive components, not informational messages.
Transient action feedback (e.g., "Response copied," "Feedback submitted")ToastThese confirm micro-interactions that have no lasting impact on the conversation. The action doesn’t change the state of the chat or system — it’s momentary UI feedback that can safely disappear.

Classification Taxonomy

Every system message falls into exactly one of four categories. Each category maps to one or more visual types and answers a different question:

ConfirmationInline Notice

What just happened?

Something the user or system did has completed. The message is a receipt.

Saved as Research Assistant
State ChangeDivider

What just started or ended?

A mode, session, or time period has transitioned. The divider separates before from after.

Screen sharing ended
NoticeBanner / Inline Notice

What should I know about visibility or access?

A condition about ownership, permissions, visibility, or access — either conversation-wide (Banner) or at a specific point (Inline Notice).

Mona Kane shared this chat with you
FeedbackFeedback Card

How was this experience?

The system solicits user input about an experience, feature, or interaction quality. Unlike other categories, feedback messages are interactive.

How is Copilot performing?
12345

Confirmation

Communicates that something happened. The action is complete; the message is a receipt. Specifically, Confirmations are for state-changing actions — actions that alter the conversation, create something new, or change how the system behaves.

  • Always appears at the point in the timeline where the action occurred
  • Never requires user response
  • May include an optional action link (e.g., "Give feedback") but the link is supplementary, not primary

Examples: "Saved as agent," "Stopped responding," "Regenerated with GPT-4"

What qualifies as an Confirmation?

The test is timeline significance: if you returned to this conversation tomorrow, would you need to know this action happened?

ActionTimeline impact?Pattern
Save as agentYesConfirmation — a new entity was created
Stop respondingYesConfirmation — the conversation flow was altered
Regenerate with GPT-4YesConfirmation — the response below uses a different model
Copy responseNoToast — clipboard is transient, nothing in the chat changed
Share responseNoToast — sharing happens outside the chat
Thumbs up / downNoToast — feedback is captured elsewhere
Confirmation vs. Toast

Both confirm a completed action, but they differ in scope. Confirmations confirm system/operational actions that change state (save, stop, regenerate, export). Toasts confirm transient micro-interactions with no lasting impact (copy, share, like). Toasts live outside the timeline as ephemeral overlays. Confirmations live inside the timeline as permanent records.

Confirmation vs. Chat Output

Not every action in the chat is a system message. If Copilot is performing work and showing you the result as part of conversation, that's a Chat Output — not a system message.

System message (Confirmation)NOT a system message (Chat Output)
Saved as Research Assistant"Here's your research summary..."
Stopped respondingCopilot generating a document
Regenerated with GPT-4Copilot editing a slide

State Change

Marks a structural break in the conversation timeline. The chat had a mode or session active, and it has now ended (or begun).

  • Visually spans the full width of the chat surface
  • Acts as a separator between what came before and what comes after
  • May include a timestamp or session label

Examples: "Screen sharing ended," "Voice chat ended," "February 23, 2026"

Notice

Communicates a condition about ownership, permissions, visibility, or access. Notices come in two forms depending on scope:

  • Conversation-wide (Banner): Applies to the entire conversation. Appears at the top of the chat surface, above all messages. May be dismissible if non-critical after first read.
  • Point-specific (Inline Notice): Marks a specific point in the timeline where visibility or interaction rules change. Always includes a directional reference ("beyond this point," "from here"). Persistent — never dismissible, because the boundary condition is permanent.

Examples: "Mona Kane shared this chat with you," "This chat is read-only," "Messages beyond this point are only visible to you"

Feedback

Solicits user input about an experience, feature, or interaction quality. Unlike the other three categories which are purely informational, feedback messages are interactive — they expect a response.

  • Triggered by the system at determined intervals — not tied to a specific user action
  • May appear after specific interaction types (e.g., after a voice agent session)
  • Always dismissible — the user can skip or ignore the prompt
  • Collapses to a confirmation after submission (e.g., "Thanks for your feedback")

Examples: "How is Copilot performing?" (1–5 scale), "Rate this voice session"

Feedback vs. Toast

Thumbs up/down on individual responses is a Toast — it's a transient micro-interaction confirming the feedback was captured. A Feedback message is different: it's a system-initiated prompt that asks the user to evaluate a broader experience, not a single response.

Decision Tree

Use this flowchart to classify any new scenario:

Decision Tree
?A new scenario needs a message in the chat surface
Is it a system-level error or outage?
YESUse Message Bar(not a system message)
Is Copilot performing an action and showing the result?
YESUse Chat Output(not a system message)
Is it a UI component changing state (no new information)?
YESUse UI Behavior pattern(not a system message)
Does it confirm that a discrete action completed?
YESConfirmationInline Notice
Does it mark the start or end of a session, mode, or time period?
YESState ChangeDivider
Does it communicate ownership, permissions, visibility changes, or access conditions?
YESNoticeBanner or Inline Notice
Does it solicit user feedback about an experience or interaction?
YESFeedbackFeedback Card
None of the above? Revisit the scenario.

Decision principles

Classification Rules

1. Mutual exclusivity. Every scenario maps to exactly one category. If a scenario seems to fit two, use the more specific one (Confirmation > State Change > Notice > Feedback).

2. Timeline specificity. If the message is tied to a specific point in the chat timeline, it's not an Notice. Notices apply globally.

3. Action vs. state. If something "happened" (verb, past tense), it's likely an Confirmation. If something "is" (state, present tense), it's likely an Notice.

Visual Anatomy

Each of the four system message categories maps to one or more visual types. Below are the component specifications, token references, and live rendered examples.

Inline Notice — Confirmation

Used for action confirmations. Lightweight, non-interruptive.

Live Example
Save this as an agent called Research Assistant
I've set up Research Assistant for you. It can help with academic papers, literature reviews, and citation management.
System Message
Saved as Research AssistantUndo
ElementRequiredDescription
IconYes16px icon indicating the action type. Positioned left of the text.
Message textYesSingle sentence describing the completed action.
Entity nameConditionalBold text for the specific entity involved (e.g., agent name, model name).
Action linkOptionalTertiary text link for supplementary actions (e.g., "Give feedback").
Token Reference

Message text: colorNeutralForeground2 Body 2 / regular

Entity name: colorNeutralForeground1 Body 2 / semibold

Action link: colorBrandForeground1 Body 2 / regular

Icon: colorNeutralForeground3 16px

Container: No background, no border, no card. Spacing: 8px compact, 12px standard.

Divider — State Change

Used to mark structural breaks in the timeline. Visually separates "before" from "after."

Live Example
Save this as an agent called Research Assistant
I've set up Research Assistant for you. It can help with academic papers, literature reviews, and citation management.
System Message
Screen sharing ended
ElementRequiredDescription
Divider lineYesFull-width horizontal rule spanning the chat content area.
Label textOptionalCentered text sitting on top of the divider line (e.g., "Screen sharing ended").
TimestampOptionalTime or date displayed alongside or replacing the label.
IconOptional16px icon to the left of the label for additional context.
Token Reference

Label text: colorNeutralForeground3 Caption 1 / regular (12px/16px)

Line: 1px solid colorNeutralStroke2

Spacing: 16px above and below.

Notice uses two visual expressions depending on scope.

Banner — conversation-wide

Used to communicate conversation-wide conditions. Prominent, positioned at the top.

Informational Banner
System Message
Mona Kane shared this chat with you
Save this as an agent called Research Assistant
I've set up Research Assistant for you. It can help with academic papers, literature reviews, and citation management.
Warning Banner
System Message
Your organization has restricted some topics in this chat
Save this as an agent called Research Assistant
I've set up Research Assistant for you. It can help with academic papers, literature reviews, and citation management.
ElementRequiredDescription
ContainerYesFull-width background fill spanning the chat surface.
IconYes16px icon indicating the notice type (e.g., info, warning).
Message textYesSingle sentence describing the access condition.
Entity nameConditionalBold text for specific entities (e.g., person name, org name).
Dismiss buttonOptional"X" button to dismiss the banner after reading.
Action linkOptionalLink for further action (e.g., "Learn more").
Token Reference

Info background: colorNeutralBackground4

Warning background: colorPaletteYellowBackground1

Info icon: colorNeutralForeground2

Warning icon: colorPaletteYellowForeground1

Text: colorNeutralForeground1 Body 2 / regular. Entity: semibold.

Layout: Pinned to top, full width, 12px internal padding, no border-radius.

Inline Notice — point-specific

Used to indicate a change in visibility or interaction rules at a specific point in the timeline.

Live Example
Save this as an agent called Research Assistant
I've set up Research Assistant for you. It can help with academic papers, literature reviews, and citation management.
System Message
Messages beyond this point are only visible to you
ElementRequiredDescription
IconYes16px icon indicating the boundary type (e.g., lock icon for visibility).
Message textYesSingle sentence describing the boundary condition.
Divider lineOptionalA subtle horizontal line above or below the text to reinforce the boundary.
Token Reference

Message text: colorNeutralForeground3 Caption 1 / regular (12px/16px)

Icon: colorNeutralForeground3 16px

Container: No background. Whitespace + optional divider for separation. Spacing: 16px above and below.

Feedback Card — Feedback

Used to solicit user input about an experience or interaction. The only interactive system message type — it contains response controls (rating scale, buttons) and expects user action.

Live Example
Save this as an agent called Research Assistant
I've set up Research Assistant for you. It can help with academic papers, literature reviews, and citation management.
System Message
How is Copilot performing?
Not helpfulVery helpful
ElementRequiredDescription
ContainerYesRounded card with subtle background and border. Visually distinct from chat bubbles.
IconYes16px icon indicating the feedback type (e.g., star for rating). Positioned top-left.
Question textYesShort, direct question about the experience. Semibold weight to distinguish from body text.
Rating controlsYesInteractive input — numbered scale (1–5), star rating, or thumbs up/down. Must be clearly tappable.
Scale labelsOptionalAnchor labels at each end of the scale (e.g., "Not helpful" / "Very helpful").
Dismiss buttonYes"X" button to dismiss the card without responding. Feedback is always optional.
Token Reference

Question text: colorNeutralForeground1 Body 2 / semibold

Scale labels: colorNeutralForeground4 Caption 1 / regular

Icon: colorNeutralForeground3 16px

Container: colorNeutralBackground4 with 1px colorNeutralStroke2 border. Border-radius: 8px. Padding: 12px 16px.

Rating buttons: 32×32px, 1px border colorNeutralStroke2, white fill. On hover: colorNeutralBackground4.

Content Guidelines

Tense

SituationTenseExample
An action just completedPast tense"Saved as My Agent"
A session or mode endedPast tense"Screen sharing ended"
An ongoing condition or statePresent tense"Messages beyond this point are only visible to you"
Ownership or access infoPast tense for the action, present for the state"Mona Kane shared this chat with you"
Soliciting feedbackPresent tense (question form)"How is Copilot performing?"

Brevity

  • One sentence maximum. No periods at the end unless the sentence is structurally complex enough to require one.
  • Prefer fragments over full sentences when the meaning is clear: Saved as My Agent not "Your response has been saved as an agent called My Agent."
  • Never include redundant phrasing like "Please note that" or "This is to inform you that."

Bold formatting

Bold the specific entity name when one is present:

  • "Saved as Research Assistant"
  • "Regenerated with GPT-4"
  • "Mona Kane shared this chat with you"
Note

Do not bold generic descriptions. "Stopped responding" has no entity name to bold. "Screen sharing ended" has no entity name to bold.

Action links

  • Use action links sparingly — only when there's a meaningful follow-up action the user might want to take.
  • Phrase as verbs: "Give feedback," "Learn more," "Undo"
  • Action links are always tertiary-styled text links, never buttons.

Attribution

Important

System messages are never attributed to Copilot. They have no avatar, no "Copilot" label, and no conversational framing. They are from the system, presented as neutral facts.

Quick reference

RuleGuideline
LengthOne sentence max. Prefer fragments when clear.
TensePast for completed actions ("Saved as..."). Present for ongoing states ("Messages beyond this point...").
BoldBold the entity name: Saved as Research Assistant. Don't bold generic descriptions.
LinksVerb-phrased, sparingly used: "Give feedback," "Undo," "Learn more"
AttributionNever from Copilot. No avatar, no label, no chat bubble.
PeriodsNo period unless the sentence is structurally complex.

Behavior

Persistence

Visual TypePersistenceRationale
Inline NoticePermanentPart of the timeline history. Removing it would create a gap in the record of what happened.
DividerPermanentStructural marker. The session boundary is a fact; it doesn't expire.
Inline NoticePermanentThe boundary condition is ongoing. Removing it would obscure the visibility change.
BannerDismissible (optional)The access condition persists, but the user may not need the reminder after first read. If dismissed, it should be accessible via a "chat info" affordance.
Feedback CardDismissibleFeedback is always optional. The card is dismissed after submission or when the user closes it. After submission, collapses to a brief confirmation.

Timing

  • Confirmation: Appears immediately after the action completes, at the point in the timeline where the action occurred.
  • State Change: Appears immediately when the session or mode ends (or begins).
  • Notice (conversation-wide): Appears when the chat is opened, before any messages are scrolled into view.
  • Notice (point-specific): Appears at the exact point in the timeline where the boundary takes effect.
  • Feedback: Appears at system-determined intervals, or immediately after a specific interaction type ends (e.g., voice session).

Scroll behavior

Visual TypeBehavior
Inline Notice, Divider, Inline Notice, Feedback CardScroll with the chat content. They are part of the timeline.
BannerPinned to the top of the chat surface. Does not scroll. Remains visible regardless of scroll position (until dismissed).

Interaction

  • System messages are not interactive by default. They do not have hover states, focus states, or click targets (except for optional action links and dismiss buttons).
  • Action links follow standard link interaction patterns (hover underline, focus ring).
  • System messages are not selectable as text (they are UI elements, not content).

Animation

  • System messages appear without animation. They are inserted into the timeline or pinned to the top as part of a state change.
  • Dismissing a banner uses a standard fade-out (200ms, ease-out).

Behavior summary

Visual TypePersists?Scrolls?Animated?
Inline NoticePermanentYes (in timeline)No
DividerPermanentYes (in timeline)No
Inline NoticePermanentYes (in timeline)No
BannerDismissibleNo (pinned to top)Fade-out on dismiss (200ms ease-out)
Feedback CardDismissibleYes (in timeline)Collapse on submit (200ms ease-out)

Related pattern: UI State Collapse

Not a system message

When the user bypasses an interactive suggestion (e.g., types a new message instead of tapping a suggestion chip), the suggestion UI should collapse to avoid cluttering the timeline. This is a UI behavior, not a system message.

The collapsed state shows a brief label (e.g., "3 suggestions") or collapses entirely. No system message is generated — the collapse is a UI behavior, not an informational event.

Scenarios

This section maps every audited scenario (and anticipated future scenarios) to the framework. For each scenario, it identifies the correct category, visual type, and what changes are needed from the current implementation.

Audited Scenarios

These 7 scenarios have been observed and audited against the current Copilot implementation.

#1 Save as AgentConfirmation
Major
Scenario: User saves a Copilot response as a reusable agent. The system confirms the action.
Current: Rendered as a Copilot chat response (with avatar and chat bubble).
Problem: This is not Copilot speaking — it’s a system confirmation of an action. Rendering it as a Copilot response implies Copilot is "telling" the user what happened.
Visual type: Inline Notice
Recommended: Left-aligned inline notice with a checkmark icon. Text: Saved as [Agent Name]. Optional action link: "View agent" or "Undo". No avatar, no chat bubble, no Copilot attribution.
#2 Suggestions BypassedNot a System Message
Major
Scenario: User types a new message instead of tapping a suggested response. The suggestion chips remain expanded.
Current: Suggestions stay expanded with no visual change.
Problem: Expanded suggestions clutter the timeline after they’re no longer relevant. However, this is NOT a system message scenario — it’s a UI state issue.
Visual type: N/A — UI State Collapse
Recommended: Collapse bypassed suggestions to a compact state (e.g., "3 suggestions" label) or remove entirely. Use height transition animation (200ms, ease-out). Do not generate a system message.
#3 Screen Sharing / Voice Chat EndedState Change
Minimal
Scenario: A screen sharing or voice chat session ends. The system marks the transition in the timeline.
Current: Centered divider with timestamp text (e.g., "Screen sharing ended · 2:34 PM").
Problem: The current implementation is reasonable but not formalized. No documented pattern, so variations may emerge across teams.
Visual type: Divider
Recommended: Full-width divider line with centered label. Text: Screen sharing ended or Voice chat ended. Optional timestamp. No icon required.
#4 Manually Stopped CopilotConfirmation
Minor
Scenario: User clicks "Stop responding" while Copilot is generating. The system acknowledges the interruption.
Current: Inline message with a stop icon and "Give feedback" link.
Problem: Treatment is reasonable but inconsistent with other action acknowledgments.
Visual type: Inline Notice
Recommended: Left-aligned inline notice with stop-circle icon. Text: Stopped responding. Optional action link: "Give feedback". Follows the standard Inline Notice anatomy.
#5 Regenerated with Different ModelConfirmation
Minor
Scenario: User regenerates a response and the system switches to a different model. The system indicates which model was used.
Current: Inline message with a sparkle/refresh icon and bold model name.
Problem: Similar to #4 but uses a different icon and slightly different styling. The two should be visually consistent.
Visual type: Inline Notice
Recommended: Left-aligned inline notice with a refresh icon. Text: Regenerated with GPT-4. No action link needed. Follows the same Inline Notice spec as #4.
#6 Shared Chat ReceivedNotice
Minor
Scenario: User opens a chat that was shared with them by another person. The system shows a notice about the chat’s origin.
Current: Top banner with a warning-style background. Shows who shared the chat.
Problem: The pattern is effective but not formalized. No documented spec means other teams may implement access notices inconsistently.
Visual type: Banner
Recommended: Full-width banner pinned to top. Info icon (not warning). Text: Mona Kane shared this chat with you. Optional dismiss button. Background: colorNeutralBackground4. Replace warning-level styling with informational.
#7 Visibility BoundaryNotice
Minimal
Scenario: At a specific point in the chat, the visibility rules change (e.g., messages below are only visible to the current user).
Current: Left-aligned message with a lock icon.
Problem: The pattern is effective but not formalized. No documented spec for boundary markers.
Visual type: Inline Notice
Recommended: Left-aligned lock icon with text: Messages beyond this point are only visible to you. Optional subtle divider line. Uses Caption 1 typography in colorNeutralForeground3.

Summary of Changes

#ScenarioChange LevelAction
1Save as AgentMajorReplace Copilot chat response with Inline Notice
2Suggestions BypassedMajorImplement UI collapse behavior (not a system message)
3Screen/Voice EndedMinorFormalize existing Divider pattern
4Stopped CopilotMinorAlign with Inline Notice spec
5Regenerated with ModelMinorAlign with Inline Notice spec
6Shared ChatMinorFormalize Banner pattern; reconsider warning-level styling
7Visibility BoundaryMinorFormalize Inline Notice pattern (Notice)

Future Scenarios

The following scenarios have not been observed in the current audit but are anticipated. Each is pre-classified using the framework's decision tree.

Plugin / Extension InstalledConfirmation
Minor
Scenario: A plugin or extension is activated mid-conversation, expanding Copilot’s capabilities.
Visual type: Inline Notice
Recommended: Puzzle-piece icon. Text: [Plugin Name] is now active.
Context Window Limit ReachedNotice
Minor
Scenario: The conversation has exceeded the context window. Older messages are no longer available to Copilot.
Visual type: Inline Notice
Recommended: Info-circle icon. Text: Earlier messages in this chat are no longer in context. Optional divider line.
File Upload CompletedConfirmation
Minor
Scenario: User uploads a file and the system confirms it’s been processed.
Visual type: Inline Notice
Recommended: Attach icon. Text: quarterly-report.xlsx uploaded.
Conversation Transferred to Different AgentState Change
Minor
Scenario: The conversation is handed off from one Copilot agent to another.
Visual type: Divider
Recommended: Divider with label: Transferred to [Agent Name].
Admin-Restricted TopicNotice
Minor
Scenario: An organization admin has restricted Copilot from responding to certain topics. User enters a chat where this applies.
Visual type: Banner
Recommended: Shield icon with warning background. Text: Your organization has restricted some topics in this chat. Optional "Learn more" link.
Chat ExportedConfirmation
Minor
Scenario: User exports the chat to a file or external system.
Visual type: Inline Notice
Recommended: Download icon. Text: Chat exported. Optional action link: "Open file".
Date BoundaryState Change
Minimal
Scenario: Messages in the chat span multiple days. A date separator is shown.
Visual type: Divider
Recommended: Divider with centered date label: February 23, 2026. No icon.
System-Initiated Feedback PromptFeedback
Major
Scenario: The system periodically asks the user to rate their experience with Copilot, or solicits feedback after a specific interaction type (e.g., after a voice agent session ends).
Visual type: Feedback Card
Recommended: Star icon. Question text: "How is Copilot performing?" with a 1–5 numeric scale. Scale labels: "Not helpful" / "Very helpful". Dismiss button (X) in top-right. After submission, collapse to Inline Notice: "Thanks for your feedback".
Post-Session FeedbackFeedback
Major
Scenario: After a voice chat or screen sharing session ends, the system asks the user to rate the session experience.
Visual type: Feedback Card
Recommended: Star icon. Question text: "How was this voice session?" with a 1–5 numeric scale. Appears immediately after the session lifecycle divider. Dismiss button (X). After submission, collapse to Inline Notice: "Thanks for your feedback".

Validation

The framework was validated against all 16 scenarios (7 audited + 9 future) to ensure consistency, completeness, and mutual exclusivity.

Mutual exclusivity check

Every scenario maps to exactly one category. No scenario was ambiguous between two categories.

CategoryScenarios
Confirmation#1 Save as Agent, #4 Stopped Copilot, #5 Regenerated, Plugin Installed, File Upload, Chat Exported
State Change#3 Screen/Voice Ended, Conversation Transferred, Date Boundary
Notice#6 Shared Chat, #7 Visibility Boundary, Admin-Restricted Topic, Context Window Limit
FeedbackSystem-Initiated Feedback Prompt, Post-Session Feedback
Not a System Message#2 Suggestions Bypassed (UI State Collapse)

Decision tree consistency

Tip

Each scenario was run through the decision tree and produced the same result as the manual classification. No conflicts or ambiguities were found.

Visual type purity

No visual type is used for contradictory purposes:

  • Inline Notice — always confirms a completed action
  • Divider — always marks a structural break
  • Banner — always communicates conversation-wide access conditions
  • Inline Notice — always establishes a point-specific visibility/interaction change
  • Feedback Card — always solicits user input about an experience
Notice: two visual expressions

Notice is the only category with two visual types. Banner handles conversation-wide conditions (pinned to top), while Inline Notice handles point-specific visibility changes (in the timeline). Both communicate access/visibility information — the scope determines which visual expression is used.

Feedback Card: the only interactive system message

Feedback Card is the only visual type that expects user input. All other system messages are informational — they tell the user something. Feedback Cards ask the user something. This makes them uniquely dismissible and collapsible after interaction.

Coverage metrics

CheckResult
Mutual exclusivityEvery scenario maps to exactly one category
Decision tree consistencyAll scenarios produce same result via tree and manual classification
Visual type purityEach type serves one purpose; Notice uses two visual expressions (Banner + Inline Notice)
Coverage16/16 scenarios classified across 4 categories
System Messages Framework — Microsoft Copilot Design SpecLast updated: February 23, 2026