OpenClaw Microsoft Teams troubleshooting
The fixed webhook timeouts and retries, cloud and service URL support for public, GCC, GCC High, DoD and China, the fail-closed host check on stored references, the limited Markdown, the common failures from silent channels to a 401, manifest upload errors, and RSC permissions that do not take
The Teams troubleshooting page is half limitations and half failures, and both halves matter: a bot that seems broken is often hitting a documented limit, a webhook window, a cloud boundary or a Markdown feature Teams cannot render. Here are the limits, then the common failures in the docs' order.
Timeouts and clouds
- Teams delivers messages through an HTTP webhook and OpenClaw applies fixed server timeouts to that listener, 30 seconds of inactivity, 30 seconds per request and 15 seconds to receive headers, with a shared 10-second budget for optional inbound media and context enrichment; the SDK returns once the raw activity is durably appended, the agent turn drains independently and replies proactively, and if handling or durable admission misses the transport window Teams may retry the activity, which the ingress tombstone rejects by its repeated event ID.
- The SDK-backed path is live-validated for the public cloud, inbound replies use the incoming turn context, and out-of-context proactive operations, sends, edits, deletes, cards, polls, file-consent messages and queued long-running replies, use the stored conversation reference's service URL, which for the public cloud is the Teams connector host that no config needs to name.
- For other clouds the cloud key selects the SDK preset for authentication, JWT validation, token services and Graph scope, and the service URL selects the Bot Connector boundary used to validate stored references before proactive operations, required for the US government and DoD SDK clouds; Microsoft's table gives the public, GCC, GCC High and DoD proactive endpoints, GCC needing only a service URL because no separate preset exists, and China using the incoming activity's service URL on the Azure China channel boundary.
- The service URL is restricted to supported Teams connector hosts, a configured value makes OpenClaw check that each stored conversation uses the same host before proactive work, the default public config fails closed when a stored conversation points outside the public host, a fresh message is needed after changing cloud settings so the stored reference is current, and the China preset disables the Graph-backed helpers until Graph requests are routed through the Azure China endpoint.
OpenClaw applies fixed HTTP server timeouts to that webhook listener: 30s inactivity, 30s total request, and 15s to receive headers.
Formatting and common issues
Teams Markdown is more limited than Slack or Discord: bold, italic, code and links work, edits, file captions and finalised streaming replies use the same conversion and mention formatting as normal messages while streaming previews may show unfinished Markdown until the final reply replaces them, complex Markdown such as tables and nested lists may not render, and Adaptive Cards carry approval prompts, polls and presentation sends. The common issues are short: images not showing in channels mean Graph permissions or admin consent are missing, so reinstall the app and fully quit and reopen Teams; no responses in a channel mean mentions are required by default, so turn the requirement off globally or per team and channel; a version mismatch where Teams still shows the old manifest means removing and re-adding the app and fully quitting Teams; and a 401 from the webhook is expected when testing by hand without an Azure JWT, meaning the endpoint is reachable but auth failed, so test through Azure Web Chat instead.
Manifest and RSC failures
- An empty-icon error means the manifest references zero-byte icon files, so create valid PNGs at 32 by 32 for the outline and 192 by 192 for the colour icon; a web-application-info ID already in use means the app is still installed in another team or chat, so uninstall it or wait five to ten minutes for propagation.
- A generic upload failure is diagnosed by uploading through the Teams admin portal with the browser developer tools open on the network tab to read the actual error in the response body, and a failing sideload often works through the org app catalog upload instead of the custom-app upload, which bypasses sideload restrictions.
- When RSC permissions do not work, verify that the web application info ID matches the bot's app ID exactly, re-upload the app and reinstall it in the team or chat, check whether the org admin has blocked RSC permissions, and confirm the scope, channel message read for teams and chat message read for group chats.
OpenClaw on Microsoft Teams is the channel post these symptoms belong to, and OpenClaw Microsoft Teams manifest and permissions the permissions behind the RSC and image failures.
Fail closed on the wrong cloud
The host check on stored conversation references is the least visible rule here and the most protective: a proactive send is refused rather than routed to a connector the config never named. OpenClaw Microsoft Teams cards and actions covers the proactive surfaces that check applies to, and OpenClaw Slack troubleshooting the symptom-first list for Slack.
On Diali
Microsoft Teams is not among the channels Diali connects today: WhatsApp, Telegram, Discord, Slack, Mattermost, Matrix, SMS and voice. Hosted OpenClaw on Diali is the assistant and Diali security describes the boundary that applies to each connected channel.
- Thirty seconds per webhook request; retries are tombstoned.
- A manual 401 means reachable; test with Azure Web Chat.
- Quit Teams fully after every reinstall.
Stop reading about it, build one
Set up an agent, pick a channel, and have it working inside the app you already keep open.
