Almanac
Microsoft/teamsMicrosoft 365

Consultant-focused KB for Microsoft Teams: implementation notes, gotchas and configuration decisions beyond the official docs — across chat and collaboration, meetings, webinars and town halls, Teams Phone, PSTN connectivity (Direct Routing, Operator Connect, Calling Plans, Teams Phone Mobile), auto attendants, call queues and contact centre integration, Teams Rooms and devices, apps and extensibility, Copilot in Teams, administration and governance, security and compliance, network and call quality, and licensing — plus cross-cutting decision guides.

feature-apps-agents-toolkit-bots-and-message-extensions.mdv2 · history
CurrentApplies to AllUpdated 3 weeks agoSource Microsoft Learn ↗

What it does

Microsoft 365 Agents Toolkit (the renamed Teams Toolkit) is the developer tooling that scaffolds, debugs, provisions and publishes custom Teams apps. Those apps are built from a handful of capabilities — bots, message extensions, tabs and meeting extensions — packaged behind one app manifest.

Key facts

  • Teams Toolkit has been renamed Microsoft 365 Agents Toolkit. It ships as a VS Code extension, a Visual Studio extension and a CLI.
  • It handles Entra app registration, bot registration, multiple environments (dev/test/prod), local debugging through Dev Tunnels and Azure provisioning via Bicep. Agents Playground lets you test a bot without a Teams registration.
  • The TeamsFx SDK is deprecated, with community-only support stated as running until September 2026. Microsoft's direction is Teams SDK for Teams-only apps and bots, and Microsoft 365 Agents SDK for multichannel agents. Teams AI Library v1 is also deprecated.
  • Bots work in three scopes: personal, group chat and channel.
  • Message extensions have two command types: search (from compose box or command box) and action (also from a message, opening a modal). Up to 10 commands per message extension.
  • API-based message extensions are built from an OpenAPI description and support search commands only; bot-based ones support action, search and link unfurling but need Azure bot infrastructure.
  • Message extensions can't be @mentioned and don't work in group chats with external users.
  • Meeting app surfaces: pre-meeting tab, side panel, meeting stage (Share to stage), in-meeting notifications/dialogs and post-meeting. Organisers and presenters can start apps on stage; attendees can view and interact.
  • Meeting apps aren't supported in end-to-end encrypted calls, instant channel meetings or shared channel meetings. Federated users get presenter-only support in scheduled meetings; anonymous users only in scheduled/instant meetings.
  • Custom (LOB) meeting apps are available in GCC, GCC High, DoD and 21Vianet; third-party meeting apps only in GCC.
  • Teams Developer Portal is the place to configure, validate and distribute app packages outside the IDE.

When to use / skip

If the requirement is "post a message when something happens" or "let someone approve a request from a card", reach for Workflows first — it's no-code and someone in the business can own it. Build a custom app when you need conversational logic, proper authentication against a line-of-business system, search across that system from the compose box, or a tab that lives inside a meeting. That's the point where Agents Toolkit earns its keep.

For a UC or contact-centre consultant, the realistic custom-app work is a notification bot posting incident or queue alerts, a message extension that searches a CRM and drops a card into chat, or a meeting side panel for a structured process. Anything AI-heavy is now framed as a custom engine agent — that conversation belongs with the Copilot and agents workstream, even though the toolkit is the same.

Configuration decisions

  • SDK choice for new builds: Teams SDK (Teams-only) or Microsoft 365 Agents SDK (multichannel). Don't start anything new on TeamsFx.
  • API-based versus bot-based message extension — API-based is simpler to run but search-only.
  • Hosting and identity: which Azure subscription, single-tenant Entra app registration, and who owns the secrets or certificates after handover.
  • How the app is distributed: sideloaded in dev, published to org through Developer Portal or Agents Toolkit, then made available via Manage apps.
  • Whether a bot needs to be pre-installed for users via setup policy so it can send proactive messages.
  • Meeting app scope — which meeting types it has to work in, given the unsupported scenarios above.

Gotchas

  • TeamsFx's community support window has closed as of this writing. Inherited projects built on it need a migration plan, not just a rebuild.
  • A bot can only proactively message a user who has the app installed. That's why notification bots usually go out via setup policy installs.
  • Search commands can't be triggered from a message — only action commands can. Clients often ask for "search from this message" and it's not a thing.
  • Link unfurling needs a bot-based message extension and a domain subscription in the manifest.
  • Meeting apps don't follow a one-to-one call when it escalates to a group call; it's a new session and apps have to be re-added.
  • Dev Tunnels are fine for local debugging but aren't a production hosting option. Don't let a pilot quietly run from a developer's laptop.
  • Toolkit support for GCC and sovereign clouds lags commercial. Check the current state on Learn before committing a government delivery date.

Consultant notes

  • Keep three environments (dev, test, prod) from the start; Agents Toolkit makes it cheap and it saves the "who changed the manifest in prod" conversation.
  • Agree app ownership up front — publisher name, support contact and privacy/terms URLs in the manifest — before the admin team will approve it.
  • Give developers their own sideload-enabled tenant or group so the production setup policy stays locked down.
  • Document every Graph and RSC permission the app requests; it's the first thing a security reviewer will ask about.
  • When a client's ask is really a Copilot agent, hand it to that workstream rather than letting the app project absorb it.

Worth revisiting after the next Agents Toolkit major release, or once Microsoft publishes a firm end-of-support date for the Bot Framework SDK

Was this accurate?