How to Connect Codex to Outlook (Plugin and MCP)
Codex has a first-party Outlook Email plugin. Install it, connect a Microsoft account, and Codex triages that inbox, drafts replies, and sends from the terminal. One signed-in Microsoft identity is the whole of it, outbound writes are plain text only, and nothing starts unless you type. Carly is the way past all three, because it registers as a single MCP server that already holds every Outlook and Gmail mailbox you connect to it.
What the Outlook Email plugin covers
The plugin is called Outlook Email, it is published by OpenAI, and its manifest describes it in one line: “Work with Outlook Email using the configured Microsoft Outlook app connector.” It sits in the OpenAI-curated marketplace under Communication, alongside a separate Outlook Calendar plugin, plus Teams, SharePoint, Gmail, Google Drive, and Slack.
Worth knowing where that list lives. OpenAI’s plugin documentation names Gmail, Google Drive, Slack, and Codex Security as its worked examples and never mentions Outlook, so a reader who checks only the prose concludes there is no Microsoft route. The marketplace itself is the authority: run codex plugin list and outlook-email and outlook-calendar are both there, at version 0.1.3, marked AVAILABLE with authentication on install.
On July 9, 2026 OpenAI folded the app directory into a plugin directory shared across ChatGPT and Codex. A plugin bundles apps, skills, and app templates; the MCP connection underneath is unchanged, and the 1,600-plus already-approved apps were migrated automatically.
That merge is why a Codex user has an Outlook plugin at all. Codex and ChatGPT browse one catalog, so the mail access Codex gets is the mail access ChatGPT gets.
The plugin ships six skills rather than a bare tool list: inbox triage, reply drafting, task extraction, subscription cleanup, shared mailboxes, and a base skill that covers search and thread summarization. Under them sit real write actions. Codex can create reply and forward drafts, send, schedule a delayed send, move messages, set categories, create folders, and inspect unsubscribe headers before acting on a newsletter.
Installing it
In the Codex CLI, enter /plugins to open the plugin browser, install Outlook Email from the OpenAI tab, and connect the Microsoft account when prompted. The ChatGPT desktop app carries the same directory under its Plugins tab.
Then start a new session. OpenAI’s docs are explicit that bundled skills and tools become available when you start a new chat or CLI session after installation, so the session you installed from will not see them.
One surface never gets it. “Plugins aren’t available in the IDE extension,” per the same page, so a plugin browser is not something to go looking for in VS Code.
Where the plugin stops
Three walls, in the order people hit them.
One Microsoft identity. The plugin authorizes the signed-in user’s mailbox. Delegated and shared mailboxes are reachable, but only by passing an exact mailbox_user_principal_name on a separate set of actions, and the plugin’s own skill warns not to mix those message IDs with signed-in-user actions. A second full mailbox of your own is not something you add beside the first. OpenAI’s tracker carries the open request support multiple named accounts per app/connector, which notes that “the app/connector model appears oriented around one active connection per provider.”
Plain text only. This one surprises people. The plugin states that “outbound Outlook email writes are plain-text only” and instructs the model to say so rather than attempt HTML: no rich formatting, no styled sections, no layout-dependent markup. Fine for a terse reply, wrong for anything that goes to a client with structure in it.
Nothing begins on its own. Codex acts when you type. Overnight triage, a reply that has to go out the moment a message lands, a follow-up three days later: none of that starts by itself.
Reach every mailbox: register Carly as an MCP server
Carly holds Outlook and Gmail accounts on its side and exposes all of them to Codex through one MCP server. One config entry, any number of mailboxes, both providers, with rich formatting intact.
- Sign in at carlyassistant.com.
- Open carlyassistant.com/integrations, find Outlook or Gmail, and click Connect.
- Authorize the first account and confirm the address Carly shows.
- Return to the integrations page and connect the next identity. Choose Use another account if Microsoft preselects your previous login.
Mix providers freely. A second Outlook mailbox sits beside the first, and a Gmail account sits beside both. If a Microsoft 365 or Google Workspace account needs administrator review, ask that administrator to approve; each tenant decides independently.
Then register the server. The CLI route is one line:
codex mcp add carly --url https://carlyassistant.com/mcp/
Servers added this way land in ~/.codex/config.toml at user scope. The hand-written equivalent:
[mcp_servers.carly]
url = "https://carlyassistant.com/mcp/"
A trusted project can carry its own .codex/config.toml if you would rather scope the server to one repository than to the whole machine. Then authenticate:
codex mcp login carly
That opens the browser OAuth flow. Sign in to the Carly workspace holding your mailboxes, then run codex mcp list to confirm the server is live. Codex supports OAuth against remote HTTP MCP servers, including Client ID Metadata Documents and Dynamic Client Registration, so no secret has to sit in a config file.
Start a fresh session before you go looking for the tools. Codex spawns its MCP servers once at session start and never revisits them while the session runs.
MCP configuration is shared across the ChatGPT desktop app, the Codex CLI, and the IDE extension, which is the surface the plugin route never reaches at all.
Naming the mailbox in a prompt
Roles read better than raw addresses in conversation, but the full address is what makes an action land in the right place. Declare both once:
Treat
marcus@outlook.comas Personal,marcus@twilio.comas Main Company, andmarcus@instacart.comas Client. Always state the target address before changing anything.
Then name the target on each action:
In
marcus@twilio.com, list the sender and subject of the five newest unread messages. Do not change anything.
Draft the reply from
marcus@instacart.com. Do not send yet.
Keep approvals on while you are testing. A coding agent holding send rights across two employers’ mailboxes deserves a confirmation step.
Outlook Email plugin and Carly, side by side
| Outlook Email plugin | Carly | |
|---|---|---|
| Outlook accounts at once | One signed-in identity | Every one you connect |
| Gmail accounts | Separate plugin, one account | Every one you connect |
| Outlook and Gmail together | No | Yes, any number of each |
| Outbound formatting | Plain text only | Formatted mail with attachments |
| Works in the IDE extension | No | Yes, over MCP |
| Says which account it used | Not consistently | On every action |
| Starts when mail arrives | No | Yes |
| Works with no session open | No | Yes |
| Adding a fourth mailbox | Not possible | No config change |
The half that never starts with a prompt
Wiring Carly into Codex closes the account problem and the formatting one. It does not, by itself, close the bigger one.
MCP has no trigger mechanism and no scheduler. Its own Triggers and Events working group opens by conceding that clients learn about server-side changes by polling, and that work is still listed as on the horizon rather than shipped.
ChatGPT Scheduled Tasks and Claude Cowork both run unattended on timers. Their ordinary task schedulers do not subscribe directly to arbitrary events in connected business apps. ChatGPT Workspace Agents can be invoked through an API, but an upstream system must still detect the event and call it.
Carly’s own side is where that gap closes. Its workflows fire on events and schedules rather than on you typing, so a message arriving in Outlook is enough to start triage, a draft, a reply, a calendar hold, or a CRM update. Each agent carries its own name, email address, and memory, so a client can write to one directly and the work begins on arrival rather than the next time you open a terminal.
Around the mail sit 260+ native integrations plus your own API key for anything else with a public API. Carly offers free Zapier-style workflows; AI agents start at $35/month.
Connect every inbox at carlyassistant.com.
Quick fixes when Outlook does not respond
| Problem | Fix |
|---|---|
| The plugin browser is missing | You are in the IDE extension; use the Codex CLI or the ChatGPT desktop app |
| No tools in the session | Start a new session after installing a plugin or adding a server |
| The reply came back unformatted | Plugin writes are plain text; send formatted mail through Carly instead |
codex mcp login never completes | Finish the browser OAuth flow, then rerun codex mcp list |
| Microsoft reused your signed-in account | Choose Use another account rather than the suggested profile |
| A work account stalls at consent | Ask that Microsoft 365 administrator to approve |
| Codex answered from the wrong inbox | Name the full address; roles are for reading, addresses are for acting |
| A shared mailbox action fails | Shared mail needs the delegated actions and an exact user principal name |
Frequently Asked Questions
Does OpenAI Codex integrate with Outlook?
Yes. A first-party Outlook Email plugin published by OpenAI lives in the catalog that ChatGPT and Codex share, installable from the Codex CLI plugin browser or the ChatGPT desktop app. It works through the Microsoft Outlook app connector, holds one signed-in identity, writes plain text only, and is not available in the IDE extension.
Can Codex send email from Outlook for me?
Yes, once the plugin is installed and connected. It can draft, reply, forward, schedule a delayed send, and send outright, though the plugin defaults to a draft unless you clearly ask it to send, and every outbound message is plain text. For formatted mail that goes out on its own across Outlook and Gmail, see Carly.
Can Codex reach two Outlook accounts?
Not through the plugin, which authorizes one Microsoft identity at a time; delegated and shared mailboxes use a separate set of actions and an exact user principal name. Connect both accounts to Carly and register one MCP server, and a single Codex session can search or act in whichever inbox you name.
How do I connect Codex to Outlook?
Enter /plugins in the Codex CLI, install Outlook Email from the OpenAI tab, authorize the Microsoft account, and start a new session. To reach several mailboxes at once, connect them at carlyassistant.com/integrations and run codex mcp add carly --url https://carlyassistant.com/mcp/ followed by codex mcp login carly.
Should I run inbox work inside Codex?
Codex is a coding agent, so terminal mail suits scripted or one-off tasks: read the support thread, check the alert, quote it into a fix. Recurring triage, formatted client replies, and follow-up belong in a Carly workflow that runs with nothing open.
More: Connect multiple email accounts to Codex · Codex MCP servers · Codex + Gmail · Codex + Outlook Calendar · Codex + Slack · Best AI assistant for Outlook email · Best AI email assistants · Carly’s Outlook integration
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."


