> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cobalt.peoplereign.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Teams

> Install your agent as a Microsoft Teams bot your employees can message directly.

# Microsoft Teams

The Microsoft Teams channel puts your agent in Teams as a **bot** your employees
message directly — they chat with it in a one-to-one conversation and it replies
in-thread, with streaming where Teams supports it.

<Note>
  Looking for the agent to *use* Teams as a tool (message a teammate, spin up a
  meeting) rather than host the conversation? That's the separate
  [Microsoft Teams integration](/integrations/microsoft-teams).
</Note>

The bot works in **one-to-one personal chat** — each employee messages the agent
directly. It doesn't join team channels or group chats.

## Before you start

You'll need a **Microsoft Azure / Entra admin** to register an Azure Bot, and a
**Teams admin** (or permission to upload custom apps) to install the app in your
organization. Cobalt generates the Teams app package for you and walks you through
each step in an install wizard, so there's little to configure by hand.

## Install it

The channel's **install wizard** is a four-step flow. Each step shows its own
status, and you finish once the credentials verify and a test message round-trips.

<Steps>
  <Step title="Brand the bot">
    Set the bot's **display name** and upload its two icons (a full-color icon and
    an outline icon Teams uses in different places). Defaults are fine to start.
  </Step>

  <Step title="Create the Azure Bot">
    In the Azure portal, create an **Azure Bot** — for "Type of App" choose
    **Single Tenant**. Cobalt shows you the values to copy in — the **bot
    handle**, the **app type**, and the per-channel **messaging endpoint URL** —
    with a deep link to the right Azure screen. Set the messaging endpoint to
    the URL Cobalt shows, then under **Channels** enable **Microsoft Teams**.

    <Warning>
      Do **not** choose **User-Assigned Managed Identity**. Managed-identity
      bots have no client secret, so Cobalt — which authenticates from outside
      your Azure tenant — can never connect to one. If you already created a
      managed-identity bot, delete it and create a **Single Tenant** bot
      instead.
    </Warning>

    <Note>
      Azure no longer offers **Multi-tenant** bot creation (removed after July
      2025\). Existing Multi-tenant installs keep working unchanged — Cobalt
      detects your bot's app type automatically when it verifies the
      credentials.
    </Note>
  </Step>

  <Step title="Verify the credentials">
    Back in Azure, create a **client secret** and note the **Application (client)
    ID** and **Directory (tenant) ID** — both are on the bot's **Configuration**
    page (the tenant ID appears as **App Tenant ID**, right below the app ID).
    Paste the app ID, the secret, and the tenant ID into Cobalt and run
    **Verify** — Cobalt makes a live call to confirm the credentials work.
  </Step>

  <Step title="Install in Teams and test">
    Download the Teams **app package** (.zip) Cobalt builds for this agent — it
    contains your branding, the manifest with your verified App ID, and the
    messaging endpoint. Then choose how to distribute the app — **upload to your
    org's app catalog** (recommended; available to everyone) or **sideload** the
    package directly (works only if your org allows custom app uploads). Install
    it, then send a **test direct message** to confirm the bot responds.

    <Note>
      The download becomes available after the credentials verify, so every
      package you download already has your real Microsoft App ID baked in.
    </Note>
  </Step>
</Steps>

## Settings

On the channel's settings you can configure:

* **Bot display name** and **icons** — how the bot appears in Teams.
* **AI disclaimer** — the text (up to 200 characters) and how often it shows
  (**off**, **once** per conversation, or **always**).

## Keep the connection healthy

* **Client secrets expire.** Azure client secrets have an expiry date; Cobalt shows
  a countdown and reminds you before one lapses. **Rotate the secret** from the
  channel — create a new secret in Azure and paste it in — before it expires, so the
  bot keeps responding.
* **Activity.** The channel's activity view shows recent inbound traffic, so you can
  confirm messages are reaching the agent.
* **Disconnect** removes the credentials and takes the channel offline.

## Teams as an integration

Connecting Teams as a **channel** (so employees chat with the agent there) is
separate from connecting Teams as an
[integration](/integrations/microsoft-teams) (so the agent can search, message, and
act in Teams on a user's behalf). You can use either or both.

## Related

* [Channels overview](/channels/overview) — how channels work in general.
* [Microsoft Teams integration](/integrations/microsoft-teams) — the agent *using*
  Teams as a tool (a different feature).
