# Connecting Claude Code to email and calendar is better done with native connectors for one inbox and Composio for several accounts

How to connect Claude Code to email and calendar: native connectors in the desktop app, tool permissions, Composio for multiple inboxes, and a drafts-only mod.

Source: https://dfwai.top/connecting-claude-code/ · based on the channel [build with Oli](https://www.youtube.com/channel/UC7P3wLgvRR29bMvWubYdG8A) · Video: [Connect Claude Code to your email and calendar | Agent ecosystem, part 6](https://www.youtube.com/watch?v=aMCTWbH73Ms) · 2026-10-29

![Connecting Claude Code to email and calendar is better done with native connectors for one inbox and Composio for several accounts](https://dfwai.top/connecting-claude-code/connecting-claude-code.webp)

## Key takeaways

- A connector is effectively a login for the agent: one per service it needs to reach, such as Gmail or Google Calendar.
- Connectors are added in the Claude desktop app, and a new chat must be started afterwards so the tools load.
- Each tool carries one of three permissions: Always allow, Needs approval, or Blocked; sending email should be set to Needs approval first.
- Composio is the option for more than one Gmail account or for services Claude has no native connector for.
- A drafts-only mod prevents Claude from sending mail even when the CLAUDE.md instruction is missed.

To connect Claude Code to your email and calendar, add a connector in the Claude desktop app, set every sending tool to Needs approval, and start a new chat so the tools load; if you need more than one inbox or a service Claude has no connector for, use Composio instead. The [connectors section of the agent ecosystem course](https://oliwoodman.com/agent-ecosystem/the-connectors) walks through both routes step by step. A connector is, in plain terms, a login for the agent, one for each thing it reaches.

## What a connector actually is and how it differs from a prompt

A connector is an authenticated link between Claude and an outside service, and inside it sit individual tools the model can call. The Gmail connector, for example, exposes tools for searching messages, reading threads, creating drafts and sending mail; the calendar connector exposes listing events, checking availability and creating events. The model does not get a generic "access to your inbox" — it gets a list of specific actions, each with its own permission state.

That distinction matters because the agent ecosystem itself is just a set of files on your own computer describing who you are, how your business runs and what is going on. Files give context; connectors give reach. Until the agent can open the inbox and the calendar, it can reason about your business but cannot do much helpful work in it.

## Where your data goes and why the plan matters

Connecting an inbox means message content leaves your machine and is processed on Anthropic's side, so the plan you are on determines how that data is handled. Consumer plans and commercial plans have different retention and training terms, and for a work account the administrator may block third-party OAuth apps entirely — which is the most common reason a company Google account simply refuses to connect. Before wiring up a real business inbox, check two things: which plan the account sits under, and whether the workspace admin allows the OAuth client.

## Adding a connector and the permission setting to change first

The setup itself is short, but the order of operations matters.

1. Open the Claude desktop app and go to the connectors settings.
2. Add the Gmail or Google Calendar connector and complete the OAuth login in the browser window that opens.
3. Start a new chat. Existing conversations do not pick up newly added tools, which is why a fresh chat is required.
4. Open the tool permissions list and review each tool individually.
5. Set every send, reply and forward tool to Needs approval before doing anything else.

Each tool has three states: Always allow, Needs approval, and Blocked. Always allow is convenient for read-only tools such as searching mail or listing calendar events. Needs approval is the correct default for anything that writes to the outside world. Blocked removes the tool from the agent's reach entirely. The single setting to change first is sending email: leaving it on Always allow means a misread instruction can put a message in a client's inbox before you see it.

## Telling CLAUDE.md what the agent can reach

The CLAUDE.md file should state which connectors exist and what each may be used for, because the model plans against that description. A useful entry names the service, the account, the allowed actions and the boundary — for example, that Gmail is connected for reading and drafting only, that replies stay in drafts, and that the calendar is read-only for scheduling questions. Naming the account matters once more than one is connected, since the agent otherwise has no way to know which inbox a request refers to. Keep the wording operational rather than aspirational: "search Gmail for invoices and draft replies, never send" is usable; "handle my email" is not.

## The first job: catching up an inbox and starting a CRM

The natural first task is a catch-up pass over the inbox with the replies left in drafts. Ask the agent to search recent threads, group them by sender and topic, summarise what is outstanding, and write draft replies for the ones that need an answer — with sending left to you. Because the send tool is on Needs approval, every draft waits for a click.

The same pass produces a CRM almost for free. Have the agent extract names, companies, roles and the last point of contact from the threads and write them into a structured file such as a CSV or markdown table in the project folder. That file then becomes part of the ecosystem, readable in every future session without re-querying the mailbox.

## What goes wrong, and how a drafts-only mod helps

Two failures account for most of the damage. The first is sending something that was only meant to be drafted: the model reads "reply to Sarah" as permission to send, the permission is set to Always allow, and the message is gone. The second is a work account that will not connect at all, usually because the Google Workspace admin has not approved the OAuth app.

A drafts-only mod addresses the first failure at the level below your instructions. Rather than relying on CLAUDE.md being read correctly, a mod intercepts the send action itself, so even a missed instruction cannot result in an outgoing email. The free drafts-only mod is documented at https://oliwoodman.com/agent-ecosystem/the-connectors?part=drafts-only. For the second failure there is no technical workaround: the admin has to allow the app, or you connect a personal account instead.

## Learning how you work from calendar and inbox history

Once read access is in place, the agent can study patterns rather than single messages: which hours are blocked for deep work, how long meetings usually run, who you reply to within minutes and who waits days, which recurring threads are administrative noise. That reading turns into a working profile — preferred meeting windows, tone per correspondent, standing commitments — that can be written back into the ecosystem files and used to draft in your voice. Give it a bounded window, such as the last ninety days, so the output stays relevant.

## Composio for multiple inboxes and missing connectors

Native connectors cover one account per service and only the services on the list. Composio sits in between and solves both limits: it holds the OAuth connections and exposes them to the agent, so four Gmail accounts can be read in one session, and it adds tools Claude has no native connector for, such as Instagram stats. Setup is free and documented at https://oliwoodman.com/agent-ecosystem/the-connectors?part=one-account-or-many, with the platform itself at https://composio.dev. The trade-off is another service holding your tokens, so scope each connection to the minimum the agent needs.

## All the links from this breakdown

- Connectors section of the course: https://oliwoodman.com/agent-ecosystem/the-connectors
- One account or many, Composio setup: https://oliwoodman.com/agent-ecosystem/the-connectors?part=one-account-or-many
- Drafts-only mod: https://oliwoodman.com/agent-ecosystem/the-connectors?part=drafts-only
- Composio: https://composio.dev
- Claude desktop app: https://claude.com/download
- Part 1, VS Code and Claude Code setup: https://www.youtube.com/watch?v=xkvd2iZU_xI
- Part 2, usage limits and models: https://www.youtube.com/watch?v=1SnRqfwW4mk
- Part 3, the mental model: https://www.youtube.com/watch?v=T9daN-Zsp58
- Part 4, mapping your ecosystem: https://www.youtube.com/watch?v=8ibMlKL5wVc
- Part 5, writing your CLAUDE.md: https://www.youtube.com/watch?v=qyQx9NwG6fw

## Summary

Connecting Claude Code to email and calendar comes down to three decisions: which connector route fits your accounts, which tools are allowed to act without asking, and what the CLAUDE.md says the agent may reach. Native connectors in the Claude desktop app are the simplest path for a single inbox, while Composio covers multiple Gmail accounts and services that are not on the list. Setting send tools to Needs approval, and adding a drafts-only mod underneath, keeps the agent useful without letting it speak for you unasked. This breakdown is based on the build with Oli video series on building an agent ecosystem; for the full walkthrough and the free setup guides, start at https://oliwoodman.com/agent-ecosystem/the-connectors.

## Questions & answers

**Do I need the desktop app to connect Claude Code to Gmail?**

Yes. Connectors are added through the Claude desktop app's settings, where you complete the OAuth login for Gmail or Google Calendar. After adding one, start a new chat, because conversations already open do not pick up newly added tools.

**Why will my work Google account not connect?**

Google Workspace administrators can block third-party OAuth apps, which prevents the connector from completing its login. The fix is on the admin side — approving the app for the workspace — or connecting a personal account instead. No setting inside Claude overrides that block.

**What is the difference between Always allow and Needs approval?**

Always allow lets a tool run without asking, which suits read-only actions like searching mail or listing events. Needs approval pauses each call until you confirm, which is the right state for send, reply and forward tools. Blocked removes the tool from the agent entirely.

**Can Claude Code read more than one Gmail account at once?**

Not through the native connector, which handles one account per service. Composio holds multiple OAuth connections and exposes them to the agent, so several inboxes can be read in a single session alongside tools Claude has no connector for.
