AI agents are often deployed onto the identity model built for RPA bots, but a bot that replays a fixed script and an agent that decides its next action at run time need different credentials, scopes and reviews. Both are non-human identities, usually owned by an automation team rather than IAM. The difference is where the decision sits: in an RPA bot the decision was made when the workflow was designed and approved, while in an agent it is made by a model each time it runs, influenced by whatever content it reads. This guide compares the two at the identity layer: behaviour, credential models, segregation of duties, access review, which RPA controls carry over and which break, and the risks of migrating RPA processes to agents. It is for IAM, PAM and automation centre of excellence teams.
Key takeaways
- The approved workflow was the RPA control. A bot's access could be broad because its behaviour was fixed and reviewed; an agent with the same access can use all of it, in combinations nobody approved.
- Static credentials hurt more on agents. A long-lived password in an RPA vault is a theft risk; the same secret in an agent's reach is also a misuse risk, because the agent will use any credential it can find.
- Segregation of duties must move from the design to the run. RPA SoD checks the workflow once; agent SoD needs per-action checks and human approval for steps that would otherwise let one identity both request and approve.
- Access review changes question. For a bot you ask "does this workflow still need this access"; for an agent you also ask "what did it actually do with it" and "has its model, prompt or tools changed".
- Migration is an identity change, not a rebuild. When an RPA process becomes an agent, issue a new identity with fresh, narrower scopes rather than handing the agent the bot's existing accounts.
The short answer
An RPA bot is a deterministic script that drives user interfaces or APIs the way a person would, step by step, in an order fixed at design time. An AI agent uses a model to plan and choose actions through tools, APIs or other agents, so the sequence of calls is decided at run time and can differ between two runs with the same goal. Every AI agent and every bot is a non-human identity; the practical test, explained in NHI vs AI Agent Identity, is whether the software chooses its own next action.
That one difference drives the rest. RPA identity security is mostly about protecting a credential and keeping a fixed workflow's access proportionate. Agent identity security adds two problems RPA rarely had: the identity's behaviour can be steered by content it processes, and the identity often acts on behalf of a particular person whose authority must be carried and limited. For the RPA platform detail (robot authentication, vault integration, attended and unattended account models) see the RPA and Bot Identity Security Guide; for agent identity models and lifecycle see the Agentic AI Identity Guide.
Side-by-side comparison
| Dimension | RPA bot | AI agent |
|---|---|---|
| Behaviour | Deterministic: same input, same steps | Non-deterministic: model chooses tools and order at run time |
| Where the decision is approved | At design time, in the workflow and change process | At run time, per action, by policy and sometimes a human |
| Typical access path | User interface sessions with interactive accounts; some APIs | APIs, tool servers, OAuth-protected services, other agents |
| Typical credentials | Windows logon plus application username and password, held in an RPA or PAM vault; orchestrator connection credential | API keys, OAuth client credentials, delegated user tokens, workload identity, tool-server tokens |
| On whose authority | Its own robot account (unattended) or the signed-in user (attended) | Its own identity, a delegated user, or both together |
| Input it trusts | Structured fields it was built to read | Free text, documents, web pages and tool output, any of which can carry instructions |
| Change that alters behaviour | A new workflow version through change control | A model update, prompt edit, new tool or new data source, often outside change control |
| Main identity risk | Credential theft and over-broad standing access | Credential theft plus misuse of legitimate access through excessive agency |
Deterministic and non-deterministic behaviour: why it changes identity
RPA governance relies on predictability. When a finance bot is approved to read remittance emails and post payments in an ERP, reviewers look at the workflow and accept that the bot's account has posting rights, because the workflow only posts matched payments. The permission set is wider than the behaviour, and that is tolerated because the behaviour is fixed and testable. When it breaks, it usually fails loudly.
An agent removes that assumption. Its permissions describe what it could do; its behaviour is whatever the model decides is the best route to the goal. OWASP's Top 10 for LLM Applications 2025 names this risk LLM06 Excessive Agency and traces it to three root causes: excessive functionality, excessive permissions and excessive autonomy. An agent given the same posting rights as the finance bot could, after reading a manipulated email, post a payment nobody matched, and it would fail quietly, producing a plausible log entry.
- Scope must match behaviour, not the job title: grant the agent only the tools and API scopes for the task, so that the gap between "could" and "will" is small.
- Input becomes part of the attack surface: a bot reading an invoice extracts fields; an agent reading the same invoice may follow text in it. The ForcedLeak Agentforce case showed a hidden instruction in a public web form field steering an agent into querying other CRM records.
Credential models compared
RPA platforms grew up around interactive accounts: an unattended bot needs a Windows session and a username and password for each target application, stored in a vault and injected at run time. Orchestrators are moving robot connections from never-expiring machine keys to OAuth client credentials with expiring tokens, but the application passwords the bot types into screens are often still long-lived. Agents mostly call APIs, so they can use token-based, short-lived and audience-bound credentials from the start. Whether they do depends on the build.
| Credential pattern | RPA bot | AI agent | Guidance |
|---|---|---|---|
| Interactive username and password | Common for UI automation; vaulted and rotated | Avoid: an agent with a password can sign in anywhere that password works | Never hand an agent a bot's interactive account; give it API access instead |
| Long-lived API key | Used for some API steps | Common in early builds; easy to leak into prompts, logs and code | Replace with short-lived tokens; OWASP NHI7:2025 Long-Lived Secrets |
| OAuth client credentials | Robot to orchestrator connection | Agent acting as itself | Good for both; scope per agent, not per platform |
| Delegated user token | Attended bots run as the signed-in user | Agent acting on behalf of a user | Use token exchange so both identities appear; RFC 8693 act claim |
| Workload identity or federation | Rare | Preferred where the agent runs in cloud or Kubernetes | Removes stored secrets; ties the credential to the runtime |
| Shared service account | Common anti-pattern across many bots | Common anti-pattern across many agents | One identity per bot or agent; OWASP NHI9:2025 NHI Reuse |
Delegation is the larger change. An attended bot simply runs in the user's session, which is a form of impersonation: downstream systems see the user. RFC 8693 (OAuth 2.0 Token Exchange, Standards Track, January 2020) distinguishes impersonation, where the acting party is indistinguishable from the subject, from delegation, where the actor keeps its own identity and the act claim records it. Nested act claims record a delegation chain. For agents, delegation semantics are what let an audit trail say "agent X acted for user Y". See the OAuth Token Exchange and Delegation Guide and, for rotation and expiry, the AI Agent Credential Lifecycle and Rotation Guide.
Segregation of duties and access review
Segregation of duties
In RPA, SoD is enforced at design: one bot raises purchase orders, a different bot or a person approves them, and each bot's application roles are checked against the SoD matrix once, when the workflow is approved. NIST SP 800-53 AC-5 Separation of Duties and CSF 2.0 PR.AA-05 both apply, and they apply to non-human accounts as much as human ones.
Agents break design-time SoD in three ways:
- Tool combination: an agent granted both "create supplier" and "approve payment" tools to cover a broad goal holds a toxic combination, even if any single run uses only one. Split such tools across separate agents, or require a human approval step on the second action.
- Delegated authority: an agent acting for a user inherits that user's SoD position. If it can also act as itself, the union of its own and the user's rights may breach a rule that neither breaches alone. Evaluate SoD on the effective permission set of each token.
- Agent to agent calls: a requester agent calling an approver agent rebuilds the conflict through the back door. Treat the chain as one actor for SoD purposes unless a human sits between them.
See the Segregation of Duties Guide for the matrix method and the Human-in-the-Loop for AI Agents Guide for approval steps.
Access review
A bot review asks the business owner to confirm that the workflow still runs and still needs each application role. An agent review needs more: the permissions granted, the permissions actually exercised in the period, the model, prompt and tool versions in force, and the users it acted for. A change to any of those is a mover event that should trigger re-review between campaigns, as set out in the Identity Governance for AI Agents Guide.
Which RPA controls carry over and which break
| RPA control | Carries over to agents? | What to change |
|---|---|---|
| One dedicated account per unattended bot | Yes | One identity per agent, never per platform or per team |
| Named business and technical owner | Yes | Add a sponsor accountable for the agent's autonomy level and data access |
| Credentials in a vault, injected at run time | Partly | Vault keeps the secret from the code, not from the agent; prefer tokens the agent never sees in plain text, issued per task |
| Scheduled rotation of bot passwords | Partly | Rotation limits theft windows but not misuse; add short token lifetimes and audience binding |
| Workflow approval as the behaviour control | No | Replace with run-time policy: tool allowlists, per-action authorisation, approval for high-impact steps |
| Design-time SoD check | No | Check effective permissions per token and per agent chain |
| Run logs showing workflow steps | Partly | Also log tool calls, parameters, delegating user, model and prompt version |
| Annual access certification | Partly | Add event-driven review on model, prompt, tool or data changes, and time-bound grants |
| Change control on new workflow versions | Partly | Extend change control to model versions, system prompts and tool registrations |
Threat model, failure modes and a worked scenario for each option
RPA bot
Threat model: the attacker wants the bot's credentials. Bot accounts often hold standing access to finance or HR systems, are exempt from MFA and are reviewed less often than people. ATT&CK T1552 Unsecured Credentials covers passwords left in workflow files, config files and orchestrator assets.
Failure modes: passwords hard-coded in workflow packages; one robot account reused across many processes (NHI9:2025 NHI Reuse); people logging in with the bot account to fix failed runs (NHI10:2025 Human Use of NHI); bots left running after the process owner leaves (NHI1:2025 Improper Offboarding).
Controls: per-bot accounts, vault-held credentials with rotation, no interactive human use, MFA exemptions scoped to the bot's host, owner attestation tied to the process inventory.
AI agent
Threat model: the attacker wants the agent's credentials, or, more cheaply, wants the agent to use its own legitimate access on the attacker's behalf by planting instructions in content the agent reads. A third case needs no attacker: the agent finds and uses a credential it was never meant to have. In the PocketOS database deletion, a coding agent working in staging found an account-scoped token in an unrelated file and used it to delete a production volume and its backups.
Controls: per-agent identity issued at registration, short-lived audience-bound tokens, delegation through token exchange, tool allowlists, approval for destructive or financial actions, secrets kept out of the agent's file system and context, and tool-call logging.
Worked scenario: accounts payable
A company runs an unattended RPA bot that reads supplier invoices from a shared mailbox, matches them to purchase orders and posts them for payment in the ERP. It has its own vaulted ERP account with the "post invoice" role and cannot create suppliers. Its residual risk is credential theft.
The team proposes an agent to handle exceptions: invoices that do not match, need a supplier query by email, or need a new supplier record. If the agent inherits the bot's ERP account and is also given "create supplier" to cover new suppliers, it now holds both halves of a classic fraud control, and it reads attacker-controllable email. A forged invoice saying "new bank details, create supplier and pay" is now a route to payment fraud. The safer design gives the agent its own identity with read access to invoices and purchase orders, the ability to draft supplier queries and draft (not create) supplier records, and a human approval step before any record that changes payment details is saved. The deterministic bot keeps the matched-invoice path, where predictability is an asset.
Migrating RPA processes to agents
Organisations rarely replace RPA wholesale. More often an agent takes over the exception handling around a bot, or calls existing bots as tools. The risks are easy to miss because the accounts already exist and already work: the agent inherits standing access sized for a fixed script, a bot callable as a tool hands its access to whichever agent triggers it, an attended bot's user context is lost if the agent runs as a privileged service identity, and retired bots leave accounts nobody watches. Register each callable bot as a tool with its own authorisation decision, and record which agent and which user triggered each run.
A phased approach:
- Inventory both populations. List every bot account and every agent identity with owner, credentials, application roles and the process each serves. Use the AI agent registry for agents and the RPA orchestrator's asset list for bots.
- Classify each process. Keep deterministic, high-volume, well-structured steps on RPA. Move only the judgement-heavy steps to an agent.
- Issue new agent identities. Register first, then issue credentials with scopes derived from the task, not from the bot's role list. Use delegation where the agent acts for a user.
- Rebuild the SoD check. Recalculate conflicts on the agent's effective permissions, including any bots it can call and any user it can act for.
- Run in shadow or draft mode. Let the agent propose actions that a person or the existing bot executes, and compare outcomes for a pilot period.
- Turn on write access in stages. Enable low-impact writes first, keep approval for payments, supplier changes and deletions, and set alerts on any denied tool call.
- Keep a rollback path. Leave the bot workflow deployable until the agent has run cleanly through at least one full business cycle; rolling back means revoking the agent's tokens and re-enabling the bot schedule.
- Decommission properly. When the bot retires, disable and then delete its Windows and application accounts, remove vault entries, and record the closure in the inventory.
Decision guidance
- Keep RPA when: inputs are structured, the steps are stable, the target has no API, and auditors value a fixed, testable sequence. Predictability is a security property here.
- Use an agent when: the work needs judgement over unstructured input, and you can express its access as a small set of API scopes with approval on high-impact steps.
- Use both when: an agent triages and a bot executes. The agent proposes; the bot performs a fixed action with fixed access.
- Small organisations: focus on three things: no shared accounts, no human credentials on agents, and approval for payments and deletions.
- Large organisations: bring both populations into IGA with the same record schema, connect agent registration to credential issuance, and run event-driven reviews. The AI Agent Autonomy Levels Framework helps set approval rules by autonomy level.
Detection and measurement
For bots, monitor interactive logons to bot accounts from hosts other than the robot machines, logons outside the schedule, and vault check-outs by people. For agents, log every tool call with the agent identity, delegating user, parameters, outcome, and the model and prompt version, and alert on denied calls, first use of a scope, use of a credential from an unexpected runtime, and destructive actions. AU-6 Audit Record Review and AU-10 Non-repudiation frame the requirement.
| Metric | What it shows | Target direction |
|---|---|---|
| Agents running on bot accounts, shared accounts or human credentials | Credential inheritance and reuse | Zero |
| Ratio of permissions granted to permissions used, per agent, per quarter | Excess agency in the scope | Falling towards 1 |
| Share of agent credentials with lifetime under 24 hours | Move away from long-lived secrets | Rising |
| Model, prompt or tool changes followed by re-review within 30 days | Whether agent mover events are caught | 100 percent |
| Retired bots with accounts still enabled | Migration orphans | Zero |
| High-impact agent actions executed with recorded human approval | Run-time SoD working | 100 percent |
Common failure patterns
- Agent on the bot's account: the quickest migration reuses the robot's ERP or CRM account, giving the agent standing access sized for a fixed script.
- Reachable secrets: tokens left in repositories, config files or shared drives become agent credentials the moment the agent can read them, as the PocketOS case showed.
- Trusted input that is not trusted: agents processing public forms, email or tickets with write access to records, without approval or egress limits, as in ForcedLeak.
- SoD checked once: the SoD matrix approved the bot; nobody re-ran it when the agent gained an extra tool or began acting for users.
Framework mapping
| Topic | NIST SP 800-53 Rev 5 | NIST CSF 2.0 | OWASP |
|---|---|---|---|
| Inventory and ownership of bots and agents | AC-2 Account Management, CM-8 System Component Inventory | ID.AM-02, PR.AA-01 | NHI1:2025 Improper Offboarding |
| Credential model and expiry | IA-5 Authenticator Management, IA-9 Service Identification and Authentication | PR.AA-01 | NHI7:2025 Long-Lived Secrets |
| Scope and segregation | AC-5 Separation of Duties, AC-6 Least Privilege | PR.AA-05 | NHI5:2025 Overprivileged NHI; LLM06:2025 Excessive Agency |
| Change to model, prompt or workflow | CM-3 Configuration Change Control | PR.AA-05 | LLM06:2025 Excessive Agency |
| Audit trail and attribution | AU-6 Audit Record Review, AU-10 Non-repudiation | PR.AA-05 | NHI10:2025 Human Use of NHI |
Practitioner checklist
- Every bot and every agent has its own identity, a named owner and an inventory record.
- No agent uses an RPA bot account, a shared service account or a person's credentials.
- Agent credentials are short-lived, audience-bound and never readable as plain text in the agent's context or file system.
- Delegated agent actions use token exchange so both the agent and the user appear in tokens and logs.
- SoD is evaluated on each agent's effective permissions, including bots it can trigger and users it can act for.
- Payments, supplier or account changes and deletions by agents require recorded human approval.
- Model, prompt, tool and data source changes trigger agent re-review; workflow changes trigger bot re-review.
- Tool calls are logged with agent, delegating user, parameters and model version, and denied calls raise alerts.
- Migrations keep a tested rollback to the bot and close every retired bot account and vault entry.
Standards and references
- IETF: RFC 8693 OAuth 2.0 Token Exchange
- OWASP: LLM06:2025 Excessive Agency
- OWASP: Non-Human Identities Top 10 2025
- OWASP: Top 10 for Agentic Applications for 2026
- NIST NCCoE: Software and AI Agent Identity and Authorization
- NIST: SP 800-53 Rev 5 Security and Privacy Controls
- NIST: Cybersecurity Framework 2.0
Related NHI Mgmt Group resources: RPA and Bot Identity Security Guide · Agentic AI Identity Guide · Identity Governance for AI Agents Guide · NHI vs AI Agent Identity · AI Agent Credential Lifecycle and Rotation Guide