Microsoft Teams Bot Framework · error code

Teams error 403 BotNotInConversationRoster: BotNotInConversationRoster - bot removed from conversation

ConfigurationHTTP 403Conversations & activities

Last verified against Microsoft Learn - Status codes from bot conversational APIs

What Teams returns
The agent isn't part of the conversation roster.

What error 403 BotNotInConversationRoster means

You tried to post into a conversation the bot no longer belongs to. The status table documents BotNotInConversationRoster as "The agent isn't part of the conversation. App needs to be reinstalled in conversation," with retry documented as No. The usual history: the app was removed from a team or group chat (by a user or by policy), your database still holds the old conversation reference, and a scheduled or proactive send replays it.

The documented developer action tells you what to wait for: "Before attempting to send another conversation request, wait for an installationUpdate event, which indicates that the agent is added again." Unlike the personal-scope block cases, team and group removals do fire events - your bot receives installationUpdate with action: "remove" when uninstalled from a team, so a listener can keep the reference cache honest in real time.

What it looks like

{
  "error": {
    "code": "BotNotInConversationRoster",
    "message": "The agent isn't part of the conversation roster."
  }
}

Why it happens

  • The app was uninstalled from the team or group chat after the conversation reference was cached.
  • An admin removed the app from the team via app management while your notifier kept running.
  • The team itself was archived or rebuilt and the new team never had the app installed.
  • Your bot posts to a channel conversation using a reference captured before the app was re-scoped.

How to fix Teams error 403 BotNotInConversationRoster

  1. 1Stop sends to the conversation immediately and flag the cached reference as stale.
  2. 2Handle installationUpdate events (add and remove) to track where the app is actually installed.
  3. 3Ask the team owner to reinstall the app in the team, or install it programmatically via Graph if your scenario supports it.
  4. 4Resume only after the installationUpdate add event arrives, which also delivers fresh conversation data to cache.

How to stop it recurring

Make installationUpdate the single writer for your conversation-reference store: add on install, delete on remove. Treat every 403 of this kind as a cache-invalidation signal even if the event was missed. Bots that survive team churn keep references fresh instead of immortal - the same hygiene that prevents 404 ConversationNotFound on deleted conversations.

Official reference: Microsoft Learn - Status codes from bot conversational APIs. See all Teams error codes or the Teams limits and quotas.

Related codes

Error 403 BotNotInConversationRoster - quick answers

What does Teams error 403 BotNotInConversationRoster mean?

You tried to post into a conversation the bot no longer belongs to. The status table documents BotNotInConversationRoster as "The agent isn't part of the conversation. App needs to be reinstalled in conversation," with retry documented as No .

How do I fix Teams error 403 BotNotInConversationRoster?

1. Stop sends to the conversation immediately and flag the cached reference as stale. 2. Handle installationUpdate events (add and remove) to track where the app is actually installed. 3. Ask the team owner to reinstall the app in the team, or install it programmatically via Graph if your scenario supports it. 4. Resume only after the installationUpdate add event arrives, which also delivers fresh conversation data to cache.

Stop debugging Teams by hand

Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.