---
title: Microsoft Teams
---

# Microsoft Teams

## What it is

Experimental, in-development integration that pulls your **Microsoft Teams
online meetings** into Omniscio via Microsoft Graph API. Read-only: Omniscio
lists, displays, and syncs meetings; it never creates or modifies them in Teams.

## Where to find it

Once it is switched on, a **Microsoft Teams** tab appears in the sidebar and everything happens there: the meeting list, the meeting detail view, the **Join Meeting** link and the **Sync Now** button, with the disconnect control in the tab's Settings. Turning it on is a two-step settings job — Settings > Lab to enable Microsoft Teams, then Settings > OneDrive to enter your Microsoft Client ID.

## How it behaves

### How to turn it on

1. Settings > Lab > enable **Microsoft Teams** (hidden until you flip it because
   the feature is still in development).
2. Settings > OneDrive > enter your **Microsoft Client ID** (Teams and OneDrive
   share the same Azure app registration).
3. A **Microsoft Teams** tab appears in the sidebar. Open it and click
   **Connect Microsoft Account**.
4. A Microsoft consent popup opens. Sign in with a personal or work/school
   account and grant calendar-read access.
5. Meetings sync automatically every 15 minutes (configurable in settings).

### What you can do

- **Browse meetings** -- the panel lists synced online meetings grouped by
  recency (Upcoming, Today, Yesterday, This Week, Earlier), with subject,
  time range, and organizer.
- **View meeting details** -- selecting a meeting shows the full detail:
  subject, date/time, organizer, location, body preview, join URL, and
  attendee list with response statuses (accepted, declined, tentative).
- **Join a meeting** -- if the meeting has a join URL, a "Join Meeting" link
  opens it in the browser.
- **Sync on demand** -- click "Sync Now" to pull the latest meetings
  immediately instead of waiting for the next poll.
- **Disconnect** -- in the Settings tab, disconnect your Microsoft account.
  This clears all stored credentials and synced meeting data.

### What it does NOT do (yet)

- Download or stream cloud recordings
- Pull meeting transcripts (.vtt)
- Schedule or create meetings from Omniscio
- Show Teams presence or status indicators
- Surface meetings as inbox notifications
- Inject meeting context into Claude sessions
- Cross-reference with Google Calendar

## For agents

### How it works (for maintainers)

- **Auth**: OAuth 2.0 with PKCE, `/common` tenant (personal + work/school),
  scopes `Calendars.Read User.Read offline_access`. Shared Azure app
  registration with OneDrive (same `microsoftClientId`). Loopback callback on
  port 19520, path `/teams/callback`.
- **Data source**: Graph API `/me/calendarView` filtered to
  `isOnlineMeeting eq true`, paginated via `@odata.nextLink` (up to 500 events).
- **Sync**: periodic background poll + delta queries for incremental updates.
  Delta link persisted in config store; falls back to full resync on expiry.
- **Storage**: `teams_meetings` and `teams_meeting_attendees` SQLite tables
  (soft delete). Credentials encrypted at rest via `safeStorage`.
- **Gating**: unreleased-feature `'teams'`, setting key `teamsIntegrationEnabled`.

## Related

The comparable calendar and meeting surfaces are covered on [Google Meet](google-meet.md) and [Meetings](meetings.md), and the Microsoft account this integration authenticates against is shared with [OneDrive integration](onedrive-integration.md). The wider set of Google-side integrations, which this feature deliberately does not cross-reference, is on [Google integrations](google-integrations.md).
