[Agent 365 SDK] AI Teammate not receiving unmentioned channel messages (ChannelMessage.Read.Group) despite RSC consent and identity onboarding

Akshay Babar 65 Reputation points
2026-07-20T10:21:28.97+00:00

Issue Description

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

Our agent is configured with its own dedicated user identity/service principal in Microsoft Entra ID and has been added directly as a member of a private Teams channel, similar to adding a regular user to the channel roster.

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

Teams Manifest Configuration

The Teams app manifest contains the following RSC permissions:

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

The AI Teammate has been added as a member of the private Teams channel where we are testing.

Code Implementation

We registered the global agent notification handler using the SDK-provided handler:


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);
    });
  }

  "agents:*",
  async (
    context: TurnContext,
    state: TurnState,
    notification: AgentNotificationActivity
  ) => {
    console.log("Background Notification Received:", notification);

    // Custom logic to forward payload to backend webhook
  },
  1,
  [MyAgent.authHandlerName]
);

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

Locked Question. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.