Best Managed OAuth Providers for AI Agents
Managed OAuth means a provider runs the OAuth client, stores the tokens, and refreshes them. For AI agents, the dividing line is whether the correct tenant's token is selected at runtime, on that call, with no fallback to a default account.
Key takeaways
- -Managed OAuth owns the OAuth client, the consent redirect, storage, refresh, and a status you can query when the grant dies.
- -For agents, a connection id that your code might forget to pass is not tenant selection. The runtime has to take a tenant on the call and refuse to substitute another token.
- -Nango leads when the job is a broad, white-label, exportable OAuth layer you can grow into syncs.
- -Pipedream Connect, Paragon, Merge, and Apideck each bundle auth with a larger platform. The bundle is the product decision.
- -Swytchcode selects the tenant with `tenant_id` or `--tenant`, attaches that credential inside exec, and errors with `tenant_not_connected` rather than using yours.
The best managed OAuth provider for an AI agent is the one that selects the correct tenant's token at the moment of the call, refreshes it without a race, and does not fall back to some other account when that tenant has not connected. "Managed OAuth" is the phrase enterprise buyers already use for this purchase. It is not a metaphor for login, and it is not a secrets manager with an OAuth-shaped sticker.
Nango's 9 September 2026 article, Best managed OAuth providers for B2B SaaS integrations in 2026, uses the phrase the way procurement uses it: a hosted layer that owns the authorization URL, the callback, the code exchange, encrypted storage, refresh, and connection health. Their evaluation notes, from calls with engineering teams between January and August 2026, put token refresh and customer credential storage at the top of the requested list. That matches what security reviews ask. This page keeps their definition, then ranks on the line they list as one row among many and do not use as the sort key: per-tenant token selection at runtime.
If you are choosing who may hold the token while the HTTP request is in flight, read Best AI Agent Authentication Platforms in 2026 next to this one. Authentication is the location of the secret. Managed OAuth is how the secret got there, and which customer's secret is used for this request.
What buyers mean by managed OAuth
WorkOS, Clerk, and Stytch sell login to *your* application. That is customer identity. It is not managed OAuth for third-party APIs. Nango's FAQ on the September post says the same thing, and it is the distinction that keeps this shortlist honest: Auth0 is mostly an identity platform, with Token Vault as the exception that stores third-party OAuth tokens. Everyone else below exists so your product can call the customer's Salesforce, Google, Slack, or accounting system.
A managed OAuth provider owns four operations. If a vendor does only one of them, they are not in this category.
- The authorization flow. The provider-specific authorize URL, the parameters that vendor requires, the callback, and the code exchange. Slack's bot token and user token, Salesforce's login host, a subdomain-based authorize URL: this is the work that looks small on a whiteboard and eats a quarter.
- Storage scoped to a tenant. Access tokens, refresh tokens, and API keys encrypted at rest, keyed to a user, an organization, or both. A single token in an environment variable is not multi-tenant OAuth.
- Refresh that survives the provider's rules. Some providers omit
expires_in. Some revoke the old refresh token the instant you use it. Two concurrent requests that both refresh the same grant will kill it. Nango's post calls out Salesforce, Airtable, Atlassian, and Xero as different special cases, and describes a per-connection lock so refreshes serialize. Whatever vendor you pick, ask them to show that lock, not a cron. - A status when the grant is dead. A revoked token cannot be refreshed back to life. The user has to consent again. The product difference is whether you learn that from a webhook and a status API, or from a 401 in front of the customer.
Pre-provisioned OAuth apps, white-label consent, and "can I buy auth without the rest of the platform" are the commercial questions on top of those four. Nango's table is a good checklist for them. This page adds the agent question those rows do not decide:
When a specific call runs, which tenant's token is attached, who chooses it, and what happens if that tenant has no connection?
That is per-tenant token selection at runtime. It is the dividing line because an agent does not call "the integration." It calls a method for a customer who is in the conversation, the job, or the webhook. If selection happens earlier — a developer picked an account in a dashboard, a process has one token in memory, a fallback says "use the org account if the user is missing" — you have managed OAuth for a demo and shared-credential access in production.
The runtime test
Use one scenario in every proof of concept. Do not let the vendor substitute a simpler one.
- Customer A and customer B have both connected Google.
- Customer C has not.
- The agent runs three calls: read A's calendar, read B's calendar, read C's calendar.
- Pass only a tenant id you control. Do not paste tokens.
- Inspect the request that actually left. A's call must carry A's token. B's call must carry B's token. C's call must fail with a reconnect error. None of the three may use your company's Google account.
Then run A's call twice, overlapping, in a way that forces a refresh, and confirm you still have one live grant afterward. Then revoke A's grant in Google and confirm you get a connection-health signal rather than a generic 401 with no tenant on it.
Platforms that pass the happy-path connect screen and fail this test are credential stores with a default account. Platforms that pass it are managed OAuth you can put behind an agent.
Swytchcode's documented version of the failure is specific. The Python SDK says a call for an end user never falls back to your own account. The error category is tenant_not_connected. The troubleshooting page says retrying will not help; you show the user a connect button. plan_limit fires when you hit the end-user cap or the provider requires your own OAuth app. setup_required fires when you have not chosen Swytchcode's managed app or registered yours. If a self-hosted backend predates end users, the CLI stops rather than using your account. That last sentence is the dividing line written as an error.
Nango
Nango is the provider that currently owns the phrase in public comparisons, and on the merits of a general OAuth layer it should. The auth product page describes managed auth for 1,000+ APIs, a pre-built connect UI, token refresh, and credentials that stay out of the frontend. The auth guide is the implementation detail: OAuth 2.0, OAuth 1.0a, API keys, basic, and custom schemes; a shared developer app for popular APIs so a proof of concept does not wait on vendor review; a recommendation to register your own OAuth app before production, because the shared app fixes scopes, shows Nango on the consent screen, and uses Nango's callback.
Per-tenant selection. Nango models a connection, and you pass a connection id (mapped to your user or org) when you proxy or run a function. That is real tenant selection, provided your agent cannot omit the id and hit a default. Treat "optional connection id" as a failed POC. The product is capable of the strict behavior. Your integration has to require it.
Where Nango is stronger than everyone else on this list.
- Auth types past OAuth 2.0, across the catalog they publish as 1,000+ APIs, including MCP auth. Agents hit MCP servers now; a provider that only speaks authorization-code grants will push the rest back onto you.
- White-label: their September post says the grant goes to your application, Growth adds branding, and headless mode lets you draw the UI. Marketplace reviews ask whose name is on the consent screen. Nango's answer is yours.
- Refresh serialization and rotated-refresh persistence, as they describe it, plus webhooks when a connection breaks.
- You can retrieve the stored credentials. Lock-in is lower. The twin of that pro is that your backend is then allowed to hold the token. See the authentication platforms piece for when that is, and is not, acceptable.
- Auth is sold on its own, and the same connection can later run tool calls, syncs, and webhooks. Replatforming a year later is the expensive version of "we'll just do OAuth first."
- Deployment: free self-host for auth and the proxy; enterprise self-host and bring-your-own-cloud on AWS, GCP, or Azure. Their security guide states SOC 2 Type II, GDPR, and HIPAA, with the BAA on the Growth add-on. Pull the current report from that page's trust center before you copy a sentence into a questionnaire.
- Coding agents can add a missing provider through Nango's builder flow, tested against a real connection. That matters when the long tail is an API their catalog does not have yet.
Where Nango is the wrong only-tool. Nango will store and refresh the token, and it will call the API from a function or a proxy. It is not, by itself, the policy file that blocks one method before the socket opens, and it is not the idempotency key on a write. If the agent is creating records in a system of record, pair it with an execution path that has those, or write them yourself inside Nango functions and review that code like production. Swytchcode vs. Nango states the split without pretending one product is a subset of the other.
Paid plans were recorded from $50 a month on that comparison. Confirm current pricing.
Pipedream Connect
Pipedream Connect is a developer toolkit for putting third-party apps into your product or agent: authorization, token storage, refresh, and managed OAuth clients for a very wide app catalog. Nango's September comparison describes it as the fit for internal-style automation or a small set of end users, and as a weak fit when the consent screen must be your brand.
The ownership fact belongs in the shortlist, not in a footnote. Nango reports that Workday announced its acquisition of Pipedream on 19 November 2025 and that the deal closed in the fiscal quarter ending 31 January 2026, and that Pipedream's public changelog had gone quiet after 1 October 2025. Confirm that status on Workday's and Pipedream's own pages before you make Connect a multi-year standard. An acquired connect product can be fine. An unowned roadmap is a procurement risk, not a technical one.
Per-tenant selection. Connect is built for end users of your app, so the model is per-user credentials, not one token for the whole tenant. You still have to prove the runtime test above. A platform can store per-user tokens and still let a sloppy server-side call use the project default.
What Nango's hands-on notes flag, which you should re-verify. End users see Pipedream on the connection screen even if you register your own OAuth client, according to Nango's reading of Pipedream's community forum. Scopes on pre-provisioned clients are Pipedream's scopes; Nango cites an enterprise search team that could not retrieve user emails from Teams and SharePoint connectors. There is no separate "buy auth only" story that escapes the workflow product. If those three are still true, Connect fails the consent-screen question and the scope question that B2B security reviews open with. If Pipedream or Workday has changed them, the product moves up this list. Do not inherit the September wording without a current check, and do not ignore it either.
The side-by-side on this site is Swytchcode vs. Pipedream.
Paragon
Paragon is an integration platform: a white-label Connect Portal, a headless SDK if you build the UI yourself, managed token refresh, and low-code workflows plus managed syncs. Nango's comparison puts the pre-built catalog at 130+ connectors, with custom connectors outside it, and says auth is not sold standalone. Pricing is quoted on connected users. You buy the platform.
Per-tenant selection. The Connect Portal is per user of your app. The headless SDK is how you put that connection behind your own screens and, if you are careful, behind an agent that must pass a user id. Paragon's strength is the packaged portal and the workflow builder for teams that want an integration UI without writing a sync engine. The agent question is whether a tool call from a model is required to carry the paragon user, or whether a workflow can be configured with a connected user and then invoked anonymously. Ask for the anonymous call to fail in the POC.
Who should buy it. Teams that want managed auth, syncs, and a low-code workflow product together, and that can live with a smaller pre-built catalog plus custom connectors. If you only need the OAuth layer, you will be paying for the bundle.
Merge
Merge Link is the connect dialog in front of Merge's unified APIs. The user links an account, Merge stores the credential, and your application reads normalized objects (CRM, HR, accounting, and the other categories Merge supports) instead of each provider's native schema. Nango's September figures: after three free production linked accounts, unified API pricing was $650 a month for up to ten. Check Merge's pricing before you repeat the number. Category coverage and packaging change.
Per-tenant selection. A linked account *is* a tenant. Merge's API is scoped to that linked account. This passes the "which customer's Salesforce" test more naturally than a general proxy, because there is no call that makes sense without the linked-account id. It fails a different test: you cannot buy the OAuth layer and point it at an arbitrary URL. Authenticated passthrough exists for endpoints outside the common model, and then you are on the native API anyway, with Merge still holding the token.
Who should buy it. You want a unified read/write model for a known category, and managed OAuth is how accounts get linked. You should not buy Merge to be your agent's general OAuth broker for APIs that will never fit the unified schema. The cost only makes sense when the normalization is the product.
Apideck
Apideck Vault is the auth and connection component across Apideck's unified APIs. Nango describes Vault as usable with the proxy, separate from the unified models, which is unusual in this group: Merge ties Link to the unified API; Apideck, on that account, lets you use Vault as auth. The catalog in their comparison is 200+ integrations overall, with managed OAuth covering a smaller set. Branding short of full white-label is available on lower plans; removing Apideck's name is enterprise. Pricing scales with active consumers.
Per-tenant selection. A consumer in Apideck's model is your end customer. Calls are on behalf of that consumer. Same POC as everyone else: consumer C with no connection must not run as consumer A.
Who should buy it. You want a brandable hosted vault and you might use one or two unified categories, but you also want a proxy for the calls that do not fit. If full removal of vendor branding is required on day one, budget the enterprise plan or pick a provider whose default grant is already in your name. Nango's post says that default is Nango's position.
Composio
Composio sells per-user managed OAuth as part of an agent tool catalog. The October 2026 write-up on Swytchcode vs. Composio records 1,595 toolkits, hosted connect links, and tool calls that run as the connected end user. Free tier: 20,000 tool calls a month. Paid plans from $29 a month. Re-check Composio pricing.
Per-tenant selection. This is the center of the product. Each end user connects their own account, and the agent acts as that user. The dividing line is still worth testing, because "per user" in the marketing and "this server route omitted the user id and used the last session" are different systems. Make the omitted-id call fail.
Where Composio is the better managed OAuth buy. The OAuth exists so the tool catalog can run as the user. If that is the product you are shipping, buying a pure auth layer and then rebuilding tool definitions is the long way around. Where it is the worse buy: you need auth for APIs that are not in a toolkit, you need sync, or you need the call itself to carry idempotency and a pre-request block. Composio's comparison row on this site marks retries, idempotency, and response schema validation as not documented. Managed OAuth that returns a successful tool result is not the same as a write that happens once.
Auth0 Token Vault
Auth0 is not a general managed OAuth provider for arbitrary APIs. It is an identity platform. Token Vault is the feature that stores third-party OAuth tokens for connected accounts and refreshes them. The documented way out of the vault is an exchange: your application or agent presents an Auth0 token and receives the provider's access token. The pages are Call third-party APIs on a user's behalf and the access token exchange.
Per-tenant selection. The tenant is the Auth0 user. You exchange *that* user's token. There is no separate "agent picked a connection id" unless your code passes the right Auth0 token into the exchange. Selection quality is the quality of your session handling.
Why it is on this list anyway. Buyers searching "managed OAuth" who already pay for Auth0 will be told to use Token Vault, and sometimes that is correct. It is correct when the APIs are OAuth connections Auth0 supports, the human is an Auth0 user, and your backend is allowed to hold the provider access token after the exchange. It is incorrect when you need API keys, a long tail of B2B connectors, or a runtime that never places the provider access token in the agent process. Coverage was described as on the order of 30 OAuth APIs in Nango's 28 September 2026 authentication roundup. Confirm the live list in the Auth0 dashboard before you plan a catalog around it.
Swytchcode
Swytchcode sells the call. Managed OAuth is how the credential for that call is obtained and selected, not a separate product line with its own portal brand.
On pricing:
- Free. Swytchcode-managed OAuth apps. 10 connected end users. 100 live commands a month. Allow and deny rules.
- Pro. Swytchcode-managed or your own OAuth apps. 1,000 connected end users. 10,000 live commands a month.
- Business. Bring your own providers. 10,000 connected end users. Approval workflows. 1,000,000 live commands a month.
- Enterprise. Deployed in your AWS, Azure, or GCP account. API keys remain in that environment. Custom end-user counts, custom policies, SSO.
The CLI is `swy auth connect`. With no tenant flag, you connect an account for the project. With --tenant, you connect one end user. --json prints the connect link instead of opening a browser, which is what a server route needs. The command reference documents swy auth status --tenant and swy auth disconnect --tenant beside it.
Per-tenant selection at runtime is an argument on the exec, not a default you hope the process remembered:
swy exec gmail.user.profile.get --tenant user_123 --tenant-label "Ada Lovelace ([email protected])"from swytchcode_runtime import exec, connect, save_key
connect("gmail", user.id) # returns a URL your UI shows once
save_key("stripe", user.id, key) # API-key providers, key typed into your form
exec(
"gmail.user.profile.get",
{"params": {"userId": "me"}},
tenant_id=user.id,
tenant_label=user.email,
)The exec docs say you do not pass credentials as inputs. Swytchcode adds the credential for the connected provider, including when the tool schema has a token field. Combined with the no-fallback rule, this is the dividing line implemented as a function argument and an error code.
--tenant-label does not select the token. It is the string approvers see when a policy holds the call. Selection is tenant_id. A human approval policy can require a person to allow a sensitive call for that labeled user before the credential is used. Unanswered approvals expire at 48 hours. The mechanics are in human approval and policy guardrails.
What Swytchcode will not pretend to be. It does not replace Nango's sync engine, Merge's unified objects, or a white-label connect portal with a decade of provider-specific form copy. The managed OAuth apps on the Free plan are how you start without registering every client id yourself. Production still wants your own OAuth app, for the same reasons Nango gives: scopes, brand on the consent screen, callback domain. Pro is where "your own OAuth apps" is a plan feature. setup_required is the runtime telling you that you skipped it.
Enterprise deployment is the residency answer: the software runs in your cloud account and API keys stay there. That is a different offer from Nango's bring-your-own-cloud, which runs Nango in your account as a managed service. Both are valid. They are not the same operating model. The enterprise page is https://www.swytchcode.com/enterprise.
Side by side
| Provider | What you are actually buying | Per-tenant selection | Consent screen | Auth without the rest of the platform |
|---|---|---|---|---|
| Nango | OAuth, proxy, functions, syncs, tools | Connection id you pass; require it | Your app; white-label on Growth; headless available | Yes |
| Pipedream Connect | Connect in front of a workflow catalog | Per end user; prove there is no project default | Pipedream's name, per Nango's Sept 2026 forum reading; re-verify | Bundled with Connect |
| Paragon | Portal, syncs, low-code workflows | Per user in the portal; prove agent calls must pass the user | White-label portal by default | No, priced on connected users |
| Merge | Unified APIs plus Link | Linked account id is required for the unified call | Link component; full white-label is an enterprise question | No |
| Apideck | Vault plus optional unified APIs | Consumer id | Brandable; removing their name is enterprise | Vault can be used with the proxy |
| Composio | Tool catalog with per-user OAuth | End user on the tool call; prove omission fails | Hosted connect links | Auth comes with the catalog |
| Auth0 Token Vault | Identity plus third-party token exchange | The Auth0 user you exchange | Your Auth0 connections | You are already buying Auth0 |
| Swytchcode | The API call, with managed or BYO OAuth | `tenant_id` / `--tenant`, no fallback | Managed app to start; your OAuth app on Pro and above | The product is the call. OAuth is part of it |
Counts and prices move. The selection column is the one that should not.
How to choose
- If you need the OAuth layer first and a sync product later, under your brand, with an export path, start with Nango. It is the managed OAuth provider this category is currently measured against, and the measurement is fair.
- If Workday's roadmap for Pipedream Connect is acceptable and the consent screen can say Pipedream, Connect's catalog is wide. If a customer security review will reject a third-party name on the grant, it is the wrong default.
- If the data model is the point (one CRM shape, one HR shape), Merge or Apideck. You are buying normalization. OAuth is the door.
- If the agent is a wide SaaS actor for each end user, Composio. Then decide whether you still need a runtime for idempotent writes and method-level blocks.
- If the call is the point — right tenant, policy first, retry that does not double-post, including on APIs whose docs are wrong — Swytchcode. Managed OAuth apps get the grant started.
tenant_idis how the grant is chosen. The execution write-up is the production guide. The framework wiring is LangGraph, Anthropic, and OpenAI Agents SDK.
A vault that only stores the refresh token, and an OAuth provider that selects it per tenant, are adjacent budgets. 5 Best Credential Vaults for AI Agents is the storage purchase. Do not sign one contract and assume you bought the other.
Frequently asked questions
What is a managed OAuth provider?
A managed OAuth provider runs the OAuth client for third-party APIs on your behalf: the authorize URL, the callback, the code exchange, encrypted storage of the resulting tokens, refresh, and a way to know when a customer must reconnect. Login products (Clerk, WorkOS, Stytch) are not this, except where a specific feature such as Auth0 Token Vault stores third-party tokens.
What is the difference between managed OAuth and a credential vault?
A vault stores a secret and, in many products, hands it to the workload that asked. Managed OAuth also runs the grant and the refresh, and it has to know which customer the secret belongs to. An agent needs a third behavior on top of both: the runtime selects that customer's token for this call and attaches it, without the model passing the token in. Storage, grant management, and selection are three purchases. Teams get into trouble when they think the first one includes the third.
Which managed OAuth provider should a B2B SaaS company use?
If customers connect their own tools and you will sync data under your brand, Nango is the default to beat. If you need a unified data model, Merge or Apideck. If an agent must act inside each user's SaaS tools across a large catalog, Composio. If the production requirement is "this HTTP call uses tenant A's token, or it does not run," evaluate Swytchcode's tenant_id path against that sentence directly.
Does Swytchcode replace Nango for managed OAuth?
It replaces Nango for teams whose OAuth requirement is "connect this provider, select the tenant on the call, execute under policy." It does not replace Nango for teams whose requirement is a white-label integration product with syncs, functions, and credential export across a catalog of 1,000+ APIs. Many products need the second and then still need a governed execution path for the writes.
How many end users can connect on Swytchcode?
Free includes 10 connected end users, Pro 1,000, Business 10,000, Enterprise a custom number. Live command quotas are separate: 100, 10,000, and 1,000,000 a month on Free, Pro, and Business. Only live commands count. Dry runs, --explain, and demos do not. The table is on pricing and in pricing.md.
What happens when a customer's token is revoked?
The connection is dead until they consent again. A managed provider should tell you that with a status you can query, not only with a failed call. On Swytchcode, a call for a user who never connected is tenant_not_connected and does not use another account. A call whose stored credential fails authentication is exit code 3. Build the reconnect button against those errors. Do not retry them in a loop.
Where to go next
More content
How to Log Every API Call an AI Agent Makes
Log the call where it is sent, not where it is described. Record the operation, the actor, the idempotency key, the policy decision and the outcome. Never record the credential. If the agent writes its own log, the calls that were blocked quietly disappear.
How to Connect GitHub to an AI Agent (2026)
Most of what you want an agent to do on GitHub needs no push access at all. Working that out first is the difference between a useful teammate and a token that can rewrite your main branch.
Composio Pricing Compared with Nango, Arcade, Pipedream, and Swytchcode
Composio is free for 100,000 tool calls a month, then $29. Nango is $50 pay-as-you-go. Arcade Team is $25 plus a cent a call. Pipedream Startup is $99 billed annually. Swytchcode is $149 for a million. The headline prices are the least useful part, so here is the arithmetic.
