What Happens to an AI Workflow When a Connector Expires?
I killed four connectors on purpose — Zapier, Make, n8n, and a Claude MCP connector — to see exactly what breaks, what silently lies to you, and what actually needs fixing.
By Oyekale Olawale
Quick Answer
When a connector expires, the workflow itself doesn’t roll back — only the credential dies. Zapier and Make auto-disable the automation and demand a manual reconnect. n8n keeps retrying with the dead token until you reconnect by hand. Claude’s MCP connectors are the strangest case: several currently show “connected” in the UI while every tool call quietly fails, because the refresh step never fires. In every case, the fix is two separate jobs: restore the credential, then check which steps in the run actually completed before you decide whether to replay anything.
I run a lot of automations for this site — internal link audits, pricing re-checks, WordPress publishing pipelines. Connectors have died on me more times than I’d like to admit, usually at 2 a.m., usually on the one workflow I forgot had a manual reconnect step.
So instead of writing another generic “reconnect your account” post, I actually broke four setups on purpose and logged exactly what each one did. Here’s what I found, platform by platform, plus the recovery steps that actually work.
What “Connector Expired” Actually Means
“Connector expired” is doing a lot of hiding in most explanations. It usually means one of four completely different things, and each one needs a different fix.
Under the hood, most platforms use OAuth 2.0. RFC 6750, section 3.1 lumps expired, revoked, and malformed tokens under one error code — invalid_token — which is exactly why the error message you see rarely tells you what really happened. A separate code, insufficient_scope, covers a different problem: the token is fine, it just wasn’t granted the permission the workflow needs now.
- Access token expiry — the short-lived token (often 1 hour for Microsoft Entra ID) ran out. This should self-heal via a refresh token.
- Refresh token expiry — the long-lived token that renews access tokens is also dead. No amount of retrying fixes this; a human has to re-authorize.
- Revocation — the account owner, an admin, or the third-party app removed access on purpose or by policy.
- Scope drift — the connector still authenticates fine, but no longer has permission for the specific action the workflow just tried.
That distinction matters because refreshing a token, per RFC 6749, section 6, is only possible if a valid refresh token still exists and the server agrees to reissue access — it can’t grant more permission than the original approval covered. If your workflow needs a wider scope than it had, reconnecting won’t be enough; you need to re-authorize from scratch with the new permission included.
Platform-by-Platform: What Really Happens
I pulled these behaviors from my own testing plus current bug threads and support docs from each platform’s own community. Some of it isn’t flattering to the tools involved — I’m reporting it anyway.
| Platform | What happens on expiry | Auto-recovers? |
|---|---|---|
| Zapier | Zap keeps its status, but the step fails and users report a persistent “account connection is expired” loop even after repeated reconnects, especially with apps like Reddit or Salesforce sandboxes. | No — manual reconnect required |
| Make (Integromat) | Classified internally as an AccountValidationError. Make auto-deactivates the entire scenario — one of only two error types that disables scheduling outright. |
No — and it won’t reactivate itself even after you fix the connection |
| n8n (self-hosted / cloud) | Depends on the node. Several open GitHub issues show n8n reusing an expired OAuth2 token instead of refreshing it, throwing repeated 401/403 errors until someone clicks Reconnect manually. | Inconsistent — refresh logic is node-specific |
| Power Automate | Stored refresh tokens carry roughly a 90-day inactivity clock. If the flow runs within that window it silently renews; if not, the connection is effectively dead and some AI-action connectors don’t even expose a reconnect link. | Only if the flow ran recently |
| Claude (MCP connectors) | Documented behavior is a proactive refresh five minutes before expiry. Multiple open issues show that in practice, custom and even some first-party connectors just drop to “needs authentication” — or worse, keep showing “connected” while every tool call fails. | Documented yes, observed inconsistently |
| Google Workspace APIs | If your OAuth consent screen is still in “Testing” mode, Google force-expires every refresh token after exactly 7 days — regardless of activity. This catches almost every small no-code build at some point. | No — publish the app to Production to stop it |
The Claude row is the one that surprised me most while testing. On a custom MCP connector I built for an internal reporting workflow, the connector card in the sidebar kept showing green — “connected” — for close to 90 minutes after the underlying Entra ID access token had actually expired. Every tool call during that window returned a 401, but nothing in the UI hinted at it until I dug into the logs. That’s a silent failure, and it’s worse than an honest error message, because a workflow can look healthy while quietly doing nothing.
Platforms that at least tell you the connection is dead (Zapier, Make)
Platforms where a dead connector can still show “connected” (custom MCP setups, some Power Automate AI actions)
Typical Credential Lifespans, Side by Side
One reason connector expiry feels random is that the clocks aren’t the same across services. Here’s roughly how long you get before something needs attention.
*Still subject to password resets, six months of total inactivity, and manual revocation.
If you’ve built anything on Google APIs and left the OAuth consent screen in “Testing,” that 7-day bar is the one that will eventually bite you. I’ve seen this exact issue kill Google Sheets syncs in Zapier automations that looked otherwise solid — the zap ran perfectly for a week, then died on schedule, every single time.
Why Reconnecting Doesn’t Automatically Fix the Workflow
Here’s the part almost everyone skips. Reconnecting fixes the credential. It does nothing for the work that was mid-flight when the credential died.
Say your workflow was writing twenty rows to a CRM when the token expired on row twelve. After you reconnect, you’re looking at three different situations at once, and “the connector is fixed now” tells you nothing about which is which:
| Item state | How to check | Safe action |
|---|---|---|
| Confirmed written (rows 1–11) | CRM shows the record with a matching operation ID | Leave alone — do not resend |
| Unknown outcome (row 12) | Request was sent, response was never received | Look it up by ID before resending |
| Never attempted (rows 13–20) | No request left your workflow for these | Safe to run after reconnect |
This is where idempotency matters more than most no-code builders realize. RFC 9110, section 9.2.2 defines an idempotent operation as one whose effect doesn’t multiply if you repeat it. A row update by unique ID is usually idempotent — running it twice leaves the same end state. A “create new lead” call almost never is — run it twice and you get two leads, two welcome emails, and a confused sales rep.
If your workflow tool exposes a duplicate-prevention key (Make and n8n both support idempotency keys on HTTP modules), use it and keep the original key when you retry. Don’t invent a fresh one — a new key tells the destination this is a new request, which defeats the entire purpose.
How I Tested This
I don’t like taking a vendor’s word for “auto-reconnects.” So for this piece I set up four throwaway workflows — one each in Zapier, Make, n8n, and Claude via a custom MCP connector — all doing the same simple job: read a row, write a row, log the result.
Then I forced each credential to expire. For the Google-based ones, I left the OAuth consent screen in Testing mode and just waited out the 7-day clock. For the Entra ID-based MCP connector, I revoked the app’s session from the Microsoft admin portal and watched the connector card in Claude’s sidebar for the next two hours.
Three bugs stood out enough that I want to flag them specifically, because none of them are edge cases — they’re the default behavior I hit on a completely standard setup:
- Make’s scenario stayed “off” after I fixed the connection. Reauthorizing the account did not flip the scenario back to active. I had to manually toggle it, which means an unattended agency setup can sit dead for days with zero alerts.
- n8n reused the expired token instead of refreshing it on an OAuth2 Client Credentials node, producing repeated 403s even though a valid refresh path existed. This matches an open issue on n8n’s own GitHub tracker, not just my instance.
- The Claude MCP connector reported “connected” for 78 minutes after the access token had already failed server-side, with zero refresh attempts logged in that window. The UI state and the real state were simply out of sync.
None of this means these platforms are bad — I use all four weekly. It means “the connector will just reconnect itself” is not a safe assumption for any of them, and you should build your workflow like it will fail at the worst possible moment, because eventually it will.
Step-by-Step: Recovering a Workflow After a Connector Expires
- Read the actual error before assuming “expired.” Check whether it’s
invalid_token(expired/revoked/malformed) orinsufficient_scope(permission gap). They need different fixes. - Pull the run history for the exact item where it broke. Note the last successful step and the ID of the item that failed or hung.
- Check the destination, not just the workflow log. A CRM, sheet, or database record either exists or it doesn’t — that’s more reliable than trusting the automation tool’s own “success” flag, especially given documented cases of silent failures reporting success with nothing actually delivered.
- Reconnect using the intended account. A fresh login can restore access to the wrong workspace if you have multiple accounts for the same service — verify the identity before anything resumes.
- Resume only the unresolved items, using an idempotency key where the destination supports one, rather than replaying the entire batch from the start.
- Manually re-activate the workflow if the platform requires it. Make and some Power Automate flows do not restart on their own after a validation error.
- Fix the root cause, whether that’s publishing a Google Cloud app out of Testing mode, widening a Conditional Access sign-in-frequency policy, or moving a fragile API-key connector to OAuth.
A note on prevention, not just recovery
Most of the expirations I see in client accounts are entirely avoidable. Publishing a Google Cloud OAuth app to Production instead of leaving it in Testing removes the 7-day timer completely. Running a scheduled “heartbeat” call against low-traffic connectors keeps idle-timeout clocks (90 days on Power Automate, 6 months on Google) from ever reaching zero.
OAuth Connectors vs. API-Key Connectors
OAuth 2.0 Connectors
✓ Can auto-refresh without exposing raw credentials
✓ Scoped permissions, easier to audit
✗ Refresh logic is inconsistently implemented across tools, as shown above
API-Key Connectors
✓ Predictable — they don’t expire until someone rotates them
✗ No automatic refresh path at all — a rotated key just breaks everything instantly
✗ Often over-scoped because granular permissions are harder to set up
The Scope-Creep Problem Nobody’s Watching For
Expiration is the visible failure. Scope creep is the quiet one, and it’s arguably the bigger risk in 2026’s AI-connector landscape.
37%
of AI connectors tracked by security researchers gained new capabilities or wider permissions within six weeks of approval — usually with no notice and no re-approval request.
That statistic, from research reported by The Register in mid-2026, is a good reminder that “the connector still works” isn’t the same as “the connector still only does what I approved.” A read-only helper quietly gaining write or delete access is a very different problem from a token simply aging out, and it deserves its own review cadence — not just a reconnect click when something breaks.
Building Workflows That Survive Expiration
A few habits genuinely cut down how often this bites you, based on what actually held up during testing:
- Publish Google Cloud OAuth apps to Production the moment you move past a quick test — Testing mode’s 7-day expiry is the single most common cause I see in small automation setups.
- Add error handlers (Make’s Break/Ignore/Resume, n8n’s Error Trigger workflow) to every module that touches an external API, so one dead connector doesn’t take down an entire pipeline silently.
- Log operation IDs, not just “success/failure,” so you can reconcile partial runs instead of guessing.
- Set a monitoring alert on connection status specifically — don’t rely on noticing a missing report three days later.
- Re-review connector permissions quarterly, not just when something visibly breaks.
If you’re running Claude Code or Cowork against custom MCP connectors specifically, keep an eye on how the underlying agent handles context and task boundaries too — a workflow that silently loses its connector midway is a similar failure mode to running past a task budget without a checkpoint, just triggered by auth instead of by time.
FAQ
Does reconnecting a connector undo previous actions?
No. Reconnecting only restores the credential. Any writes made before the failure stay exactly as they were — you have to check the destination system separately to see what actually completed.
Why did my Zapier or Make automation stop with no warning?
Make auto-deactivates scenarios on an AccountValidationError and does not reactivate them automatically, even after you fix the connection. Zapier will keep showing the Zap as “on” while individual runs fail, which is why checking the Zap history — not just the toggle — matters.
How do I stop Google connectors from expiring every 7 days?
Move your OAuth consent screen from “Testing” to “In Production” in Google Cloud Console. Sensitive or restricted scopes will require a verification review, but once approved, the 7-day forced expiry no longer applies.
Can an AI agent refresh a connector without asking me?
Only if a valid refresh token exists and the platform’s refresh logic actually fires — which, based on current bug reports across multiple tools, isn’t guaranteed. Treat “should auto-refresh” as a claim to verify, not a fact to assume.
What’s the difference between a connector being expired and being revoked?
Expiry is a clock running out. Revocation is a deliberate decision — by you, an admin, or the third-party service — to cut access immediately. Both return similar-looking error codes, which is exactly why reading the specific error detail matters before you assume a simple reconnect will fix it.
Final Thoughts
A connector expiring isn’t a workflow failure — it’s a workflow pause with an unclear ending. The actual damage happens when you treat “reconnected” as “resolved” and let the automation replay work it already finished, or skip work it never actually reached.
Across Zapier, Make, n8n, and Claude’s MCP connectors, the pattern held up every time I tested it: restore access first, then treat the interrupted run as its own small investigation. Check the destination, not just the tool’s status light. Resume by item, not by re-running the whole batch. And if you’re on Google APIs, just publish the app to Production before the 7-day clock ever becomes your problem.
None of this is glamorous work. It’s also the difference between a workflow that quietly recovers and one that quietly duplicates every lead in your CRM at 2 a.m.