Calendar Icon White
September 16, 2026
Clock Icon
9
 min read

The MCP Confused Deputy Problem (and How to Fix It)

The MCP confused deputy problem: agents call systems like Salesforce with a shared service account, so users reach data they shouldn't. How per-user identity passthrough fixes it - and why identity and DLP are two layers, not one.

The MCP Confused Deputy Problem (and How to Fix It)
ChatGPT
Perplexity
Grok
Google AI
Claude
Summarize and analyze this article with:

TL;DR

  • The MCP confused deputy problem: when your agent calls a system like Salesforce, whose permissions apply — the user’s, or the agent’s?
  • Most setups give the agent a single shared service account with broad access. A user who should see only their own records asks a question, and the agent answers with god-mode credentials.
  • Strac passes the individual user’s identity through, so the downstream system enforces its own permission model again.
  • Identity and DLP are two layers, not one: identity prevents retrieval; DLP protects what legitimately flows.

✨ Who Is Your Agent Authenticating As?

It’s the question almost no one asks when they wire up an MCP server. When an AI agent calls the Salesforce MCP server on a user’s behalf, it needs credentials. The path of least resistance is one service account with wide access, shared by every user of the agent. It works immediately — and it quietly removes the single most important control the downstream system has: its own per-user permissions. This is the classic confused deputy: a privileged intermediary (the agent) acting on behalf of a less-privileged party (the user), using the intermediary’s authority instead of the user’s.

Diagram comparing a shared MCP service account against Strac per-user identity passthrough
With a shared service account the agent inherits god-mode; with Strac’s per-user identity passthrough, the downstream system enforces each user’s own permissions.

The Shared Service Account Trap

Walk the escalation through. Your support agent connects to Salesforce with a service account that can read every account. A support rep — who in Salesforce can only see their own assigned accounts — asks the agent, “summarize our top customers by revenue.” The agent queries with the service account and returns every account, including ones the rep has no business seeing. No permission was violated at the database level, because the query ran as the god-mode account. The user’s own access controls simply stopped applying the moment the agent became the deputy.

Shared service accountPer-user identity passthrough
Who the query runs asOne broad accountThe actual user
Downstream permissionsBypassedEnforced by the system itself
Blast radiusEverything the account can reachOnly what the user can reach

✨ Per-User Identity Passthrough

Strac solves this by passing the individual user’s identity through to the downstream system, rather than collapsing everyone into a shared account. When the rep asks their question, the query runs as the rep — and Salesforce’s own permission model returns only the accounts they’re allowed to see. You don’t rebuild access control in the agent layer; you let the system that already has it do its job. This works across connected systems — see the MCP integrations and connectors like the Salesforce MCP server.

Strac MCP audit ledger showing per-user invocations
Strac logs every MCP invocation with the user, tool, and data involved — so per-user access is provable, not assumed.

Why Identity Is a Prerequisite for DLP, Not an Alternative

It’s tempting to think DLP alone is enough: let the agent fetch whatever, then redact the sensitive parts. That’s a band-aid. If the agent should never have retrieved a record in the first place, redacting a field on the way out still means the data was queried, logged, and briefly in context. Identity prevents the retrieval; DLP protects what legitimately flows. You want both: per-user identity so the agent only ever pulls what the user is entitled to, and MCP DLP so the PII, PHI, and secrets inside that legitimate data are still redacted, masked, or blocked as policy requires.

🌶️ Spicy FAQs on the MCP Confused Deputy Problem

What is the MCP confused deputy problem?

It's when an AI agent calls a system (like Salesforce) using its own broad credentials instead of the user's. The agent is a privileged 'deputy' acting for a less-privileged user, so the downstream system's per-user permissions stop applying and the user can reach data they shouldn't.

Why is a shared service account a problem for MCP?

Because every user of the agent inherits the account's access. A user who should see only their own records gets answers drawn from everything the service account can reach - the query never runs as them, so their own permissions are bypassed.

What is per-user identity passthrough?

It passes the individual user's identity through to the downstream system so that system enforces its own permission model. The query runs as the user, and they get only what they're entitled to - instead of the agent's god-mode view.

Doesn't DLP solve this on its own?

No. DLP protects sensitive fields in data that legitimately flows, but if the agent should never have fetched a record, redacting it afterward is a band-aid - it was still queried and put in context. Identity prevents retrieval; DLP protects what's allowed. You need both.

Does Strac provide per-user identity for MCP?

Yes. Strac passes the individual user's identity through to connected systems and logs every MCP invocation by user, tool, and data - so downstream permissions apply and per-user access is provable for an audit.

The Bottom Line

An agent with a shared service account is a confused deputy with god-mode. Strac passes each user’s identity through so the downstream system’s own permissions apply — then layers MCP DLP on top of what legitimately flows. Two layers, not one. See MCP security for the full model, or book a demo.

What is the MCP confused deputy problem?
Why is a shared service account a problem for MCP?
What is per-user identity passthrough?
Doesn't DLP solve this on its own?
Does Strac provide per-user identity for MCP?
Discover & Protect Data on SaaS, AI, MCP, Endpoints & Cloud
Strac provides end-to-end data loss prevention for all SaaS and Cloud apps. Integrate in under 10 minutes and experience the benefits of live DLP scanning, live redaction, and a fortified SaaS environment.
Trusted by enterprises
Data Security + Compliance Automation

Latest articles

Browse all

Get Your Datasheet

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Close Icon