Skip to content
Dictanta Get the app
← Back to blog · · 10 min read

How to Record a Microsoft Teams Meeting on Mac Without a Bot

Capture Teams calls on macOS without sending Otter, Fireflies, or any cloud notetaker into the meeting. On-device transcription, no Copilot, no awkward attendee.

Mac Microsoft Teams transcription privacy no-bot

You finished a Teams call ten minutes ago. There were six people on it. Two of them said something useful and you can’t quite remember which two. Your options are: pull up the Teams native recording in OneDrive (if your tenant lets you record at all), wait for Copilot’s recap to finish processing, or look at whatever your third-party notetaker decided to send to your inbox. Any of those works. None of them is private to your Mac, and at least one of them required a bot in the meeting that everyone else watched join.

This post is about the fourth option — recording a Microsoft Teams meeting locally on a Mac, with no bot in the call, no audio leaving the laptop, and a transcript and summary that exist only in your account. The same approach works for the Zoom case we covered earlier, but Teams has its own particular constraints worth covering directly.

What “without a bot” means in a Teams context

Teams has more meeting-bot variants than Zoom does, partly because Microsoft built bots into the product itself. When you connect a third-party notetaker to a Teams call, one of these things is happening:

  1. Otter, Fireflies, Read.ai, Fellow, Tactiq. These add a participant to the meeting (usually named after the service or after a fake person — “Fred from Fireflies”). The bot dials in, captures the audio stream Teams sends to participants, and ships it to a cloud vendor for transcription and summarization.
  2. Microsoft Copilot in Teams. Microsoft’s native AI recap, gated to certain Microsoft 365 licenses (E3/E5 with Copilot add-on). Runs on Microsoft’s cloud infrastructure. Doesn’t add a visible bot but processes the call on Azure.
  3. Teams native recording. Records the call and stores it in OneDrive/SharePoint, also on Microsoft’s cloud. Whether the resulting file gets transcribed depends on your tenant’s Stream/Premium licensing.
  4. A calendar-watcher service that auto-records every meeting. Same as #1 but you don’t have to manually invite it.

All four of these involve either a visible third-party attendee, a cloud pipeline you don’t control, or both. For a lot of people that’s fine. For an executive on a sensitive customer call, for a recruiter doing candidate interviews, for a manager doing performance reviews, for anyone in a regulated industry — it’s not always fine.

The on-device alternative captures the audio that Teams is already playing into your Mac’s output device and transcribes it locally, with no participant in the meeting and no cloud upload.

The macOS APIs that make this trivial

Two Apple frameworks shipped in macOS 26 (Tahoe) and iOS 26 do the work:

  • ScreenCaptureKit with audio-only filters. Lets a sandboxed app subscribe to the system audio output of a specific running process. We point it at the Teams app and we get exactly the audio Teams is producing — nothing else on the system.
  • SpeechAnalyzer, Apple’s on-device ASR introduced at WWDC 2025. Faster than Whisper v3 Turbo on the same hardware, runs entirely on the Neural Engine, supports a growing list of locales. No network required.

These are the same primitives the Zoom no-bot workflow uses. They are completely platform-agnostic about which meeting app is making the noise — Teams, Zoom, Google Meet, Webex, Discord, or a podcast playing in Safari all look the same to ScreenCaptureKit.

The end-to-end Teams flow

Here is what actually happens when you record a Teams meeting on a Mac running macOS 26 with Dictanta installed.

1. Join the Teams call normally

Open the Teams app (or join via the web client in Safari/Chrome — both work). Don’t enable Microsoft’s built-in recording unless you want a second copy in OneDrive. Don’t invite any third-party notetaker.

2. Start the recording with a hotkey

Dictanta lives in your menu bar. The default global hotkey is ⇧⌘R. Press it. The menu bar icon turns coral and pulses. A small live captions strip drops down from the menu bar, scrolling the transcript as it’s generated. You can hide the strip with ⌘⇧K if you find it distracting on a shared screen.

The first recording of system audio triggers a one-time macOS prompt for screen recording permission — Apple gates system audio capture behind the same TCC entitlement as screen capture. Grant it. No video frames are actually captured; this is just how the API contract is structured.

3. Dictanta auto-detects Teams

Because the audio capture is scoped to a specific process, Dictanta sees that the audio is coming from Microsoft Teams (or Microsoft Teams (work or school) depending on your install). The recording gets labeled accordingly. If you have both Teams Personal and Teams Work installed and running, you can pick the one to capture in Dictanta’s source picker.

You can also choose mic-only, system-audio-only, or a mix. The mix is the default for meetings: it captures both the audio Teams is playing (everyone else) and your microphone (you), so the transcript covers all sides.

4. Live partial captions during the call

You get two surfaces during the meeting:

  • The menu-bar captions strip — short, glanceable, won’t show on a screen share if you’ve muted it.
  • A larger live transcript window you can open with ⌥⌘T. Same hotkey behavior as the Zoom flow.

Both are real-time SpeechAnalyzer hypotheses, latency around 300ms on M-series Macs. Useful when someone says a name or a number and you want to confirm you heard it right without breaking the conversation.

5. Stop, and get a finished transcript + summary

When you end the Teams call (or press ⇧⌘R again, or click “stop” in Dictanta), three things happen on-device:

  1. The full transcript is finalized with per-segment timestamps. Each segment is tap-to-seek.
  2. Apple’s Foundation Models LLM generates a structured summary: TL;DR, decisions, action items (best-effort owner and due-date inference), open questions, follow-ups.
  3. Every summary bullet is anchored to the audio span it came from. Hovering a bullet highlights the matching segment in the waveform; clicking scrubs the audio to that moment and highlights the transcript line.

The audio-anchored summary is the part most users care about within a week of using it. AI summaries are useful only if you can verify them in one click — and “click a bullet, hear the sentence” is the cheapest possible verification. The LLM organizes the audio; the audio remains the source of truth.

6. Export, or keep it on the Mac

By default, the transcript and summary sync to your other Apple devices via CloudKit (audio itself does not sync unless you opt into iCloud Drive backup explicitly). Exports available in v1.0:

  • Markdown — drops cleanly into Notion, Obsidian, Apple Notes, Bear, Logseq, Craft.
  • JSON — for tooling and Shortcuts integrations.
  • Plain text — for the simplest pipelines.

DOCX, PDF, and SRT export ship in v1.1.

By default, the raw audio file deletes itself after seven days. The transcript and summary stay until you delete them. Both retention rules are configurable in Settings → Privacy.

Where Teams differs from Zoom in practice

The flow above is identical to Zoom in the broad shape. A few Teams-specific things worth flagging:

Teams web client vs. native client. Both work. The web client (Teams in Edge or Safari) produces system audio just like the native app, so Dictanta captures either equally well. If your IT has restricted the native Teams app install, the web version is a complete substitute from the recording side.

Microsoft Copilot doesn’t conflict. If your tenant has Copilot for Teams turned on, you can let it run and also record locally with Dictanta. They don’t interfere — Copilot operates on Microsoft’s side; Dictanta operates on your Mac’s audio output. You end up with two recaps from two pipelines, which is fine if you want a sanity check, or wasteful if you don’t.

Teams Premium “Intelligent Recap” requires a license per attendee. Dictanta doesn’t. Whether the meeting host has Premium licensing for everyone in the call is irrelevant to whether you can take your own private notes.

Teams’ aggressive notifications can interrupt audio briefly. macOS Teams will sometimes drop out of system audio output for a half-second when it shows a notification banner over the call. SpeechAnalyzer handles the gap fine — it’s well under the silence-padding threshold — but you may notice a sub-second blank in the transcript. Mute notifications in Focus mode to avoid this entirely.

Calls dialed into a phone number routed to a Teams app are still capturable. If you’re using Teams as a softphone for calls to or from phone numbers, the system audio capture path works identically. Just make sure the audio is actually playing through your Mac and not bluetoothing straight to AirPods (see the limits section below).

Where this approach has limits

Worth being direct about:

  • No automatic speaker tagging in v1.0. Bots that join Teams calls can read the participant list and label each utterance with the speaker. Dictanta v1.0 does not do that — speaker diarization from a system-audio mix is not yet production-grade on short clips on Apple’s on-device stack. Diarization is on the v1.1 roadmap.
  • You have to be at the Mac running the recording. Bots can sit in calls you’ve skipped. Dictanta needs your Mac present, awake, and joined to the meeting itself.
  • No native CRM integration. Dictanta exports Markdown and JSON. If you want notes to flow into HubSpot or Salesforce automatically, you wire your own Zapier/Shortcut or use the JSON export with a webhook. Otter has built-in integrations there.
  • Audio routed entirely to a Bluetooth headset that isn’t bonded to your Mac won’t be captured. ScreenCaptureKit captures audio destined for your Mac’s audio system. If you wear AirPods paired only to your iPhone while the Teams call is on the Mac, the audio bypasses the Mac entirely. Pair the AirPods to the Mac (or use wired headphones) and capture works.

If those gaps matter, the cloud-bot category is still the answer. If they don’t — and for most indie operators, founders, and managers, they don’t — the local path is cleaner.

A note on macOS permissions and Teams

The first time Dictanta captures system audio with Teams running, macOS shows a sheet asking for screen recording permission. As mentioned, this is the API contract: ScreenCaptureKit’s audio capture path is gated by the same TCC entitlement as video capture, even when no frames are requested.

You can verify in System Settings → Privacy & Security → Screen Recording that Dictanta is the only app with the entitlement turned on. You can also revoke it any time; on next launch Dictanta falls back to microphone-only recording, which still captures your own voice but not the other participants.

For managed Macs where IT has disabled the screen-recording entitlement entirely, Dictanta runs in mic-only mode. Useful for in-person meetings, less useful for remote Teams calls where you want the other side captured. If you want the full system-audio path on a managed Mac, talk to your IT admin about granting the entitlement to Dictanta specifically. The app is sandboxed and the entitlement is auditable.

Trying it on your next Teams call

Real first-time workflow:

  1. Install Dictanta from the Mac App Store. The download is small. The SpeechAnalyzer language model is part of macOS 26 and already on your Mac.
  2. Open Dictanta once. Grant microphone and screen recording permissions when prompted. The default hotkey ⇧⌘R is fine for most people; rebind it from Settings → Hotkeys if it conflicts with anything.
  3. In your next Teams meeting, press the hotkey when the call starts. Don’t think about it again.
  4. After the meeting, open Dictanta. The recording is on the meetings list, labeled with the Teams app, the time, and the duration. Click into it for transcript + summary.
  5. Export to Markdown if you want it in Notion or Obsidian. Or just leave it in Dictanta — the transcript and summary are searchable across all your recordings (search is on-device too).

The free tier gives you three meetings, which is enough to decide whether the summary quality holds up for what you actually need. If it does, the paid tiers are $9.99/mo, $79.99/yr, or $149.99 lifetime. There is no per-minute meter and no length cap at any tier — a six-hour all-hands transcribes the same way a fifteen-minute one-on-one does.

Bottom line

For Mac users on Teams who want a private, no-bot way to capture meetings, the path is: capture system audio with ScreenCaptureKit, transcribe with SpeechAnalyzer, summarize with Apple’s Foundation Models, all on-device. No participant in the call, no audio leaving the Mac, no vendor pipeline, no monthly meter.

That is the path Dictanta ships, both for Teams and for Zoom, Google Meet, Webex, and anything else that plays audio out of your Mac. The Mac is the most feature-complete target because system-audio capture is a Mac-only capability — iOS doesn’t let third-party apps listen to other apps’ audio.

If your Teams calls are routine and a cloud notetaker is fine for them, keep what’s working. If even one call per week involves something you’d rather not hand to a third party — a customer escalation, a hiring debrief, a strategy review — having the local option available costs you nothing and unlocks the difference between “had to take the meeting cloud-side or not at all” and “took the meeting, kept the notes, told no one.”