Both assistants are already in the building
Most IT teams do not get to pick one. Microsoft Copilot arrives with the Microsoft 365 contract. Claude arrives because a product team asked for it. Cursor arrives because engineering installed it last quarter. The question stops being which assistant. It becomes which apps each one may reach, as whom, and what gets written down. Elaichi answers that once: every client signs in to one MCP address, and the roles, restrictions and audit log apply to all of them.
That is the real decision behind Microsoft Copilot vs Claude. The two products are built around different mechanics for reaching company data. A team that treats them as interchangeable ends up with two sets of credentials, two admin consoles and no single record of what happened. MCP, the open protocol AI clients use to call tools, is the part that makes one answer possible for both.
How does Microsoft Copilot reach company data compared with Claude?
Microsoft Copilot reaches external data mainly by indexing it. Claude reaches it by calling the app at the moment of the question. These are two different access mechanics with different trade-offs.
Microsoft's Salesforce CRM Copilot connector indexes Salesforce data into Microsoft 365. Microsoft Search, Copilot and Copilot Search can then surface CRM records. It indexes Account, Contact, Opportunity, Lead, Case, Event, Task and Campaign objects. See Microsoft Learn, verified against the live page October 2026. In its default access setting, the connector enforces Salesforce record ownership, sharing rules and role hierarchy (same page). Writing to Salesforce is not documented on that overview page. Treat this connector as read-only until Microsoft documents otherwise. An indexed connector is also only as current as its last sync. Microsoft states that permission updates sync only in full crawls, and that incremental crawls do not process them (same page).
Microsoft also has a second shape. Federated Copilot connectors use MCP to fetch data in real time with the user's identity and permissions, and do not index external data into Microsoft 365. See Microsoft Learn, verified October 2026. Federated connectors are published by Microsoft or submitted by partners and approved by Microsoft. Salesforce is not among the data sources Microsoft lists for them on that page as of this check. Microsoft states that support for write actions through federated connectors begins rolling out in early October 2026 (same page). That is a vendor-announced timeline. Treat it as roadmap until you see it in your own tenant.
Claude's shape is the live call. It is current by construction, because the call happens at question time. It is also synchronous, so a slow downstream API makes the assistant's answer slow too. Custom connectors that use remote MCP work in Claude, Cowork and Claude Desktop, and are offered on the Free, Pro, Max, Team and Enterprise plans. See Anthropic support, verified October 2026. On Team and Enterprise plans, an Owner or Primary Owner adds a custom connector for the whole organization, and each member then connects and authenticates individually (same page). Check each vendor's own pricing page before you budget for either product.
The practical difference is simple. An indexed connector is good at "what do we know about this account." A live MCP connector is good at "open the ticket, read the last three comments, and file a note." Neither is strictly better, and most organizations need both. If the choice in front of you is a search layer over everything versus direct governed calls into each app, search layer or direct connection walks through that split.
| Microsoft Copilot connectors | Claude remote MCP connectors | |
|---|---|---|
| How data is reached | Indexed into Microsoft 365 for search and answers (federated connectors fetch live over MCP) | Called live in the app at the moment of the question |
| Freshness | As current as the last index/sync cycle | Current at call time, by construction |
| Failure mode | Stale answer if sync lags; search still responds | Slow or failed answer if the downstream API is slow or down |
| Who adds it | See Microsoft's connector documentation | Owner or Primary Owner, for the whole organization on Team and Enterprise |
| Who signs in | Indexing uses the connector's own access setting; federated connectors use the user's identity and permissions | Each member connects and authenticates individually |
| Per-tool control | Not available in Power Platform advanced connector policies; the whole server is blocked instead | Always allow, Needs approval or Blocked, per connector, per tool category or per tool |
| Audit | Purview records CopilotInteraction events; the record carries the transcript thread ID | Compliance API Activity Feed, once a Primary Owner enables it |
| Write support | Not documented for the Salesforce connector; federated connectors' write actions are an announced October 2026 rollout, not independently confirmed shipped | Live calls can write wherever the underlying tool permits it, governed by connector tool permissions |
Rows describing announced-but-unshipped behavior are marked as such rather than stated as settled fact.
What does each admin console actually control?
Microsoft's console controls which plugins and MCP servers exist for the tenant and who may use them. Claude's console controls which connectors the organization has added and what each one is allowed to do.
On the Microsoft side, MCP server registration requests are reviewed in the Microsoft 365 admin center under Agents, then Tools, on the Requests tab. An admin there approves a server into the organizational registry or rejects it. See Microsoft Learn, menu path verified October 2026. From the Registry tab, an admin can block an MCP server across the organization, which disables every tool it exposes (same page). In Power Platform, advanced connector policies let an admin block an entire MCP server. Microsoft states that granular control over individual MCP tools within a server is currently not available in those policies. See Microsoft Learn, verified October 2026.
Microsoft Purview's audit log records user interactions with Copilot Studio agents as CopilotInteraction events. A record carries the transcript thread ID rather than the conversation text, which is stored separately and viewed through Data Security Posture Management for AI. See Microsoft Learn, verified October 2026.
On the Claude side, connector tool permissions take one of three settings: Always allow, Needs approval or Blocked. Each applies to a whole connector, to a category of its tools or to a single tool. See Anthropic support, verified October 2026. Owners on Team and Enterprise plans set these for the whole organization, and individual users cannot override them (same page). A Claude Enterprise organization's Primary Owner enables the Compliance API at claude.ai Organization settings, then API. See Anthropic docs, verified October 2026. Its Activity Feed starts recording when the API is first enabled, does not backfill earlier activity, and keeps recorded activity for 6 years. See Anthropic docs, verified October 2026. Note the gap this creates. Turn the Compliance API on six months into using Claude connectors and you have no record of those six months, with no retroactive fix.
Both consoles govern their own client well. Neither governs the other. A rule written in the Microsoft 365 admin center does not reach Claude, and a Claude connector permission does not reach a Copilot Studio agent.
Where do both fall short for non-Microsoft apps?
The shortfall is not a missing feature in either product. It is that the governance lives in the client. Every client you add is another place to write the same rules, and another place an MCP-specific attack can land.
Two risks are specific to MCP. First, tool poisoning. A malicious or compromised MCP server can describe its tools with instructions aimed at the model rather than the user: text in a tool's description field that tells the model to exfiltrate data or ignore prior instructions. The model reads that description as part of deciding what to call. That is a reason "approve the server" and "trust every tool it exposes forever" should not be the same decision. Second, confused deputy risk. An agent holding broad credentials can act on behalf of a user with narrower access. If the client does not re-check permissions per call, that agent can surface data the user could not see directly. Microsoft's federated connectors address this by using the user's identity per call. Elaichi does the same by looking up permissions on each request instead of baking them into a long-lived token. Any gateway that authenticates once and then trusts the cached result indefinitely carries this risk.
The non-security shortfall is about scale. Think about what a mid-size company runs: commonly Salesforce or HubSpot for CRM, Jira or Linear for engineering, Zendesk for support, Stripe for billing, Notion or Confluence for docs, and a payroll system. Most companies run several of these side by side. Each one needs a credential. Each one needs an answer to "may a support agent run the tool that deletes a ticket?" If the answer lives in Claude's connector permissions and again in Copilot Studio and again in Cursor's settings, you have three answers that drift. When somebody leaves, you have three places to check and two audit trails to cross-reference. Those trails use different event schemas, so the cross-reference is manual and error-prone.
Whoever sits in the path is the only one who can record what happened. Calls a client makes to a vendor's own MCP server directly, GitHub's for example, do not pass through Elaichi, so Elaichi does not govern them. If nothing sits in the path, nobody records it. That trade, each vendor's own server against one plane in front of all of them, is worked through in vendor servers against a single plane.
If your company lives entirely inside Microsoft 365 and you only want better search over documents and email, you do not need a control plane. Microsoft's own indexing and Purview controls are the shorter road. This post is for the case where the apps that matter are not Microsoft's.
How can one governed endpoint serve both?
Elaichi serves MCP at one endpoint, POST https://api.elaichi.ai/mcp. The same address serves every organization. Which organization, person and tools a client reaches comes from the OAuth grant behind its token, not from the URL. There are no per-user, per-team or per-client MCP addresses.
Claude, ChatGPT and Cursor sign in to that address directly over OAuth. Microsoft Copilot reaches it through a Copilot Studio agent that adds Elaichi's MCP endpoint as a tool, with OAuth set to Dynamic discovery. The product team confirmed on 2026-10-21 that sign-in and connected tools work that way. It is not a verified client, so its entry on Elaichi's consent screen shows the name the client registered for itself.
What changes when both clients come through one address:
- One grant per person, per client. Each person connects their client once and approves their own grant. Every call made with that grant's tokens acts as the person who approved it, in the organization they picked. Permissions are looked up on each request rather than stored in the token.
- One set of restrictions. A restriction carries allow and block rules over whole connectors or single tools. In Elaichi, restriction targets are role or user only; the organization default is the absence of a rule, which means allow everything. To keep a team off a tool, write the rule on their role or on each member.
- One credential store. The AI client holds only an Elaichi token. Connector secrets live in a separate credential service, encrypted at rest with AES-256-GCM, and are fetched into memory only for the call that needs them.
- One audit log. Every connected-tool call that reaches execution is written with one entry for each connected-tool call that reaches execution (a call refused earlier writes none). An organization has one audit log across all its connectors, with one event schema.
- One offboarding action. Removing or suspending a member revokes their MCP grants, and their clients fail on the next call.
The restriction clamp runs on every path that reaches a connected tool. That covers a direct tools/call, execute_tool, read_tool, run_code, the toolbox execute operation and each step of a synthetic tool. It is evaluated for the person the call acts as, before the connection is used.
This architecture has a cost. A single endpoint is a single point of failure. If Elaichi's service is down, every client routed through it for non-Microsoft apps loses access to those tools at the same time. Neither Microsoft Copilot's per-connector indexing nor Claude's per-connector live calls share that failure mode. It is also a lock-in point. Once tool access, restrictions and audit history live in one vendor's gateway, moving off it means re-establishing all three elsewhere. For a company running two or three AI clients against several apps, consolidated governance usually outweighs the single-point-of-failure risk. It is a real trade, not a free upgrade.
The timing trade-off is honest too. A role, team-membership, restriction or access-grant change reaches every surface about two minutes. Several things are faster. In Elaichi, removing or suspending a member revokes every live grant in the same transaction as the membership change.
If you are weighing the gateway shape itself, the four gateway shapes lays them out side by side, and the restriction resolver walkthrough covers how role rules and personal rules combine. If the question behind the shape is where the data sits, running your own server against a managed one covers residency.
What Microsoft Copilot vs Claude looks like on one catalog
Under one endpoint, the catalog stops being per-client. Elaichi's connector catalog holds two kinds of connector, and the difference matters when something breaks.
Most of the catalog is connectors Elaichi authors and runs itself. The rest are native MCP connectors: a vendor builds and runs its own MCP server, and Elaichi handles sign-in, access and audit in front of it. Datadog and Linear are in the catalog that way. For a native MCP connector, Elaichi does not write or fix the vendor's tools. Elaichi also cannot independently verify that the vendor's server is free of the tool-poisoning risk described above. That risk sits with whoever operates the underlying server. Reports about a native connector's tool behavior go to the vendor's support contact shown on the connector's page.
A team can also bring its own remote MCP server in as a connector, on the Gold plan, if an Org Owner or Org Admin creates it. The server has to be reachable over public HTTPS and speak MCP over Streamable HTTP. GitHub is not in Elaichi's catalog, so a team that needs it brings GitHub's own remote MCP server in this way. Calls through that connector are then governed by the same restrictions, scopes and audit log as everything else. Elaichi governs access to the server, not the trustworthiness of what the server's tools do internally. Browse the connectors for the 650+ already there.
What the AI client sees is small by design. In Elaichi, connected tools are never listed one by one, however few there are. The model finds a connected tool with search_tools and runs it with read_tool (a read) or execute_tool (anything), or with run_code under Code Mode. Each search result says which of the two to use. execute_tool is only a naming indirection: it unwraps to the tool name and arguments it was given and meets the same gates as a direct call. read_tool unwraps the same way and meets the same gates, then refuses anything that is not a connected read.
One consequence matters before you configure client-side controls. Per-tool client permissions see Elaichi's connected tools as a few tool names, execute_tool, read_tool and run_code, so they cannot tell one connected app from another. Gating execute_tool alone leaves read_tool and run_code. Per-app and per-tool control is set in Elaichi, as restrictions on a role or a member.
Which one should you standardize on?
The honest answer is that the two solve different problems and most companies end up with both.
Pick Microsoft Copilot's indexed connectors when the value is search and summary over records people already have permission to see, and when the data sits in or next to Microsoft 365. Microsoft's own controls, including Purview audit for Copilot Studio activity, are built around that case. Answers are only as fresh as the last sync, and write support through federated connectors is an announced rollout rather than a verified-shipped feature.
Pick live MCP connectors, through Claude or ChatGPT or Cursor, when the value is doing something: reading a ticket and drafting a reply, pulling a deal's history, checking a deployment. That needs a different kind of control, because a live call can write. It also depends on the downstream app responding, so plan for timeouts as a normal failure mode. It means taking tool poisoning and confused-deputy access seriously per connector rather than per vendor.
Then decide separately where the rules live. If the apps that matter are not Microsoft's, putting one governed address in front of all of them means the role, the restriction and the audit row are written once. The cost is that the address becomes a single point of failure and a long-term dependency. Weigh that against the status quo of fragmented rules before committing. Microsoft Copilot gets there through a Copilot Studio agent. Claude, ChatGPT, Cursor and any MCP client get there directly. For the Copilot-side mechanics in detail, the Copilot Studio comparison covers what an agent does and does not carry.