M365 Release Radar is a declarative agent for Microsoft 365 Copilot that helps IT admins, engineers, and technical teams stay ahead of everything changing across Microsoft 365 and Azure — from one place, in natural language, with rich adaptive‑card responses.
Warning
🧪 Preview — built fast, still under test. This solution was "vibe‑coded" and is currently going through testing. It's shared early so the community can try it and give feedback, but responses may not be 100% accurate or complete. Always verify important details against the official Microsoft 365 Roadmap, Azure Updates, and the Microsoft 365 admin center Message Center before acting on them. Use at your own discretion.
It unifies three sources of change:
- 🗺️ Microsoft 365 Roadmap — upcoming, in‑development, rolling‑out, launched, and retiring M365 features.
- ☁️ Azure Updates — Azure service updates, product categories, retirements, and security‑related changes.
- 📢 Message Center (optional, admin‑gated) — tenant service update messages, advisories, and incidents.
This project is the successor to two earlier community agents — M365 Insider (roadmap) and Message Center Pulse (Message Center). It combines and modernises both into a single agent.
- Answers natural‑language questions about the Microsoft 365 Roadmap and Azure Updates using live Microsoft Release Communications (MRC) data — never stale model knowledge.
- Surfaces the details that matter: title, status, affected products, availability/GA dates, retirements, and deep links back to the official source.
- Provides insights, not just lists — themes, imminent changes, and time‑sensitive callouts (previews opening, upcoming retirements). Includes the Code Interpreter capability for on‑the‑fly analysis and grouping of returned data.
- Renders results as consistent Adaptive Cards.
- (When configured) lets admins retrieve Microsoft 365 Message Center posts — filter by service, category, severity, message ID, date, tags, and keywords.
- "What Microsoft Teams features are rolling out or reaching general availability in the next couple of months?"
- "Show me the latest Microsoft 365 Copilot roadmap items that are in development or in preview."
- "Which Azure services have retirements announced for this year, and when do they take effect?"
- "Give me the full details for Microsoft 365 roadmap feature ID 81379."
- (Message Center enabled) "Show me the latest Message Center posts that require action."
- (Message Center enabled) "What recent Message Center posts affect Exchange Online, and which are 'Plan for Change'?"
Note
The images below are illustrative mockups that reproduce the Microsoft 365 Copilot experience using the agent's real adaptive‑card fields, name, and icon. They are not live screen captures, and the roadmap/Message Center items shown are representative examples.
Roadmap & Azure Updates — natural‑language questions answered with rich adaptive cards:
Message Center (optional, admin‑gated) — service changes, advisories, and incidents surfaced for admins:
M365 Release Radar hosts two plugins behind one declarative agent:
| Capability | Plugin | Runtime | Data source | Auth |
|---|---|---|---|---|
| Roadmap + Azure Updates | release-radar-plugin.json |
Remote MCP server | Microsoft Release Communications MCP server (https://www.microsoft.com/releasecommunications/mcp) |
None (public) |
| Message Center | message-center-plugin.json |
OpenAPI (API plugin) | Microsoft Graph Service Communications API (serviceAnnouncement/messages) |
Delegated OAuth (per‑user admin sign‑in) |
Because roadmap/Azure use an unauthenticated MCP server, those capabilities work for everyone out of the box. Message Center calls Microsoft Graph directly and therefore requires delegated admin authentication — it stays dormant until a deployer configures it (see below).
Prerequisites
- Node.js (supported version: 22)
- A Microsoft 365 account for development with a Microsoft 365 Copilot license
- Microsoft 365 Agents Toolkit (VS Code extension or CLI)
- Clone this repository.
- Open the folder in Visual Studio Code.
- Sign in with your Microsoft 365 account in the Microsoft 365 Agents Toolkit.
- Provision the agent (Agents Toolkit → Provision, or
atk provision --env local). The roadmap and Azure Updates capabilities work immediately. - Open the agent in Microsoft 365 Copilot and try a prompt.
Message Center is off by default and requires the extra setup below.
Message Center posts are tenant‑specific admin data retrieved from the Microsoft Graph Service Communications API using delegated authentication. Enabling it is a one‑time setup.
Note: This capability is not intended to replace the first‑party Microsoft 365 Admin agent. For full admin coverage, Microsoft recommends the Microsoft 365 Admin agent. M365 Release Radar covers Message Center posts specifically.
Who can use it: Once enabled, only users with an appropriate admin role can query Message Center:
- Global Administrator
- Service Support Administrator
- Message Center Reader
- Create a new app registration in Microsoft Entra (e.g. "M365 Release Radar").
- Copy the Application (client) ID and Directory (tenant) ID.
- Create a client secret and copy its Value.
- Under API permissions, add Microsoft Graph → Delegated →
ServiceMessage.Read.All, then grant admin consent. - Under Authentication, add a Web redirect URI:
https://teams.microsoft.com/api/platform/v1.0/oAuthRedirect.
- Go to the Teams Developer Portal → Tools → OAuth client registration → create a new registration.
- Configure:
- Registration name: e.g. "M365 Release Radar"
- Base URL:
https://graph.microsoft.com/v1.0 - Restrict usage by organization: My organization only
- Restrict usage by Teams app: Any Teams app (for testing/validation — restrict to your app for production)
- Client ID / Client Secret: the Entra app values from step 1
- Authorization endpoint:
https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize - Token endpoint:
https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token - Refresh endpoint:
https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token - Scope:
ServiceMessage.Read.All - Enable PKCE: Off
- Client password authentication method: Request body parameters (default)
- Save and copy the generated OAuth client registration ID.
Set the registration ID in your environment file, then re‑provision:
- Local testing: put it in
env/.env.local(gitignored):MC_OAUTH_REGISTRATION_ID=<your OAuth client registration ID> - Other environments (dev/prod): put it in
env/.env.<env>.user(gitignored). The committedenv/.env.<env>template ships withMC_OAUTH_REGISTRATION_ID=disabledso the agent packages cleanly with Message Center off.
Re‑provision the agent. On first Message Center query, each admin signs in and consents once.
⚠️ Never commit your real OAuth client registration ID. Keep it only in gitignored files (env/.env.local,env/.env.*.user). See Security.
| Variable | Where | Purpose |
|---|---|---|
MC_OAUTH_REGISTRATION_ID |
env/.env.local, env/.env.*.user |
OAuth client registration ID that enables Message Center. Value disabled (default) keeps it off while still packaging cleanly. |
AZURE_AI_OPENAI_ENDPOINT, AZURE_AI_API_KEY, AZURE_AI_API_VERSION, AZURE_AI_MODEL_NAME |
env/.env.<env> |
Azure OpenAI credentials for running agent evaluations (optional). |
- Off (default):
MC_OAUTH_REGISTRATION_ID=disabled. Roadmap + Azure work for everyone; the Message Center action is present but cannot authenticate, and the agent politely states it isn't enabled. - On: set the variable to a real registration ID and re‑provision.
- Hard removal (optional): to ship a build with no Message Center at all, remove the
messageCenterPluginaction fromappPackage/declarativeAgent.json(and the two Message Center conversation starters) before packaging.
This project includes a sample eval dataset at evals/prompts.json.
npm install -g @microsoft/m365-copilot-eval- Add the
AZURE_AI_*variables (see how to get them). - Provision the agent first, then run
runevals(orrunevals --env dev).
- Name / branding: edit
appPackage/manifest.jsonandappPackage/declarativeAgent.json. - Instructions: refine
appPackage/instruction.txt. - Adaptive cards: tailor the response templates in
appPackage/andappPackage/adaptiveCards/. - Actions: add further MCP or API plugins as needed.
- Secrets and identifiers are kept out of source control. The
.gitignoreexcludesenv/.env.local, allenv/.env.*.userfiles, andappPackage/build/. - Client secrets live only in the Entra app / Teams Developer Portal — never in this repo.
- Your OAuth client registration ID should only ever appear in gitignored env files. Committed
env/.env.<env>templates useMC_OAUTH_REGISTRATION_ID=disabled. - Before your first commit, run
git statusand confirm noenv/.env.localorenv/.env.*.userfile is staged.
- Combine relevant Message Center posts and roadmap items in a single response.
- "Follow" roadmap items / Message Center posts and summarise updates.
- Email / Teams digest of tracked items on request.
Contributions are welcome! If you'd like to improve prompts, filters, cards, or documentation, please open an issue or submit a PR.
This solution is open‑source and community‑provided by the Copilot Agents & Platform Ecosystem (CAPE) team. It is maintained by Microsoft employees and community contributors and is not an official Microsoft product — there is no SLA or direct Microsoft support. Please report issues via GitHub Issues.
Licensed under the MIT License.

