Unable to receive Teams channel messages for AI Teammate without explicit @mention

Akshay Babar 65 Reputation points
2026-07-20T10:42:39.0466667+00:00

Issue Description

We are building an AI Teammate (Agent 365) for Microsoft Teams channels using the @microsoft/agents-a365 SDK.

Current Behavior

Scenario 1: Direct @Mention (Working)

When a user explicitly @mentions the AI Teammate in a Teams channel message, our server endpoint receives the MessageActivity payload successfully, and the agent responds as expected.

Scenario 2: Regular Channel Messages Without @Mention (Not Working)

When users send normal messages in the channel without mentioning the AI Teammate:

No notification payload is received by our server endpoint.

No agents:* notification event is triggered.

Our registered notification handler is never invoked.

Because of this, the AI Teammate is unable to process channel messages unless it is explicitly mentioned.

Configuration and Environment

SDK Packages:

@microsoft/agents-a365-notifications

@microsoft/agents-hosting

Application Type:

  • Microsoft Teams AI Teammate (Agent 365)
  • Custom Agent Identity configured through Microsoft Entra ID

The Teams app manifest contains the following RSC permissions:

{
  "webApplicationInfo": {
    "id": "<YOUR_ENTRA_BLUEPRINT_ID>",
    "resource": "api://YOUR_ENTRA_AGENT_CLIENT_ID"
  },
  "authorization": {
    "permissions": {
      "resourceSpecific": [
        {
          "name": "ChannelMessage.Read.Group",
          "type": "Application"
        }
      ]
    }
  }
}

Expected Behavior

We expect the AI Teammate to receive notification events for channel messages even when users do not explicitly @mention the agent, since:

The agent has its own identity in Entra ID.

The agent is already added as a member of the private Teams channel.

Required Resource-Specific Consent (RSC) permissions (ChannelMessage.Read.Group) have been configured.

Assistance Required

Could you please confirm:

Is ChannelMessage.Read.Group supported for AI Teammate custom identities to receive non-mention channel messages?

Are there any additional permissions, configurations, or tenant-level settings required to receive agents:* notifications for all channel messages?

Is the expected behavior that AI Teammates only receive messages when explicitly @mentioned?

Are there any additional SDK configuration steps required to enable background notifications for channel messages?

We would appreciate your guidance on the correct configuration required to receive non-mention channel messages for an AI Teammate.

Microsoft Teams | Development
Microsoft Teams | Development

Building, integrating, or customizing apps and workflows within Microsoft Teams using developer tools and APIs

0 comments No comments

2 answers

Sort by: Most helpful
  1. Michelle-N 20,645 Reputation points Microsoft External Staff Moderator
    2026-07-20T11:23:12.38+00:00

    Hi @Akshay Babar

    Based on the current Microsoft Teams documentation and are intended to enable bots and agents to receive channel or chat messages without being explicitly @mentioned, provided the app is configured and consented correctly through the Teams app manifest and installation flow. The documentation states that RSC permissions are extended to bots and agents, and that these permissions can enable a bot defined in the app manifest to receive conversation messages without being @mentioned in the relevant context.

    So, in principle, is the correct RSC permission for receiving channel messages without @mentions. However, adding the AI Teammate’s Entra identity directly as a member of the private channel is not, by itself, what enables the message delivery. The important requirement is that the Teams app/bot/agent is installed in the conversation and that the RSC permission has been granted through the Teams app consent/install or upgrade process. Microsoft’s documentation specifically says conversation owners can consent for a bot to receive all messages in channels and chats without @mentions during app installation or upgrade. [learn.microsoft.com] A few things I would check in your configuration:

    1. Confirm the Teams app was installed or upgraded after adding the RSC permissions If the app was already installed before was added to the manifest, the permission might not be effective until the app is re-uploaded, upgraded, and consented again in the target team/channel context.
    2. Confirm the bot/agent is defined in the Teams app manifest The documentation describes this behavior as enabling “a bot defined in the app manifest” to receive conversation messages without being @mentioned. If the agent identity exists in Entra ID but is not correctly associated with the bot/agent entry in the Teams app manifest, message fan-out may not occur.
    3. Validate the value In the manifest snippet, the resource value appears to be missing the closing/full value "resource": "api://<YOUR_ENTRA_BLUEPRINT_ID" It should be validated against the actual Application ID URI configured for the Entra application. A malformed value can prevent RSC consent from binding correctly to the intended application.
    4. Check whether the issue is specific to private channels Microsoft’s Channel Agent support documentation states that Channel Agent currently can’t be added to private channels, and that Channel Agent is in public preview with limitations. This may not be exactly the same as a custom Agent 365 SDK implementation, but it is worth testing in a standard channel to isolate whether the behavior is private-channel-specific.
    5. Differentiate normal message activities from notifications The Teams documentation for receiving all channel/chat messages describes bots or agents receiving message activities without @mentions when RSC is configured. It does not clearly state that every non-mention channel message must arrive specifically as an notification event. If your handler is not firing, also verify whether non-mention messages should be handled through the normal message activity pipeline rather than only through the notification handler.

    Please let me know more details.


    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    Was this answer helpful?


  2. Akshay Babar 65 Reputation points
    2026-07-20T10:46:14.01+00:00

    Code implementation

    
    export class MyAgent extends AgentApplication<TurnState> {
      static authHandlerName: string = 'agentic';
    
      constructor() {
        super({
          startTypingTimer: true,
          storage: new MemoryStorage(),
          authorization: {
            agentic: {
              type: 'agentic',
            } // scopes set in the .env file...
          }
        });
    
        // Route agent notifications
        this.onAgentNotification("agents:*", async (context: TurnContext, state: TurnState, agentNotificationActivity: AgentNotificationActivity) => {
          console.log("******************************************************8")
          await this.handleAgentNotificationActivity(context, state, agentNotificationActivity);
        }, 1, [MyAgent.authHandlerName]);
    
        // 2. User Identity Lifecycle Handlers
        this.onAgenticUserCreatedNotification(async (context: TurnContext, state: TurnState, notification: AgentNotificationActivity) => {
          console.log("========== [User Identity] User Created ==========");
          console.log("Payload:", JSON.stringify(notification, null, 2));
        }, 1, [MyAgent.authHandlerName]);
    
        this.onAgenticUserWorkloadOnboardingNotification(async (context: TurnContext, state: TurnState, notification: AgentNotificationActivity) => {
          console.log("========== [User Identity] Workload Onboarded / Updated ==========");
          console.log("Payload:", JSON.stringify(notification, null, 2));
        }, 1, [MyAgent.authHandlerName]);
    
        this.onAgenticUserDeletedNotification(async (context: TurnContext, state: TurnState, notification: AgentNotificationActivity) => {
          console.log("========== [User Identity] User Deleted ==========");
          console.log("Payload:", JSON.stringify(notification, null, 2));
        }, 1, [MyAgent.authHandlerName]); 
    
        this.onActivity(ActivityTypes.Message, async (context: TurnContext, state: TurnState) => {
          await this.handleAgentMessageActivity(context, state);
        }, [MyAgent.authHandlerName]);
    
         this.onActivity(ActivityTypes.MessageUpdate, async (context: TurnContext, state: TurnState) => {
          await this.handleAgentMessageActivity(context, state);
        }, [MyAgent.authHandlerName]);
    
        // Handle agent install / uninstall events (agentInstanceCreated / InstallationUpdate)
        this.onActivity(ActivityTypes.InstallationUpdate, async (context: TurnContext, state: TurnState) => {
          await this.handleInstallationUpdateActivity(context, state);
        });
      }
    
    

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.