Skip to main content Announcing Tool Gateway MCP: the universal MCPRead the announcement
Guillaume Lebedel Guillaume Lebedel · · 7 min read
An AI agent with its own Workspace identity calls Salesforce and Workday, where the audit log can record the agent, a shared integration user or a person.

How AI agents log in to Salesforce and Workday

Table of Contents

Google’s new Gemini agent gets agent identity right inside Google Workspace. What it hasn’t answered is what that identity becomes once the agent writes to Salesforce or Workday, where today most agents still show up as a shared integration user or as the person who clicked “Allow”.

Google announced the Gemini agent at Gemini at Work 2026 on 8 October. Thomas Kurian’s keynote post describes coworker agents that each get a dedicated identity: an @agents.company.com email address, a Workspace account with its own calendar and Drive, and an entry in the company directory. In Google’s words, a coworker agent “acts under its own identity rather than yours, and it sees only what you share with it.” Its edits appear under its own name in version history, and every action “is written to an audit trail and attributed to the agent rather than to a person.”

I think that’s the right design. It’s also the easier half of the problem. Google owns Workspace, so it can create the account, attach the permissions and write the logs in one system.

What happens outside Workspace

The same post lists Salesforce, ServiceNow, Jira and Slack among the tools the agent connects to. For external systems, Google says the agent’s identity “is mapped and propagated through industry standards such as OAuth.”

“Mapped” carries most of that sentence. Salesforce has no idea what an @agents.company.com account is, and neither does Workday. When the agent calls their APIs it has to authenticate as something they already understand, and each of them has its own user model, its own licences and its own audit log. Whatever the agent maps to is the name in that log, and it decides how much data the agent can reach.

None of this is specific to Google. Any agent platform that writes to systems it doesn’t own has the same choice to make, including Microsoft’s, Salesforce’s and the ones your team builds in-house. In practice there are three options.

Three panels showing the same two agent actions in a Salesforce audit log. With one user per agent, each row names the agent. With a shared integration user, both rows say Integration User. With a person's OAuth grant, both rows name the person.

Three ways an agent shows up in Salesforce or Workday

1. A dedicated user for each agent

This is the closest match to what Google does inside Workspace, and Salesforce’s own guidance points the same way. Its documentation recommends “creating and configuring one Salesforce user for every integration” under the principle of least privilege, using the API-only Salesforce Integration licence. Each Enterprise, Unlimited and Performance Edition org includes five of those licences, and additional ones are bought through an account executive.

Workday’s equivalent is the Integration System User (ISU). Setting one up means creating the user, creating an integration system security group, granting that group domain permissions and activating the pending security policy changes. Microsoft’s setup guide for its Viva Learning connector walks through those steps for a single ISU, including Workday setting the session timeout to zero so long jobs don’t expire halfway.

A dedicated user per agent gives you the cleanest audit trail of the three. The price is administration: a provisioning ticket per agent, per system, and in Salesforce a licence as well. Five included licences go quickly once every agent counts as an integration.

2. One shared integration user

This is what most companies already have, because it’s how system-to-system integrations have always been wired. One Salesforce integration user or one Workday ISU, and every agent calls the API through it.

It’s cheap and it’s a single setup. The audit log, though, shows “Integration User” for every action from every agent, and that user needs the combined permissions of all of them. The agent that only reads opportunity stages ends up able to change compensation data because another agent on the same account needs to.

3. A person’s OAuth grant

The third option is the default in most agent products: someone approves a consent screen, and the agent acts with that person’s token. No licence and no ticket.

The audit log records the person, not the agent. Scopes narrow the grant less than people expect. Salesforce’s api scope gives access to “the current, logged-in user’s account” through the REST and Bulk APIs, so the agent can reach whatever that user can, and for a sales ops lead or an HR admin that’s a lot. We wrote about what that looks like when it goes wrong in the Fedora rogue agent incident: once an agent works under a human’s account, nobody can separate what the person did from what the agent did.

Own user per agentShared integration userA person's OAuth grant
Audit log shows The agent "Integration User" for every agent The person, not the agent
Agent can reach What that agent is granted Every agent's permissions combined The person's access, up to the granted scopes
Revoking one agent Deactivate its user Breaks every agent on the account Revokes the person's grant
Setup cost A ticket per agent, plus a Salesforce Integration licence each One setup, and one Salesforce Integration licence Nothing extra
Sources: Google Cloud Gemini at Work 2026 post, Salesforce Help (integration user licences), Microsoft Learn (Workday ISU setup).

Who this works for, and the case for a shared user

Google’s model works well for Google, because Workspace is where it controls identity end to end. Microsoft can do the same inside Microsoft 365, and Salesforce inside a Salesforce org. Each vendor can make its own agents first-class users in its own product. None of them can do that in someone else’s.

Licensing is part of this too. Salesforce sells integration users as licences, so a model where every agent is a dedicated user is a model where agents need licences. Workday ISUs don’t take a paid seat, but each one is another account for the security team to provision, review and rotate. Five included integration licences per org was a sensible number for a few back-office syncs. It wasn’t sized for dozens of agents, and I’d expect agent identities to show up as their own line on SaaS price lists before long.

There’s a fair case for the shared integration user as well. If the agent runs a fixed job, say copying closed-won deals to the warehouse every night, it behaves like any other integration and a shared user is fine. The trouble starts when the agent decides what to do. Once it picks its own actions, the log needs to say which agent picked them and for whom.

Per-agent users also stop working for software companies that run agents inside their customers’ systems. If your product operates an agent in 300 customers’ Salesforce orgs, you can’t ask 300 admins to provision a user for each of your agents. That’s why delegated OAuth grants are the norm in B2B agent products, audit problem and all.

What to decide before your agents reach Salesforce

  • Pick, per system, which identity the audit log will show. Write it down for each agent. If the answer is “the integration user” or “whoever connected it”, you already know what the next incident review will look like.
  • Scope each agent to its job, not to the account it runs on. If several agents share a user, enforce an allowlist of actions per agent before the call leaves your side.
  • Record both parties on delegated calls. OAuth Token Exchange (RFC 8693) defines an act claim so a token can say “this agent, acting for this person”. Few SaaS APIs read it today, so log the agent ID and the person against every call in your own system too.
  • Keep one connection per end user. In a multi-tenant product, don’t route several customers’ or users’ actions through one service account. When each connection belongs to the person who authorized it, revoking it affects only them.
  • Give your most privileged internal agents their own users. For a handful of agents that touch payroll or pricing, the licence and the admin time cost less than the investigation.

StackOne’s agent authentication follows the last two points. Every connection is tied to the user who created it through an origin_owner_id, there are no shared service accounts, and session tokens are scoped to specific accounts and actions. Action logs then show the outcome of every tool call, across 540+ connectors that include Salesforce and Workday.

Once security teams see agents listed by name in Workspace version history, they’ll ask why the Salesforce log still says “Integration User”. It’s easier to have that answer ready before the first incident review than to work it out during one.

Frequently Asked Questions

How does the Gemini agent authenticate to Salesforce?
Google says the Gemini agent's identity is mapped to external systems through standards such as OAuth. Salesforce has no concept of Google's agent accounts, so in Salesforce the agent acts as whichever user the OAuth grant belongs to: a dedicated integration user, a shared integration user, or the person who approved the connection.
What is a Salesforce integration user?
A Salesforce integration user is an API-only user on the Salesforce Integration licence, built for system-to-system access. It can't sign in through the user interface. Enterprise, Unlimited and Performance Edition orgs include five of these licences, and Salesforce recommends one integration user per integration so each has its own permissions and audit trail.
What is a Workday Integration System User (ISU)?
A Workday Integration System User (ISU) is a non-human account that integrations use to call Workday's web services. An admin creates the ISU, adds it to an integration system security group, grants that group domain permissions and activates the policy change. Giving each AI agent its own ISU means repeating those steps for every agent.
Should AI agents share one service account?
AI agents that choose their own actions should not share one service account. A shared account records every agent under the same name and needs the combined permissions of all of them. A fixed, scheduled sync can run on a shared integration user, but an agent that decides what to do needs its own identity or its own scoping.
What goes wrong when an AI agent uses a person's OAuth token?
An AI agent using a person's OAuth token can reach whatever that person can, up to the scopes granted, and the target system's audit log records the person rather than the agent. Revoking the agent means revoking the person's grant. Request only the scopes the agent needs, and log the agent's ID next to every call it makes.
What is the OAuth act claim for AI agents?
The OAuth act claim, defined in RFC 8693 Token Exchange, lets one token name both the subject and the actor, for example a person and the AI agent acting for them. It is the standard way to express delegation in a token. Most SaaS APIs don't read it yet, so record the actor in your own logs as well.

Put your AI agents to work

All the tools you need to build and scale AI agent integrations, with best-in-class connectivity, execution, and security.